Afficher plusieurs tables dans un tableau.

Petit nouveau ! | 4 Messages

15 mars 2009, 12:52

J'utilise ce code pour afficher une table dans un tableau :

Code : Tout sélectionner

$query = "SELECT nom, ref FROM test01 ORDER BY nom"; $result = mysql_query($query); while($row = mysql_fetch_row($result)){ $Nom = $row[0]; $Ref = $row[1]; echo "<tr>\n <td>$Nom</td>\n <td>$Ref</td>\n </tr>\n";
Mais j'ai besoin de récupérer d'autres données qui sont dans d'autres tables, en sachant que j'ai bien une donnée commune (ref) entre ma table principale et les secondaires.

Mammouth du PHP | 686 Messages

15 mars 2009, 13:27

Fais une selection multi table du genre (le * est a proscrire pour soulager le serveur)
SELECT `table1`.*, `table2`.*
FROM table1, table2
WHERE ((`table1`.* ref) AND (`table2`.* ref))

Petit nouveau ! | 4 Messages

15 mars 2009, 21:48

J'ai ce message d'erreur :
Parse error: syntax error, unexpected '>' in /var/www/projet/affiche-tableau-2-tables.php on line 50

La ligne 50 est : echo "<tr>\n

Code : Tout sélectionner

$query = "SELECT `test01`.url, `test02`.toto FROM test01, test02 WHERE ((`test01`.url nom) AND (`test02`.toto nom)); $result = mysql_query($query); while($row = mysql_fetch_row($result)){ $Nom = $row[0]; $Url = $row[1]; echo "<tr>\n <td>$Nom</td>\n <td>$Url</td>\n </tr>\n"; }
J'ai 2 tables (test01 et test02) composé de 2 champs (test01 -> nom et url / test02 -> nom et toto) et 4 "entrées":
test01
nom -> jp / nelly / zzzz / yyyyy
url -> www.jp.fr / www.nelly.fr / www.zzzz.com / www.aaaa.org

test02
nom -> jp / nelly / zzzz / yyyyy
toto -> jp-toto / nelly-toto / zzzz-toto / yyyyy-toto
Modifié en dernier par JypX le 16 mars 2009, 12:09, modifié 1 fois.

ViPHP
ViPHP | 2291 Messages

15 mars 2009, 22:46

"SELECT t1.nom, t1.url, t2.nom as nomtable2, t2.url as urlt2
            FROM table1 t1, table2 t2
            WHERE t1.nom = 'toto'";

Petit nouveau ! | 4 Messages

16 mars 2009, 12:19

Ca n'a rien fait de bon :(

J'ai tenté avec ca :
$query = "SELECT test01.url, test02.toto  FROM test01, test02 WHERE test01.nom=test02.nom;
            
$result = mysql_query($query);

while($row = mysql_fetch_row($result)){
$url = $row[0];

$toto = $row[1];

echo "<tr>\n
<td>$url</td>\n
<td>$totol</td>\n
</tr>\n";

}
avec toujours la même erreur....

Avatar du membre
ViPHP
ViPHP | 3008 Messages

16 mars 2009, 12:31

La couleur devrait t'indiquer l'erreur. Tu ouvre un guillemet sans la refermer dès la première ligne de code.

Petit nouveau ! | 4 Messages

16 mars 2009, 13:07

La couleur devrait t'indiquer l'erreur. Tu ouvre un guillemet sans la refermer dès la première ligne de code.
merci et ca marche!!

Edit :

J'ai un nouveau problème comme faire quand une 3ème tables intervient?
J'ai fait ca à tout hasard mais ca ne marche pas :(
$query = "SELECT jos_ol_base.product_sku, jos_ol_base.ref_fou01, jos_ol_base.ref_fou02, jos_ol_base.prix_a, jos_vm_product.product_name, jos_vm_product.product_publish, jos_vm_product.product_weight, jos_ol_founisseur01.prix_r FROM jos_ol_base, jos_vm_product, jos_ol_founisseur01 WHERE jos_ol_base.product_sku=jos_vm_product.product_sku, jos_ol_base.ref_fou01=jos_ol_founisseur01.ref_fou"; 
J'ai aussi tenté AND à la place de la virgule entre jos_ol_base.product_sku=jos_vm_product.product_sk et jos_ol_base.ref_fou01=jos_ol_founisseur01.ref_fou

Edit 2 :
Ca marche avec le AND mais pas comme je veux
Car avec le AND, j'ai que les résultats qui remplissent les 2 conditions normal puisque c'est fait pour ca alors que moi je qu'il me complète mon tableau avec les valeurs de la 3ème table sinon il affiche une casse vide.