Systeme de recherche dans un fichier avec PHP
Résolu
kaham
Messages postés
194
Statut
Membre
-
kaham Messages postés 194 Statut Membre -
kaham Messages postés 194 Statut Membre -
Bonjour,
J'ai un fichier stock.khm (format de test pour m'amuser) disposé comme suite :
j'utilise ceci comme script PHP pour effectuer une recherche dans le fichier:
Ce qui pour le moment fonctionne très bien !
Voici mon ma question :
quand je tape comme mot clé "test" cela m'affiche sous forme de tableau : test / 5J0L1J3O
mais si je tappe "tes" (une partie du mot) il ne trouve aucun résultat.
Comment puis-je donc faire pour qu'il trouve un résulta en utilisant une partie du mot ?
J'ai un fichier stock.khm (format de test pour m'amuser) disposé comme suite :
Nom du site;Adresse du site;1K1S2Y3O Nom du site;Adresse du site;8G1E5H0I Nom du site;Adresse du site;5J0L1J3O test;Adresse du site;5J0L1J3O etc.
j'utilise ceci comme script PHP pour effectuer une recherche dans le fichier:
$mot_cle = $_POST['mot_cle'];
$id_file = fopen('stock.khm', 'r');
while($tab=fgetcsv($id_file,500,";")){
if($tab[0] == $mot_cle){
echo "<center><br><table>";
echo "<tr><td><a href=\"$tab[1]\">$tab[0]</a></td><td><font color=\"#990000\">$tab[2]</font></td></tr>";
echo"</table></center>";
}
}
fclose($id_file);
Ce qui pour le moment fonctionne très bien !
Voici mon ma question :
quand je tape comme mot clé "test" cela m'affiche sous forme de tableau : test / 5J0L1J3O
mais si je tappe "tes" (une partie du mot) il ne trouve aucun résultat.
Comment puis-je donc faire pour qu'il trouve un résulta en utilisant une partie du mot ?
A voir également:
- Systeme de recherche dans un fichier avec PHP
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Restauration systeme windows 10 - Guide
- Fichier epub - Guide
- Fichier rar - Guide
5 réponses
Bonjour
Tu fais un test d'égalité if($tab[0] == $mot_cle). Donc pour l'instant, normal qu'il ne trouve le mot que s'il y a une correspondance exacte.
Tu peux utilser la fonction strpos pour détecter la présence de $tab[0] à l'intérieur de $motcle. Voir https://www.php.net/manual/fr/function.strpos.php Tu y trouveras aussi de nombreuses fonctions utiles pour le cas ou on a tapé en majuscules au lieu de minuscules, etc...
Tu fais un test d'égalité if($tab[0] == $mot_cle). Donc pour l'instant, normal qu'il ne trouve le mot que s'il y a une correspondance exacte.
Tu peux utilser la fonction strpos pour détecter la présence de $tab[0] à l'intérieur de $motcle. Voir https://www.php.net/manual/fr/function.strpos.php Tu y trouveras aussi de nombreuses fonctions utiles pour le cas ou on a tapé en majuscules au lieu de minuscules, etc...
La page ou m'envoie ton lien a pour le moment a un problème (error:404 not found).
Je regarderais quand elle sera de nouveau accessible. Merci de l'aide :)
Je regarderais quand elle sera de nouveau accessible. Merci de l'aide :)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
Après avoir réglés quelques problèmes avec mon pc j'ai enfin pus tester cette fonction. Mais je n'arrive pas a avoir le résultat que je soihaite. Voici mon code PHP :
Quand je cherche un par exemple test dans mon fichier je tappe simplement "t" il ne le trouve pas.
Si je tape "e" il le trouve => "s" il le trouve => "tes" il ne le trouve pas et "test" non plus :s
Ou est mon erreur ?
Après avoir réglés quelques problèmes avec mon pc j'ai enfin pus tester cette fonction. Mais je n'arrive pas a avoir le résultat que je soihaite. Voici mon code PHP :
//Recherche de site dans le fichier
if(isset($_POST['recherche'])){
$mot_cle = $_POST['mot_cle'];
$id_file = fopen('stock.khm', 'r');
while($tab=fgetcsv($id_file,500,";")){
if(strpos($tab[0] , $mot_cle){
echo "<center><br><table>";
echo "<tr><td><a href=\"$tab[1]\">$tab[0]</a></td><td><font color=\"#990000\">$tab[2]</font></td></tr>";
echo"</table></center>";
}
}
fclose($id_file);
}
Quand je cherche un par exemple test dans mon fichier je tappe simplement "t" il ne le trouve pas.
Si je tape "e" il le trouve => "s" il le trouve => "tes" il ne le trouve pas et "test" non plus :s
Ou est mon erreur ?