gontran Posté 14 Juin 2006 Posté 14 Juin 2006 Bonjour le hub, me revoila avec un nouveau souci. if ($anneeurl!="" && $couleururl!="" && $appelationurl!="") { $req=mysql_query("SELECT id from vin WHERE millesime='$anneeurl' and couleur='$couleururl' and appelation='$appelationurl'"); $reschato=mysql_fetch_array($req); Le code ci dessus verifie que les champs du formulaire sont bien remplis, ensuite j'interoge ma table pour savoir si il esiste des enregistrements correspodant à la requete. Mon probleme est que lorsque j'ai plusieurs enregistrement correspondant à ma requete je n'arrive à selectionner que le premier. J'ai essayer de faire ca : if ($anneeurl!="" && $couleururl!="" && $appelationurl!="") { $req=mysql_query("SELECT id from vin WHERE millesime='$anneeurl' and couleur='$couleururl' and appelation='$appelationurl'"); while ($reschato=mysql_fetch_array($req)); Ca ne marche pas, la requete ne trouve aucun enregistrement alors qu'il y en a 2 dans la table. Est-ce que quelqu'un aurai une idée ? Merci Gontran
gontran Posté 14 Juin 2006 Auteur Posté 14 Juin 2006 (modifié) ok c'est bon j'ai trouvé y'avais un ";" en trop derriere ma boucle while en fait non ca marchait pas... Modifié 14 Juin 2006 par gontran
Portekoi Posté 14 Juin 2006 Posté 14 Juin 2006 Bonjour, Pourquoi ne pas essayer de faire ca : <?php//On vide $sqlwhere au cas où il serait utilisé pls haut...$sqlwhere = "";//Si $anneeurl est différent de rien, je le rajoute dans ma clause whereif ($anneeurl != "")//En francais, ca donne : $sqlwhere est égale à 'and millesime= 'valeur de $anneeurl '//Donc cela me construit ma clausse where de ma requete...$sqlwhere = $sqlwhere . " and millesime='$anneeurl'";if ($couleururl != "")$sqlwhere = $sqlwhere . " and couleur='$couleururl'";if ($appelationurl != "")$sqlwhere = $sqlwhere . " and appelation='$appelationurl'";//A la fin, on peut faire un : echo $sqlwhere afin de voir à quoi va ressembler notre requete...echo $sqlwhere;$req=mysql_query("SELECT id from vin WHERE 1=1 " . $sqlwhere . ");$reschato=mysql_fetch_array($req);?> A tester
gontran Posté 14 Juin 2006 Auteur Posté 14 Juin 2006 (modifié) alors j'en suis la : elseif ($anneeurl!="" && $couleururl!=""){ $req=mysql_query("SELECT id from vin WHERE millesime='$anneeurl' and couleur='$couleururl'");} elseif ($anneeurl!="" && $appelationurl!=""){ $req=mysql_query("SELECT id from vin WHERE millesime='$anneeurl' and appelation='$appelationurl'");} elseif ($appelationurl!="" && $couleururl!=""){ $req=mysql_query("SELECT id from vin WHERE couleur='$couleururl' and appelation='$appelationurl'");} elseif ($anneeurl!=""){ $req=mysql_query("SELECT id from vin WHERE millesime='$anneeurl'"); } elseif ($couleururl!=""){ $req=mysql_query("SELECT id from vin WHERE couleur='$couleururl'"); } elseif ($appelationurl!=""){ $req=mysql_query("SELECT id from vin WHERE appelation='$appelationurl'"); } while ($reschato=mysql_fetch_array($req)) est-ce que ca vous semble propre et correct ?? De plus j'ai tester et ca a l'air de fonctionner... Me retse juste un petit truc a reussir, qui est d'afficher le message "pas de resultat trouvé pour votre recherche" si la requete ne trouve rien Modifié 14 Juin 2006 par gontran
Portekoi Posté 14 Juin 2006 Posté 14 Juin 2006 BOnsoir, Je vois que cela ne sert pas à grand chose de vous aider dans la mesure où vous ne tenez pas compte des solutions proposées. Ma solution remplace la votre le tout en 10 lignes. Bonne soirée Portekoi
gontran Posté 14 Juin 2006 Auteur Posté 14 Juin 2006 (modifié) j'ai essayer votre solution, mais j'ai un peu de mal a comprendre et ca ne fonctionner pas de plus j'ai mis celle la en fonction mais je n'ai pas dit que j'allais en rester la... et celle que j'ai mis en fonction fais 12 lignes... Modifié 14 Juin 2006 par gontran
Portekoi Posté 14 Juin 2006 Posté 14 Juin 2006 elseif ($anneeurl!="" && $couleururl!=""){ $req=mysql_query("SELECT id from vin WHERE millesime='$anneeurl' and couleur='$couleururl'");} elseif ($anneeurl!="" && $appelationurl!=""){ $req=mysql_query("SELECT id from vin WHERE millesime='$anneeurl' and appelation='$appelationurl'");} elseif ($appelationurl!="" && $couleururl!=""){ $req=mysql_query("SELECT id from vin WHERE couleur='$couleururl' and appelation='$appelationurl'");} elseif ($anneeurl!=""){ $req=mysql_query("SELECT id from vin WHERE millesime='$anneeurl'"); } elseif ($couleururl!=""){ $req=mysql_query("SELECT id from vin WHERE couleur='$couleururl'"); } elseif ($appelationurl!=""){ $req=mysql_query("SELECT id from vin WHERE appelation='$appelationurl'"); } while ($reschato=mysql_fetch_array($req)) Cette solution là? Au vu du else if au dessus, je vois que ce n'est qu'une partie. Faites comme bon vous semble.
gontran Posté 14 Juin 2006 Auteur Posté 14 Juin 2006 je veux ressayer votre solution. est-ce qu'il serai possible que vous la documentier un peu... merci
Portekoi Posté 14 Juin 2006 Posté 14 Juin 2006 J'ai modifié ma source plus haut. Je ne peux pas faire plus pour le moment.
gontran Posté 20 Juin 2006 Auteur Posté 20 Juin 2006 bon je me suis remis sur mon moteur de recherche... une petite question : $req=mysql_query("SELECT id from vin WHERE 1=1 " . $sqlwhere . "); a quoi correspond le "where1=1" ? merci
Bourinho Posté 20 Juin 2006 Posté 20 Juin 2006 salut, a mon avis c'est pour éviter que la requête sql plante si $sqlwhere est vide.... C'est un bon moyen d'éviter les embrouilles sans que cela coûte en ressource!!! A+
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant