output ophalen uit 2 tabellen met zelfde veldnamen
Code (php)
1
2
3
2
3
<?php
$sql="SELECT orders.*, klanten.*, adressen.*, adressen_1.* FROM (((orders LEFT JOIN klanten ON orders.klantID = klanten.ID) LEFT JOIN adressen ON orders.ladresID = adressen.adresID) LEFT JOIN adressen AS adressen_1 ON orders.eadresID = adressen_1.adresID)";
?>
$sql="SELECT orders.*, klanten.*, adressen.*, adressen_1.* FROM (((orders LEFT JOIN klanten ON orders.klantID = klanten.ID) LEFT JOIN adressen ON orders.ladresID = adressen.adresID) LEFT JOIN adressen AS adressen_1 ON orders.eadresID = adressen_1.adresID)";
?>
adressen en adressen_1 hebben dezelfde structuur. Ik probeer nu als volgt de gegevens op te halen:
echo '<td>'.$a_laad->adressen.naam1.'</td>';
echo '<td>'.$a_laad->adressen_1.naam1.'</td>';
Dit werkt niet. Wie kan mij helpen?
plaats je volledige query en execute eens... aan de hand hiervan is het lastig te bepalen. Nog een tip: gebruik nooit een SELECT * , maar schrijf alle te selecteren velden gewoon uit...
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Speedway Dispo Programm</title>
<link rel="stylesheet" type="text/css" href="style.css" />
<link rel="shortcut icon" href="images/Trs.ico" type="image/x-icon" />
</head>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?php
echo '<div id="Header">';
echo '<body>';
include ("IncludeHeader.inc");
echo '</div>';
echo '<div id="Knoppen">';
include ("Knoppenbalk.inc");
echo '</div>';
include ('opendatabase.inc');
echo '<div id="homebody">';
echo '<font size="3px" style="COLOR: #ffffff ; BACKGROUND-COLOR: #ff9b50" ><b> Aufträgen </b></font>';
echo '<center>';
echo '<br><br>';
$ordsel=mysql_query("SELECT orders.*, klanten.*, adressen.*, adressen_1.* FROM (((orders LEFT JOIN klanten ON orders.klantID = klanten.ID) LEFT JOIN adressen ON orders.ladresID = adressen.adresID) LEFT JOIN adressen AS adressen_1 ON orders.eadresID = adressen_1.adresID)");
echo '<table border="2">';
while($a_laad = mysql_fetch_object($ordsel)){
echo '<tr>';
echo '<td>'.$a_laad -> unieknummer.'</td>';
echo '<td>'.$a_laad -> klantcode.'</td>';
echo '<td>'.$a_laad -> firmanaam.'</td>';
echo '<td>'.$a_laad->adressen.naam1.'</td>';
echo '<td>'.$a_laad->adressen.naam1.'</td>';
echo '<td>'.$a_laad -> laded.'</td>';
echo '</tr>';
}
echo '</table>';
echo '</div>';
echo '<div id="homebottom">';
include ("IncludeBottom.inc");
echo '</div>';
?>
echo '<div id="Header">';
echo '<body>';
include ("IncludeHeader.inc");
echo '</div>';
echo '<div id="Knoppen">';
include ("Knoppenbalk.inc");
echo '</div>';
include ('opendatabase.inc');
echo '<div id="homebody">';
echo '<font size="3px" style="COLOR: #ffffff ; BACKGROUND-COLOR: #ff9b50" ><b> Aufträgen </b></font>';
echo '<center>';
echo '<br><br>';
$ordsel=mysql_query("SELECT orders.*, klanten.*, adressen.*, adressen_1.* FROM (((orders LEFT JOIN klanten ON orders.klantID = klanten.ID) LEFT JOIN adressen ON orders.ladresID = adressen.adresID) LEFT JOIN adressen AS adressen_1 ON orders.eadresID = adressen_1.adresID)");
echo '<table border="2">';
while($a_laad = mysql_fetch_object($ordsel)){
echo '<tr>';
echo '<td>'.$a_laad -> unieknummer.'</td>';
echo '<td>'.$a_laad -> klantcode.'</td>';
echo '<td>'.$a_laad -> firmanaam.'</td>';
echo '<td>'.$a_laad->adressen.naam1.'</td>';
echo '<td>'.$a_laad->adressen.naam1.'</td>';
echo '<td>'.$a_laad -> laded.'</td>';
echo '</tr>';
}
echo '</table>';
echo '</div>';
echo '<div id="homebottom">';
include ("IncludeBottom.inc");
echo '</div>';
?>
</body>
</html>
Heb zo'n vermoeden dat het daar fout gaat.
Been geen pro maar dat viel mij op.
Oplossing:
1) zoals al gezegd, geen * gebruiken, maar alle op te halen kolommen uitschrijven
2) als er kolommen bij zijn met dubbele namen aliassen gebruiken (bijvoorbeeld: SELECT adressen.naam1 AS ad_naam1, adressen_1.naam1 AS ad1_naam1)
Dit lost mijn probleem op.
Dank je wel
Toevoeging op 28/11/2012 17:16:40:
Wat moet ik doen als ik in beide tabellen twee gelijke namen heb?
SELECT adressen.naam1 AS ad_naam1, adressen.plaats AS ad_plaats werkt niet
SELECT adressen.naam1,plaats AS ad_naam1,ad_plaats werkt ook niet
Toevoeging op 28/11/2012 19:39:55:
Ik ben er helemaal uit. Bedankt aan de meedenkers.