Problème boucle PHP

Résolu/Fermé
Luciferette Messages postés 74 Date d'inscription jeudi 10 avril 2008 Statut Membre Dernière intervention 21 avril 2011 - 15 avril 2010 à 16:10
Luciferette Messages postés 74 Date d'inscription jeudi 10 avril 2008 Statut Membre Dernière intervention 21 avril 2011 - 15 avril 2010 à 17:44
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:

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 !

1 réponse

kij_82 Messages postés 4089 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
15 avril 2010 à 17:06
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:
// 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";
}

0
Luciferette Messages postés 74 Date d'inscription jeudi 10 avril 2008 Statut Membre Dernière intervention 21 avril 2011
15 avril 2010 à 17:44
Han, mais oui ! C'est juste la honte de pas avoir pensé à ça !

C'est là que j'vois que de voir tout le monde en vacances et pas moi me fais vraiment souffrir :)

Merci !!!
0