Problème boucle PHP
Résolu
Luciferette
Messages postés
80
Statut
Membre
-
Luciferette Messages postés 80 Statut Membre -
Luciferette Messages postés 80 Statut Membre -
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
- Télé samsung s'éteint et se rallume en boucle - Forum Téléviseurs
- Mon pc s'allume et s'éteint en boucle ✓ - Forum Matériel & Système
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 !!!