Problème boucle PHP
Résolu
Luciferette
Messages postés
74
Date d'inscription
Statut
Membre
Dernière intervention
-
Luciferette Messages postés 74 Date d'inscription Statut Membre Dernière intervention -
Luciferette Messages postés 74 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai un formulaire de recherche à faire, mais j'ai un problème:
J'ai un champ "mots-clé", dans lequel on peut taper plusieurs mots-clés (logique).
Dans ma BD, j'ai un table intervention, avec un champs "Details", ce qui correspond aux mots-clés. Je compare donc les mots-clés renseignés avec les mots du champ "Details".
Voici mon code:
Le problème, c'est qu'à chaque fois qu'un mot est trouvé, il est enregister dans la variable $motTrouvé, et qu'il ne renvoie donc que le dernier mot trouvé. Or, je voudrais renvoyer tous les mots trouvés en commun, c'est à dire ne pas remplacer un mot trouvé par le dernier trouvé.
Je ne sais pas si mon problème est clair, mais si quelqu'un peut m'aider...
Merci d'avance !
J'ai un formulaire de recherche à faire, mais j'ai un problème:
J'ai un champ "mots-clé", dans lequel on peut taper plusieurs mots-clés (logique).
Dans ma BD, j'ai un table intervention, avec un champs "Details", ce qui correspond aux mots-clés. Je compare donc les mots-clés renseignés avec les mots du champ "Details".
Voici mon code:
if(!empty($motscle)){ //requête qui récupère tous les détails de la table $reqDet = "SELECT Details FROM intervention"; $resDet = mysql_query($reqDet); $tabMC = preg_split("/[\s,]+/",$motscle); // scinde la phrase grâce aux virgules et espacements print_r($tabMC); $taille2 = count($tabMC); echo "<b>$taille2</b>"; $correspond ="faux"; while($row = mysql_fetch_row($resDet)) { $det = $row[0]; $tabDet = preg_split("/[\s,]+/",$det); $taille = count($tabDet); print_r($tabDet); echo "<b>$taille</b>"; for($i=0;$i <$taille; $i++) // nombre de mots dans le champ "Details" { for($j=0; $j<$taille2;$j++){ // nombre de mots clé renseignés //echo "<h1>$tabDet[$i] == $tabMC[$j]</h1>"; if($tabDet[$i] == $tabMC[$j]){ $motTrouve = $tabDet[$i]; //PROBLEME $correspond = "vrai"; } } } } echo "<h3>$correspond</h3><br/>"; echo "<h2> le mot trouvé est: $motTrouve[$i] </h2><br/>"; }
Le problème, c'est qu'à chaque fois qu'un mot est trouvé, il est enregister dans la variable $motTrouvé, et qu'il ne renvoie donc que le dernier mot trouvé. Or, je voudrais renvoyer tous les mots trouvés en commun, c'est à dire ne pas remplacer un mot trouvé par le dernier trouvé.
Je ne sais pas si mon problème est clair, mais si quelqu'un peut m'aider...
Merci d'avance !
A voir également:
- Problème boucle PHP
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Boucle excel sans macro - Forum Excel
- Mon pc s'allume et s'éteint en boucle ✓ - Forum Matériel & Système
- Mise à disposition de boucle locale dédiée ✓ - Forum Freebox
1 réponse
Bonjour, c'est relativement simple, il suffit d'enregistrer ton mot clef non pas dans une simple variable mais dans un tableau / une liste.
Pour ce faire:
Pour ce faire:
// déclaration $motTrouve = array(); // Là où tu souhaites ajout ton mot lorsqu'il est trouvé: $motTrouve[] = "valeur"; // --- Avant d'ajouter ta valeur dans la liste, si tu veux // --- vérifier que ton mot n'est pas déjà dedans if ( ! in_array("valeur",$motTrouve ){ $motTrouve[] = "valeur"; }
C'est là que j'vois que de voir tout le monde en vacances et pas moi me fais vraiment souffrir :)
Merci !!!