logo

NPDS : Gestion de contenu et de communauté


Content & Community Management System (CCMS) robuste, sécurisé, complet, performant, parlant vraiment français, libre (Open-Source) et gratuit.
19 visiteur(s) et 0 membre(s) en ligne.
Activité du Site

Pages vues depuis 25/05/2001 : 109 393 177

  • Nb. de membres 8 696
  • Nb. d'articles 1 695
  • Nb. de forums 26
  • Nb. de sujets 8
  • Nb. de critiques 92

Top 10  Statistiques

Index du forum »»  Le coin des codeurs »» Moteur de recherche

Moteur de recherche#6879

3Contributeur(s)
camysnipeTribal-Dolphin
3 Modérateur(s)
developpeurjpbJireck
camy camyicon_post
J'ai créé un moteur de recherche sur ma base de données.
Le problème arrive qd on rentre plusieurs mots clefs au lieu d'un seul.
Rien ne s'affiche.
Le ou les mots entrés par l'utisateur sont récupérés dans la variable $recherche.
Ensuite voici mon code :
<?php
if ($recherche==" ") {
echo"vous n'avez pas entré de mot clé." ; }
else {
$recherche = $_POST['recherche'];
// on passe les mots recherchés en minuscules
$recherche = strtolower($recherche);
$operateur="or" ;
// on remplace les ' + , : par des espaces
$mots = str_replace('+', ' ', trim($recherche));
$mots = str_replace(''', ' ', $mots);
$mots = str_replace(',', ' ', $mots);
$mots = str_replace(':', ' ', $mots);
// on place les differents mots dans un tableau
$tab = explode(' ' , $mots);
//on compte le nbr d'élément du tableau.
$nb = count($tab);
//on prépare la requête SQL.
$sql = "select * from coordonnées where mots_clefs like '%$tab[0]%'
order by nom_assos";
// on boucle pour integrer tous les mots dans la requête
for($i = 1; $i < $nb; $i++) {
$sql .= "".$operateur." mot_cles like '%$tab[$i]%' ";
}
//on se connecte au serveur
$db=mysql_connect("localhost", "root", "");
//selection de la base assos1
mysql_select_db('associations',$db) ;
// on execute la requête SQL.
$result = mysql_db_query('associations',$sql);
if ($result) {
if (mysql_num_rows($result) == 0) {
// Si il n'y a pas de résultats
echo "<center><b>Pas de Résultat</b></center><br>";
} else {
echo "<center><b>Résultat(s)</b></center><br>";
while($row = mysql_fetch_array($result)) {
echo $row['nom_assos'];
echo"<BR>" ;
}
mysql_free_result($result);
}
}
}
?>
camy camyicon_post
Je sais que le problème vient de ma requete sql.
snipe snipeicon_post
logic

//on prépare la requête SQL.
$sql = "select * from coordonnées where mots_clefs like '%$tab[0]%' order by nom_assos";
// on boucle pour integrer tous les mots dans la requête
for($i = 1; $i < $nb; $i++) {
$sql .= "".$operateur." mot_cles like '%$tab[$i]%' ";
}
//on se connecte au serveur

la tu te retrouve avec une incoerance dans la requette
$sql = "select * from coordonnées where mots_clefs like '%$tab[0]%' ";
// on boucle pour integrer tous les mots dans la requête
for($i = 1; $i < $nb; $i++) {
$sql .= "".$operateur." mot_cles like '%$tab[$i]%' ";
}
$sql .= " order by nom_assos";

devrez mieux marcher :)
Tribal-Dolphin Tribal-Dolphinicon_post
En effet, tu rajoute des paramètre de sélection après le tri.
C'est pas bien du tout ça.
Essaye plutot :

$sql = "select * from coordonnées where mots_clefs like '%$tab[0]%' ";
// on boucle pour integrer tous les mots dans la requête
for($i = 1; $i < $nb; $i++) {
$sql .= $operateur." mot_cles like '%$tab[$i]%' ";
}
$sql .= "order by nom_assos";
//Pour vérification, affichage de la requête
echo $sql."
";

Essaye ça et tient nous au courant
Tribal-Dolphin Tribal-Dolphinicon_post
SNIPE ..................... Mais comment fais tu pour être aussi rapide :-?
camy camyicon_post
Désolé ,je viens de remarquer que j'avais fait une erreur d'orthographe sur le champ mots_clefs !!!
Tout marche :-) :-)
Désolé!!
snipe snipeicon_post
bas tribal c facile quand tu est debout de puis l aveill sans avoir encors dormit :)