furious Gontran Posté 11 Mars 2005 Posté 11 Mars 2005 Salut. Voici mon code: $requete="SELECT Id_Livre FROM autlivre WHERE ".$Id_Edit." LIKE Id_Edit";$result=ExecRequete($requete, $connexion); while ($tab=mysql_fetch_row($result)) { $And.=" AND (Id LIKE $tab[0]) "; } $req="SELECT * FROM livre WHERE 1$And ORDER BY Nom LIMIT $position,$fin"; echo "<br>".$req; echo "<p><H3 ALIGN='Center'>Table: ". $Table."<BR><BR>"; $resultat=ExecRequete($req, $connexion); while ($po=mysql_fetch_row($resultat)) { echo"<br>po=".$po[1]; echo"<br>Titre= ".$po[1]; } Mes requetes sont toutes correctement faites, les And, se placent bien etc. Cependant, le deuxieme while ne s'execute que lorsque la requete ne possede qu'un seul AND... Mes requetes sont de la forme: SELECT * FROM livre WHERE 1 AND (Id LIKE 212) AND (Id LIKE 213) ORDER BY Nom LIMIT 0,100 Je ne comprend pas d'ou viens le probleme avec mes AND...
Portekoi Posté 11 Mars 2005 Posté 11 Mars 2005 (modifié) SELECT * FROM livre WHERE 1 AND (Id LIKE 212) AND (Id LIKE 213) ORDER BY Nom LIMIT 0,100 Je connais cette facon de faire... Moi je fais : SELECT champs1, champs2 FROM livre WHERE Id ='212' OR Id ='213' ORDER BY Nom LIMIT 0,100 Essaye avec le OR, ca marchera mieux je pense Parce que tu peux pas avoir deux fois une valeur Et évite le fameux "select *", ca bouffe du processeur souvent pour rien Modifié 11 Mars 2005 par portekoi
furious Gontran Posté 11 Mars 2005 Auteur Posté 11 Mars 2005 merci bien !!! špar contre j'ais besoin du * pour ma requete d'affichage...
Anonymus Posté 11 Mars 2005 Posté 11 Mars 2005 SELECT * FROM livre WHERE 1 AND (Id LIKE 212) AND (Id LIKE 213) ORDER BY Nom LIMIT 0,100 Tu voudrais que 'Id' soit égal à 212 ET à 213 en meme temps. Tu n'auras jamais les 2 à la fois. Soit c'est egal à 212, soit à 213. D'où l'erreur, et la correction apportée par Portekoi.
Portekoi Posté 11 Mars 2005 Posté 11 Mars 2005 Utilises tu tous les champs? Même si tu en prends 9 sur 10, n'utilise pas de "*"
furious Gontran Posté 11 Mars 2005 Auteur Posté 11 Mars 2005 (modifié) Par contre, probleme: Ma requete me sors toutes les valeurs sans prendre en compte les id indiqués... Requete: SELECT * FROM livre WHERE 1 OR (Id LIKE 826) OR (Id LIKE 827) OR (Id LIKE 828) OR (Id LIKE 829) OR (Id LIKE 908) ORDER BY Nom LIMIT 0,100 Modifié 11 Mars 2005 par furious Gontran
Portekoi Posté 11 Mars 2005 Posté 11 Mars 2005 (modifié) Bon je recommence.... 1 - Tu dois pas mettre de '1' dans ton 'where' car cela retourne tous les enregistrements et en plus ca te sers à rien. SELECT * FROM livre WHERE Id='826' OR Id='827' OR Id='828' OR Id='829' OR Id='908' ORDER BY Nom LIMIT 0,100 Et les '(' et ')' te servent à rien dans ton cas... 2 - Au lieu de faire des 'like', tu fais id='216' or id='217' Vala, réessaye et tu verras, ca marchera Modifié 11 Mars 2005 par portekoi
furious Gontran Posté 11 Mars 2005 Auteur Posté 11 Mars 2005 Ca marche parfaitement.... Par contre pourrais tu m'expliquer les cas ou il est interessant d'utiliser le 1 ?? S'il te plait ?
Portekoi Posté 11 Mars 2005 Posté 11 Mars 2005 (modifié) Re, Alors pour ma part, j'utilise le 1 lorsque je construit ma clause where. C'est à dire... hum tiens, pour ton exemple, on a un formulaire avec 3 champs de type text : Auteur - Titre - Editeur La personne a saisie les 3 champs ou 2 champs sur les 3 ou 1 champs sur les 3 donc : if (!$_POST["Auteur"]){ $sqlwhere = $sqlwhere . " and auteur='".$_POST["Auteur"])."'"}if (!$_POST["Titre"]){ $sqlwhere = $sqlwhere . " and Titre='".$_POST["Titre"])."'"}if (!$_POST["Editeur"]){ $sqlwhere = $sqlwhere . " and Editeur='".$_POST["Editeur"])."'"} Et ainsi ma requete sera : "Select champ1, champ2, champ3 from livre where 1=1" . $sqlwhere Ce qui sera traduis par : Select champ1, champ2, champ3 from livre where 1=1 and auteur='Portekoi' si la personne n'a saisie que l'auteur Pour les autres utilisations, ca sort du cadre de ce forum Portekoi PS :Et en plus je te fais un mini moteur de recherche, elle est pas belle la vie sur le Hub? Modifié 11 Mars 2005 par portekoi
furious Gontran Posté 12 Mars 2005 Auteur Posté 12 Mars 2005 Aaaah le hub... La bouée de secours de la programmation....
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant