|
camy 40
| Posté : 28-07-2003 09:16
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>&quo t;;
while($row = mysql_fetch_array($result)) {
echo $row['nom_assos'];
echo"<BR>" ;
}
mysql_free_result($result);
}
}
}
?> |  Profil
|
|
camy 40
| Posté : 28-07-2003 09:21
Je sais que le problème vient de ma requete sql. |  Profil
|
|
snipe 2450
| Posté : 28-07-2003 09:30
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 :) |  Profil E-mail
|
|
Tribal-Dolphin 4374
| Posté : 28-07-2003 09:32
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 |  Profil
|
|
Tribal-Dolphin 4374
| Posté : 28-07-2003 09:34
SNIPE ..................... Mais comment fais tu pour être aussi rapide |  Profil
|
|
camy 40
| Posté : 28-07-2003 09:37
Désolé ,je viens de remarquer que j'avais fait une erreur d'orthographe sur le champ mots_clefs !!!
Tout marche
Désolé!! |  Profil
|
|
snipe 2450
| Posté : 28-07-2003 15:08
bas tribal c facile quand tu est debout de puis l aveill sans avoir encors dormit :) |  Profil E-mail
|
|