cobrachris
Messages postés85Date d'inscriptionjeudi 24 juin 2004StatutMembreDernière intervention19 mars 2007
-
11 avril 2005 à 15:49
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDerniè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 ?
tucsoufle
Messages postés1250Date d'inscriptionmardi 15 juillet 2003StatutMembreDernière intervention30 septembre 20071 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
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 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.
cobrachris
Messages postés85Date d'inscriptionjeudi 24 juin 2004StatutMembreDernière intervention19 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.
cobrachris
Messages postés85Date d'inscriptionjeudi 24 juin 2004StatutMembreDernière intervention19 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.
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 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.
cobrachris
Messages postés85Date d'inscriptionjeudi 24 juin 2004StatutMembreDernière intervention19 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 ?
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 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.