2 problèmes sur une double boucle...

Mammouth du PHP | 531 Messages

20 avr. 2007, 13:03

Bonjour,
Je suis en train de me tirer les cheveux pour faire une liste qui va simplement servir de menu. Je vais pas tarder a devenir chauve donc voilà :

Le but et d'extraire d'une table les lignes du champ "marque", tout en igorant si l'on rencontre un doublon, et ensuite d'extraire les produits associés.

Le premier problème est cette erreur : SELECT produit FROM produits_education WHERE marque=toto
Unknown column 'toto' in 'where clause'
Je ne comprends pas ce qui cloche a ce niveau.

Ensuite si je retire

Code : Tout sélectionner

WHERE marque='.$marque.'
pour contourner l'erreur ma premiere requete marche bien mais les doublons sont affichés.
Je ne comprends pas ce qui cloche ça me parrâit pourtant logique...

J'espere que vous pourrez m'aider, voici le code full :

Code : Tout sélectionner

$req = 'SELECT marque FROM produits_education'; $result = mysql_query($req) or die('ERR_SQL :<br />' . $req . '<br />' . mysql_error()); $test= ""; // Initialisation variable test while($row = mysql_fetch_array($result)) { $marque = $row['marque']; if($row['marque'] != $test) { // Verification doublon echo '<li>'.$row['marque'].'</li>'; echo '<ul>'; $req2 = 'SELECT produit FROM produits_education WHERE marque='.$marque.''; $result2 = mysql_query($req2) or die('ERR_SQL :<br />' . $req2 . '<br />' . mysql_error()); while($row = mysql_fetch_array($result2)) { echo '<li><a href="education.php?produit='.$row['produit'].'">'.$row['produit'].'</a></li>'; } echo '</ul>'; $test = $row['marque']; } }
Bonne journée ;)[/quote]

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

20 avr. 2007, 13:41

Quand tu as un problème avec une requête, la première des choses à faire, c'est d'afficher la requête qui a été générée (avec les valeurs à la place des variables)

Code : Tout sélectionner

SELECT produit FROM produits_education WHERE marque=toto
=> Sélectionne le champ "produit" de la table "produits_education" pour lequel la valeur du champ "marque" est égale la valeur du champ "toto".

Que faut-il mettre autour d'une chaine de caractères en SQL pour la délimiter ? ;)

Quant au fait d'éviter les doublons, il te faut utiliser le mot clé DISTINCT dans ta requête :

Code : Tout sélectionner

SELECT DISTINCT produit FROM ...
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Mammouth du PHP | 531 Messages

20 avr. 2007, 14:48

Merci pour l'aide =)

cette fois c'est ok :

Code : Tout sélectionner

<?php $req = 'SELECT DISTINCT (marque) FROM produits_education ORDER BY marque'; $result = mysql_query($req) or die('ERR_SQL :<br />' . $req . '<br />' . mysql_error()); while($row = mysql_fetch_array($result)) { $marque = $row['marque']; echo '<li>'.$row['marque'].'</li>'; echo '<ul>'; $req2 = 'SELECT produit FROM produits_education WHERE marque="'.$row['marque'].'"'; $result2 = mysql_query($req2) or die('ERR_SQL :<br />' . $req2 . '<br />' . mysql_error()); while($row = mysql_fetch_array($result2)) { echo '<li><a href="education.php?produit='.$row['produit'].'">'.$row['produit'].'</a></li>'; echo '</ul>'; } } ?>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

20 avr. 2007, 15:18

Et c'est une nouvelle victoire de canard ;)

Un p'tit Résolu ?
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Mammouth du PHP | 531 Messages

20 avr. 2007, 15:26

Et c'est une nouvelle victoire de canard ;)
J'y ais droit a chaque fois a cette petite phrase :wink: