ptiniko
Messages postés26Date d'inscriptionmercredi 23 avril 2008StatutMembreDernière intervention 8 juillet 2009
-
20 mars 2009 à 11:20
ptiniko
Messages postés26Date d'inscriptionmercredi 23 avril 2008StatutMembreDernière intervention 8 juillet 2009
-
20 mars 2009 à 20:19
Bonjour,
J'ai un problème concernant une recherche en PHP avec plusieurs mots clés.
function search_friends($keywords, $debut, $fin)
> $keywords est la chaine entière entrée dans un formulaire, $debut et $fin sont là pour un affichage page par page (je ne l'ai pas encore développé) { $result_ar array(); > $result_ar est un tableau pour tous mes resultats. $keywords_input split(' ', $keywords);
= > ici je mets dans un tableau $keywords_input l'ensemble des mots clés via la fonction split (ex: si j'entre "paul pierre" j'obtiens un tableau avec les deux mots, logique).
$requete =mysql_query("Select nom, prenom, username, id from utilisateurs");
while ($result_db= mysql_fetch_array($requete)) {
je déclare des variables qui correspondent aux resultats de la requete =>
$nom = $result_db[0]; $prenom $result_db[1]; $username $result_db[2]; $id = $result_db[3];
pour chaque mots clés que j'ai rentré=> foreach($keywords_input as $keyword)
{ si la différence entre le champ username de la bdd et le mot clé est pas trop grand (<3) => if (levenshtein($keyword, $username)<3) {
alors j'ajoute l'entrée à mon tableau= > $result_ar array($id> $username); } la meme chose pour les champs $nom et $prenom: if (levenshtein($keyword, $nom)<3) { $result_ar = array($id => $nom); } if (levenshtein($keyword, $prenom)<3) { $result_ar= array($id => $prenom); } } }
j'éclate le tableau:
var_dump($result_ar); }
Par la suite, j'enlèverai les doublons sur l'id.
Mon pb est que pour un mot clé ca marche très bien, mais dès que, comme au dessus, il y a deux mots clés, la recherche ne me trouve les resultats que pour un seul.
stanilou
Messages postés193Date d'inscriptionmercredi 5 mai 2004StatutMembreDernière intervention18 novembre 2009 20 mars 2009 à 19:31
Salut,
"split" est plutôt réservé pour un autre usage, tu auras la même chose avec "explode" dans changer tes paramètres. Mais bon c'est juste une petite remarque sans rapport avec ta question.
Il ne cherche que pour un seul mot clés, mais toujours le même (toujours le premier par exemple) ou aléatoirement?
ptiniko
Messages postés26Date d'inscriptionmercredi 23 avril 2008StatutMembreDernière intervention 8 juillet 2009 20 mars 2009 à 19:46
Merci pour le explode ;)
J'ai fait un test. J'ai rajouté une entré dans la bdd. Et c'est l'entrée pour laquelle il me sort les résultats.
Donc je mets un var_dump dans la boucle et je vois qu'en fait mon array est écrasé à chaque fois.
Comment ca se fait ? Mauvaise utilisation du array ? =S
Et p'tite question au passage, dans un form avec plein de radio, comment j'peux faire pour qu'on puisse en sélectionner qu'un seul ?
stanilou
Messages postés193Date d'inscriptionmercredi 5 mai 2004StatutMembreDernière intervention18 novembre 2009 20 mars 2009 à 19:49
$result_ar= array($id => $prenom);
Cela créer un nouveau tableau nommé
$result_ar. Mais n'ajoute pas de valeur. En gros ton tableau est à chaque fois remis à 0. Il y a une autre fonction pour ajouter un élément à un tableau (je ne l'ai plus en tête là)