[php]Problème avec le LIKE
steph70
-
Rollin'babe !! -
Rollin'babe !! -
Bonjour,
J'ai mis en place un page php pour permettre une recherche plus facile dans mon travail.
J'ai donc fait en sorte qu'une recherche mysql se fasse à l'aide de php. Cela fonctionne jusqu'au moment ou j'essaie d'utiliser un LIKE, pour le champs symptome qui ne fonctionne que sur le dernier mot. Ce qui est assez embetant pour trouver un texte convenable
Pouvez vous jeter un oeil sur mon code est eventuellement pointé ma betise.
Et eventuellement me guider pour que ce champs puisse chercher plusieurs mots que je puisse affiner ma recherche.
Merci d'avance et désolé pour la longueur. Je ne suis qu'un petit amateur en php
Amicalement
steph70
J'ai mis en place un page php pour permettre une recherche plus facile dans mon travail.
J'ai donc fait en sorte qu'une recherche mysql se fasse à l'aide de php. Cela fonctionne jusqu'au moment ou j'essaie d'utiliser un LIKE, pour le champs symptome qui ne fonctionne que sur le dernier mot. Ce qui est assez embetant pour trouver un texte convenable
Pouvez vous jeter un oeil sur mon code est eventuellement pointé ma betise.
Et eventuellement me guider pour que ce champs puisse chercher plusieurs mots que je puisse affiner ma recherche.
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><body> <!-- Mise en place du formulaire de recherche --> <form method="post"> <p>Rechercher par :</p><br/> Machine : <input type="text" name="Machine" /> - Utilisateur : <input type="text" name="Utilisateur" /> - Lieu : <input type="text" name="Lieu" /> - Symptômes : <input type="text" name="Symptomes" /> <br/><input type="submit" value="Chercher" /> </form> <center><table width="981" border="1" cellspacing="0" cellpadding="0"> <tr> <td width="62"><div align="center">Date</div></td> <td width="62"><div align="center">Lieu</div></td> <td width="71"><div align="center">Machine</div></td> <td width="73"><div align="center">Utilisateur</div></td> <td width="80"><div align="center">Symptômes</div></td> <td width="86"><div align="center">Intervention</div></td> </tr> <?php //récupération des variables $Machine=$_POST['Machine']; $Utilisateur=$_POST['Utilisateur']; $Lieu=$_POST['Lieu']; $Symptomes=$_POST['Symptomes']; //Requêtes mysql_connect("localhost", "root", "") or die ("Pas de connexion à la base de données"); // Connexion à MySQL mysql_select_db("Entretien") or die ("Pas de connexion à la base"); // Sélection de la base coursphp // Si seul Machine est rempli if ((!empty($Machine)) and (empty($Utilisateur)) and (empty($Lieu)) and (empty($Symptomes))) { $reponse = mysql_query("SELECT * FROM intervention WHERE `Machine`='$Machine'"); // Requête SQL } //Si seul Utilisateur est rempli if ((empty($Machine)) and (!empty($Utilisateur)) and (empty($Lieu)) and (empty($Symptomes))) { $reponse = mysql_query("SELECT * FROM intervention WHERE `Utilisateur`='$Utilisateur'"); // Requête SQL } //Si seul Lieu est rempli if ((empty($Machine)) and (empty($Utilisateur)) and (!empty($Lieu)) and (empty($Symptomes))) { $reponse = mysql_query("SELECT * FROM intervention WHERE `Lieu`='$Lieu'"); // Requête SQL } //Si seul Symptome est rempli *************************************************************************************** if ((empty($Machine)) and (empty($Utilisateur)) and (empty($Lieu)) and (!empty($Symptomes))) { $reponse = mysql_query("SELECT * FROM intervention WHERE `Symptomes` LIKE '%$Symptomes%'"); // Requête SQL } //**************************************************************************************************************** //Si Machine et Utilisateur sont rempli if ((!empty($Machine)) and (!empty($Utilisateur)) and (empty($Lieu)) and (empty($Symptomes))) { $reponse = mysql_query("SELECT * FROM intervention WHERE `Machine`='$Machine' and `Utilisateur`='$Utilisateur'"); // Requête SQL } //Si Machine, Utilisateur et Lieu sont rempli if ((!empty($Machine)) and (!empty($Utilisateur)) and (!empty($Lieu)) and (empty($Symptomes))) { $reponse = mysql_query("SELECT * FROM intervention WHERE `Machine`='$Machine' and `Utilisateur`='$Utilisateur' and `Lieu`='$Lieu'"); // Requête SQL } // Si tous les champs sont remplis if ((!empty($Machine)) and (!empty($Utilisateur)) and (!empty($Lieu)) and (!empty($Symptomes))) { $reponse = mysql_query("SELECT * FROM intervention WHERE `Machine`='$Machine' and `Utilisateur`='$Utilisateur' and `Lieu`='$Lieu' and `Symptomes` LIKE '%$Symptomes'"); // Requête SQL } //******************************************************************************************* //Si Utilisateur et Lieu sont rempli if ((empty($Machine)) and (!empty($Utilisateur)) and (!empty($Lieu)) and (empty($Symptomes))) { $reponse = mysql_query("SELECT * FROM intervention WHERE `Utilisateur`='$Utilisateur' and `Lieu`='$Lieu'"); // Requête SQL } //Si utilisateur et Symptomes sont rempli if ((empty($Machine)) and (!empty($Utilisateur)) and (empty($Lieu)) and (!empty($Symptomes))) { $reponse = mysql_query("SELECT * FROM intervention WHERE `Utilisateur`='$Utilisateur'and `Symptomes` LIKE '%$Symptomes'"); // Requête SQL } //Si Lieu et Symptomes sont rempli if ((empty($Machine)) and (empty($Utilisateur)) and (!empty($Lieu)) and (!empty($Symptomes))) { $reponse = mysql_query("SELECT * FROM intervention WHERE `Lieu`='$lieu' and `Symptomes` LIKE '%$Symptomes'"); // Requête SQL } //Si Machine et lieu sont rempli if ((!empty($Machine)) and (empty($Utilisateur)) and (!empty($Lieu)) and (empty($Symptomes))) { $reponse = mysql_query("SELECT * FROM intervention WHERE `Machine`='$Machine' and `Lieu`='$Lieu'"); // Requête SQL } //Si Machine et Symptomes sont rempli if ((!empty($Machine)) and (empty($Utilisateur)) and (empty($Lieu)) and (!empty($Symptomes))) { $reponse = mysql_query("SELECT * FROM intervention WHERE `Machine`='$Machine' and `Symptomes` LIKE '%$Symptomes'"); // Requête SQL } // On fait une boucle pour lister tout ce que contient la table : while ($donnees = mysql_fetch_array($reponse) ) { ?> <tr> <td><center><strong><?php echo $donnees['Date']; ?></strong></center></td> <td><center><strong><?php echo $donnees['Lieu']; ?></strong></center></td> <td><center><strong><?php echo $donnees['Machine']; ?></strong></center></td> <td><center><strong><?php echo $donnees['Utilisateur']; ?></strong></center></td> <td><center><strong><?php echo $donnees['Symptomes']; ?></strong></center></td> <td><center><strong><?php echo $donnees['Intervention']; ?></strong></center></td> </tr> <?php } mysql_close(); // Déconnexion de MySQL ?> </table></center>
Merci d'avance et désolé pour la longueur. Je ne suis qu'un petit amateur en php
Amicalement
steph70
A voir également:
- [php]Problème avec le LIKE
- Easy php - Télécharger - Divers Web & Internet
- Voir like instagram - Guide
- Coco like - Accueil - Réseaux sociaux
- Expert php pinterest - Télécharger - Langages
- Wawacity like - Accueil - Outils
11 réponses
Désolé, je suis le roi des idiots
J'ai oublié un % sur la variable symptomes
ceci explique cela.
Merci encore.
Steph70
J'ai oublié un % sur la variable symptomes
ceci explique cela.
Merci encore.
Steph70
Bonsoir,
Pour tes LIKE, essaye plutôt cette syntaxe en règle générale si c'est ca ton problème :
... LIKE '%". $symptome ."%' (par exemple).
Mes sources : http://www.webmasterworld.com/forum88/826.htm.
A+.
Pour tes LIKE, essaye plutôt cette syntaxe en règle générale si c'est ca ton problème :
... LIKE '%". $symptome ."%' (par exemple).
Mes sources : http://www.webmasterworld.com/forum88/826.htm.
A+.
Ok et merci Stef60...
Mais par contre la, ca dépasse mes capacités actuelles en php.
Pourrais tu me donner un lien ou ceci pourrait m'etre expliqué ?
ou me l'expliquer ?
Merci d'avance
Stéph70
Mais par contre la, ca dépasse mes capacités actuelles en php.
Pourrais tu me donner un lien ou ceci pourrait m'etre expliqué ?
ou me l'expliquer ?
Merci d'avance
Stéph70
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bjour,
Essayez ceci :
$symptome = str_replace (" ", "%", $symptome);
Et injectez $symptome dans votre LIKE.
Sources : https://www.php.net/manual/fr/function.str-replace.php
Bonne journée.
Essayez ceci :
$symptome = str_replace (" ", "%", $symptome);
Et injectez $symptome dans votre LIKE.
Sources : https://www.php.net/manual/fr/function.str-replace.php
Bonne journée.
Re,
Si vous voulez effectuer une recherche sur plusieurs mots clefs non corrélés entre eux dans un même enregistrement, je crois qu'il faudra passer par plusieurs clauses LIKE séparés par un OR.
Solution : proposer un nombre limité de champs de recherche à l'utilisateur et ajouter autant de clause LIKE que de champs de recherche.
Salutations.
______________________________________________________________________________
"Ma mère s'appelait Gwendoline... elle est morte dévorée
par les loups dans les bois en allant chercher mon père qu'est allé boire
à la taverne des Duchenot et qu'il est mort crevé - gelé dans l'étang
à cause de son pied bot..."
Si vous voulez effectuer une recherche sur plusieurs mots clefs non corrélés entre eux dans un même enregistrement, je crois qu'il faudra passer par plusieurs clauses LIKE séparés par un OR.
Solution : proposer un nombre limité de champs de recherche à l'utilisateur et ajouter autant de clause LIKE que de champs de recherche.
Salutations.
______________________________________________________________________________
"Ma mère s'appelait Gwendoline... elle est morte dévorée
par les loups dans les bois en allant chercher mon père qu'est allé boire
à la taverne des Duchenot et qu'il est mort crevé - gelé dans l'étang
à cause de son pied bot..."
Merci a tous
J'ai trouvé la solution. Il me suffisait de rajouter :
avec ma déclaration de variable et tout fonctionne a merveille.
Rollin'babe, tu etais tout prêt.
Merci encore
amicalement
Lonewolf
J'ai trouvé la solution. Il me suffisait de rajouter :
$Symptomes = str_replace(" ", "%' AND Symptomes LIKE '%", $Symptomes);
avec ma déclaration de variable et tout fonctionne a merveille.
Rollin'babe, tu etais tout prêt.
Merci encore
amicalement
Lonewolf
Re,
Avec vos requêtes formatées ainsi (voir Post 1) :
$reponse = mysql_query("SELECT * FROM intervention WHERE `Machine`='$Machine' and `Symptomes` LIKE '%$Symptomes%'");
En injectant votre : $Symptomes = str_replace(" ", "%' AND Symptomes LIKE '%", $Symptomes);
Je doute vraiment que ca marche (:<)...
Mais :
$reponse = mysql_query("SELECT * FROM intervention WHERE `Machine`='$Machine' and `Symptomes` LIKE '%$Symptomes%'");
AVEC
$Symptome = str_replace (" ", "%", $Symptome);
Ça devrait aller mieux.
CQFD.
Bonne soirée.
Avec vos requêtes formatées ainsi (voir Post 1) :
$reponse = mysql_query("SELECT * FROM intervention WHERE `Machine`='$Machine' and `Symptomes` LIKE '%$Symptomes%'");
En injectant votre : $Symptomes = str_replace(" ", "%' AND Symptomes LIKE '%", $Symptomes);
Je doute vraiment que ca marche (:<)...
Mais :
$reponse = mysql_query("SELECT * FROM intervention WHERE `Machine`='$Machine' and `Symptomes` LIKE '%$Symptomes%'");
AVEC
$Symptome = str_replace (" ", "%", $Symptome);
Ça devrait aller mieux.
CQFD.
Bonne soirée.
Bonjour,
si j'ai bien compris tu voudrais effectuer faire une recherche sur plusieurs mots.
ex: dans ta base tu as un truc comme ca:
ordinateur portable rebbot.
Si dans ton formulaire symtomes tu tapes : ordinateur reboot
tu veux qu'il te ressorte ordinateur portable reboot ??
si j'ai bien compris tu voudrais effectuer faire une recherche sur plusieurs mots.
ex: dans ta base tu as un truc comme ca:
ordinateur portable rebbot.
Si dans ton formulaire symtomes tu tapes : ordinateur reboot
tu veux qu'il te ressorte ordinateur portable reboot ??
dans ce cas, tu devrais essayer de transformer $symptome = "ordinateur reboot ";
par $symptome = "ordinateur % reboot "
En fait ta requete doit ressembler a ca :
"SELECT * FROM intervention WHERE `Utilisateur`='$Utilisateur'and `Symptomes` LIKE '%ordinateur % reboot %' "
Donc il faut que tu fasses un traitement de ta variable $symptome
par $symptome = "ordinateur % reboot "
En fait ta requete doit ressembler a ca :
"SELECT * FROM intervention WHERE `Utilisateur`='$Utilisateur'and `Symptomes` LIKE '%ordinateur % reboot %' "
Donc il faut que tu fasses un traitement de ta variable $symptome