[RESOLU] requête SQL précédée par IF

Eléphanteau du PHP | 18 Messages

15 mars 2024, 10:43

Bonjour,
Je poursuis mon apprentissage PHP-MySQL. J’en étais à cette requête :

Code : Tout sélectionner

$sql="SELECT cod, nom, lieu, cree FROM depa WHERE cod = '$recherche' OR nom = '$recherche' OR lieu = '$recherche' OR cree = '$recherche' "; if...
Cela fonctionne, mais je voudrais une recherche plus précise. Dans un premier temps, l’utilisateur sélectionne un thème dans une liste déroulante, puis saisit une recherche : il faut que l’interrogation porte uniquement sur le thème choisi, ne s’applique donc qu’à la colonne correspondante de la table.
"précédée par if" : si a été choisi le thème 1, recherche en colonne 1 et aucune autre ; ou en colonne 2 si c’est le thème 2, etc. La fin sera identique à celle de la requête existante, soit un "désolé il n’y a pas de réponse", soit affichage de la ou des lignes de résultat.
Comment formuler cela : si c’est tel thème, interroge telle colonne ? Je ne trouve pas comment faire avec mes variables $index (dont je ne suis d’ailleurs pas sûr qu’elle soit importée de la liste déroulante) et $recherche, avec SELECT, WHERE et IF,... Pourrais-je avoir une nouvelle aide ?

ynx
Mammouth du PHP | 586 Messages

15 mars 2024, 13:54

Bonjour,

La liste déroulante des thèmes (une balise html select ?) devrait posséder un attribut name : <select name="theme">...

A la soumission du formulaire, tu devrais donc pouvoir récupérer le thème choisi via $_GET['theme'] ou $_POST['theme'] selon la méthode du formulaire, puis faire une condition sur cette valeur pour construire la bonne requête sql.

Eléphanteau du PHP | 18 Messages

20 mars 2024, 16:11

Bonjour,
La liste déroulante possède un attribut name : <select name="index">. J'ai donc ajouté un $index = $_POST['index'];
Mais ensuite... multiples messages d'erreur que je m'efforce de corriger. J'en suis à :

Code : Tout sélectionner

if($index= "no") /* no étant la value de l'option */ {"SELECT cod, nom, chef_lieu, cree FROM depa WHERE cod = '$variable';"}
...qui obtient pour réponse :

Code : Tout sélectionner

Parse error: syntax error, unexpected token "}"
Rappel de ce que je voudrais obtenir : si le choix est 1, cherche variable en colonne 1 ; si le choix est 2 [elseif], cherche variable en colonne 2 ;... si il n'y a pas de réponse [else] écris "Désolé". Puis publie la ou les lignes réponse si il y en a.
Il est bien difficile de vouloir donner le choix de l'index approprié !

Mammouth du PHP | 2703 Messages

20 mars 2024, 17:45

if(...){
$sql="SELECT cod, nom, lieu, cree FROM depa
WHERE cod = '$recherche'";
}
else if(...){
$sql="SELECT cod, nom, lieu, cree FROM depa
WHERE nom = '$recherche'";
}
...
il y a moyen de faire mieux mais pour un débutant, c'est déjà ça.

Mammouth du PHP | 1967 Messages

20 mars 2024, 18:09

au passage, il faut un double == dans les conditions
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Eléphanteau du PHP | 18 Messages

23 mars 2024, 16:52

Avec un double == dans les conditions.
Et

Code : Tout sélectionner

if(...){ $sql="SELECT cod, nom, lieu, cree FROM depa WHERE cod = '$recherche'"; }
...ça fonctionne !
Merci pour votre aide !