Moteur de recherche

Résolu
cobrachris Messages postés 85 Date d'inscription jeudi 24 juin 2004 Statut Membre Dernière intervention 19 mars 2007 - 11 avril 2005 à 15:49
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 - 12 avril 2005 à 13:56
bonjour à tous,

J'ai un petit problème sur un moteur de recherche que j'ai trouvé sur le site. J'ai modifier les champs dans lesquels faire la recherche. Par contre il ne m'affiche aucun résultat hormis "aucun résultats pour le mot...." or il y a des enregistrement dans la base pour le mot voulu.

Voici les codes:
Formulaire de recherche:
<form name= "recherche" method="post" action="index.php?page=searching">
Recherche par un mot clef



</form>

Page de recherche:
<?php
// On commence par repérer les champs
if(isset($_POST['recherche'])) $recherche=$_POST['recherche'];
else $recherche="";


//connexion a la base de donnée
$connect_db = connect();


// Vérification du champ de formulaire de recherche (s'il est vide)
if(empty($recherche))
{
echo"Vous devez saisir un mot clé pour effectuer une recherche";
echo "Retour";
exit;
}


// CE QUI SUIT C'EST POUR AFFICHER TOUT GENRE DE CARACTERES ET ENLEVER LES SALASHES DEVANT
// LES APOSRTROPHES


// $recherche c'est la variable du champ de saisie de formulaire de recherche
$recherche = stripslashes($recherche);


// Dans la ligne sivante les résultats s'afficherons par département
$sql = "SELECT Pays,Departement,Ville,Nom,Typecoin,Domaine FROM coin LIKE %$recherche%' order by Departement";
$req = @mysql_query($sql);
$res= @mysql_num_rows($req);


//Si le nombre de résultat est superieur à zero
if($res>0)
{
echo "Pour le mot ".$recherche." il y a $res résultat(s)

";
}
//Sinon
else
{
echo "Aucun résultat pour la recherche sur ".$recherche."

Essayez avec un autre mot";
echo "Retour";
exit;
}


//Voici la boucle
while( $sortie = mysql_fetch_array($req))
{

//C'EST LE PLUS IMPORTANT , NUMEROTATION DES RESULTATS (PETITE BOUCLE AU SEIN DE LA PREMIERE)
// static = se souvient de la valeur a l'appel precedent
static $i=1 ;
//S'il y a un seul résultat rien ne s'écrit comme numérotation ou vous pouvez mettre une //expression: echo "le seul résultat"; au lieu du vide
if ($i==1 && $res==1)
{
echo "";
}
//S'il y a plus qu'un résultat, pour le premier résultat il s'écrit comme numérotation
if ($i==1 && $res>1)
{
echo " $i résultat
";
}
//S'il y a plus qu'un résultat pour le reste des résultat il s'écrit comme numérotation
if ($i! =1)
{
echo "$i résultats
";
}
//Incrémentation des résultats par un à chaque résultat
$i++ ;


//AFFICHAGE DES RESULTATS TROUVES
print "
Pays: $sortie[Pays].
";
print "
Département: $sortie[Departement].
";
print "
Ville: $sortie[Ville].
";
print "
Nom du lieu: $sortie[Nom].

";
//On sépare les résultats par une barre hr avec couleur et taille configurables
print "<hr color=#FF6666 size=2>
";
}


//Après l'affichage des résultats trouvés(numérotés), on peut effectuer une autre recherche
echo "Effectuer une autre recherche";
exit;


//fermeture de la connexion
close();


//On libère la mémoire
mysql_free_result ;


?>

Comment faire pour permettre une recherche avec une liste déroulante, en concervant le "mot clef" et qu'on puisse remplir les 2 pour recherche plus précise ?

Merci par avance.

20 réponses

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
11 avril 2005 à 16:12
Hello,



deja, il manque un simple quote ici :



$sql = "SELECT Pays,Departement,Ville,Nom,Typecoin,Domaine FROM coin LIKE %$recherche%' order by Departement";



et ca ne peut donc pas fonctionner correctement.
3
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
12 avril 2005 à 11:15
Attends, tu veux faire quoi exectement ?

Pouvoir rentrer aussi un pays, etc... ?

Dans ce cas il te faut une clause OR aussi



WHERE Departement LIKE '%$recherche%' OR Pays LIKE
'%$recherche%' OR...

etc pour chacun des champs dans lequel doit s'effectuer la recherche.
3
tucsoufle Messages postés 1250 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 30 septembre 2007 1
11 avril 2005 à 17:11
salut,

euh malalam ! tu est sur que cen'est pas deux simple quotes qu'il manque.....
$sql = "SELECT Pays,Departement,Ville,Nom,Typecoin,Domaine FROM coin LIKE '%$recherche%' order by Departement";


mais la il ne cherche que dans le champ coin !



et puis c'est juste une remarque mais le code est affreux

quelques exemples de choses à éviter :



pour le html, utilise les standard , le css

pas de balise font, ni de align=center,

les
sont a remplacer par


le hr idem, il faut le fermer

tout les parametres doivent etre entre double quotes



pour le php

les echos entre simples quotes en separant bien les variables, comme ceci :

echo 'Pour le mot '.$recherche.' il
y a '.$res.' résultat(s)

';


pourquoi tu utilise une fois echo, l'autre fois print, utilise echo ça suffit !



bon je risque de paraitre raleur mais c'est pour le bien de l'humanité que je fais ça





et pour garder ta variable pour affiner la recherche, tu dois la mettre dans ton formulaire (le second) dans un champ caché

echo '';



Je te donne une idée, tu me donnes une idée, nous avons chacun deux idées.
Mon site Internet
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
11 avril 2005 à 17:20
Bah non, y en avait deja un, le second, lol.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
11 avril 2005 à 17:20
Ah oui je pige ta remarque : je n'ai pas corrige. j'ai juste copie/colle son code sans le corriger, en disant qu'il manquait un simple quote. Vais pas tout faire non plus, lol.
0
tucsoufle Messages postés 1250 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 30 septembre 2007 1
11 avril 2005 à 17:23
euh oui c'est ca

j'ai pas bien fait attention je croyais que t'avais corrigé

bref je me suis entourlapatourer les pinceaux

sorry...

Je te donne une idée, tu me donnes une idée, nous avons chacun deux idées.
Mon site Internet
0
cobrachris Messages postés 85 Date d'inscription jeudi 24 juin 2004 Statut Membre Dernière intervention 19 mars 2007
11 avril 2005 à 21:25
merci de votre aide.

@+.
0
cobrachris Messages postés 85 Date d'inscription jeudi 24 juin 2004 Statut Membre Dernière intervention 19 mars 2007
11 avril 2005 à 22:17
désolé de vous déranger de nouveau, mais le problème persiste toujours, il ne m'affiche unqiuement "aucun résultat......).

@+.
0
tucsoufle Messages postés 1250 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 30 septembre 2007 1
11 avril 2005 à 23:08
si tu enleve le @devant mysql_query, ca ne t'affiche rien de plus?

autrement verifie le nom de tes champs et de ta table?

ca me parait bien sinon...

Je te donne une idée, tu me donnes une idée, nous avons chacun deux idées.
Mon site Internet
0
cobrachris Messages postés 85 Date d'inscription jeudi 24 juin 2004 Statut Membre Dernière intervention 19 mars 2007
12 avril 2005 à 10:22
merci, j'ai essayé sans le @, en enlevant la connexion à la BDD et la fermeture de la connexion, j'ai vérifié le nom des champs, de la BDD, de la table, mais rien n'y fais, ça ne change rien, il m'affiche toujours aucun résultats. Bizarre.
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
12 avril 2005 à 10:44
Heu attends, j'ai lu ton code jusqu'au bout lol, c'te fois.



$sortie[Pays] par exemple est faut.

C'est : $sortie['Pays']



Ensuite, teste la submit de ton formulaire, en plus du $_POST['recherche'] :

if (isset ($_POST['submit']) && $_POST['submit'] == 'Rechercher') {

ton code

}
0
cobrachris Messages postés 85 Date d'inscription jeudi 24 juin 2004 Statut Membre Dernière intervention 19 mars 2007
12 avril 2005 à 10:57
oki je vais tester,

Bon, j'ai modifier un truc ou 2.
Au niveau:
$sql = "SELECT Pays,Departement,Ville,Nom FROM coin WHERE Departement LIKE '%$recherche%' order by Departement";
j'ai rajouté le WHERE, maintenant ça me sort des résultats, un prob il ne m'affiche pas le nombre de résultats mais juste $i plus le reste de la phrase.
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
12 avril 2005 à 11:03
Putain mais j'ai meme pas vu qu'il manquait le where...lol...quelle honte. Honte a Tuc aussi tien!



Pour $i, tu as du faire une petite erreur de frappe quelquepart. Sur le
code la, ca a l'air bin. Si tu as mis des simples quotes a ton echo
entre temps, $i n'est pas evalue. Par exemple.
0
cobrachris Messages postés 85 Date d'inscription jeudi 24 juin 2004 Statut Membre Dernière intervention 19 mars 2007
12 avril 2005 à 11:08
salut malalam
j'ai fais ce que tu m'as dit :

$sortie['Pays'] et ça ne fonctionne pas, il ne veut pas des ', dc j'ai remis sans et ça fonctionne.

Ensuite j'ai fais:
if(isset($_POST['recherche'])) $recherche=$_POST['recherche'];
else $recherche="";
if (isset ($_POST['submit']) && $_POST['submit'] == 'Rechercher') {
code
}

avec ou sans, ça ne change rien apparement.
Merci quand meme de m'aider car sans vous, je n'y arriverai peut etre pas.

Dc voila, il m'affiche les résultats grace au WHERE, mais il ne sélectionne uniquement le champ du WHERE, dc si je rentre un mot autre qu'un département, il m'affiche aucun résultat.
Comment puis je faire ds ce cas ?

Merci par avance.
0
tucsoufle Messages postés 1250 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 30 septembre 2007 1
12 avril 2005 à 12:33
lol oui j'ai un peu honte

mais j'ai pas vraiment lu non plus...



pour le $i c'est surement parcequ'il est mis directement dans la chaine

tu n'a qu'a suivre les conseils que je t'ai mis plus haut

Je te donne une idée, tu me donnes une idée, nous avons chacun deux idées.
Mon site Internet
0
tucsoufle Messages postés 1250 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 30 septembre 2007 1
12 avril 2005 à 12:34
au fait, est ce que vous recevez aussi les mails avec un gros decalage???

Je te donne une idée, tu me donnes une idée, nous avons chacun deux idées.
Mon site Internet
0
cobrachris Messages postés 85 Date d'inscription jeudi 24 juin 2004 Statut Membre Dernière intervention 19 mars 2007
12 avril 2005 à 12:59
C'est bon, ça marche nickel.

Oui en effet je reçois les mails des jours après.

@+ et MERCI.
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
12 avril 2005 à 13:15
Les mails en general, ou les mails d'ici ?
Mails pro : non
Mails persos : non (enfin pas plus que d'habitude lol)
Mails provenant d'ici : oui, quelques longues dizaines de minute, voire parfois heures.
0
tucsoufle Messages postés 1250 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 30 septembre 2007 1
12 avril 2005 à 13:40
ouais d'accord merci

moi c'est beaucoup plus rapide d'habitude

là je viens de recevoir celui ci :

Posté par : cobrachris
le 11/04/2005 22:17:22
alors oui c'est quelque heuresssss (avec plusieurs s a la fin)

Je te donne une idée, tu me donnes une idée, nous avons chacun deux idées.
Mon site Internet
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
12 avril 2005 à 13:56
Lol effectivement...
De toutes facons, je les filtre et les mets dans un repertorie que je finis par effacer sans le lire lol.
0
Rejoignez-nous