Moteur de recherche par champs spécifique

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Moteur de recherche par champs spécifique

par yopla26 » 27 sept. 2005, 17:35

Merci bien, ca fonctionne sadeq !!!

Viva le PHP !!!

par sadeq » 27 sept. 2005, 17:06

sinon comment puis je faire pour indiquer que le moteur de recherche n'a rien trouvé ?

car lorsque je tape un mot qui ne se trouve pas dans la db, il ne m'affiche rien comme résultats.

Je pense qu'il y a moyen de l'améliorer en personnalisant les options de recherches genre pour la recherche d'un numéro : on ne peut taper que des numéros ou pour email il faut qu'il est @ etc...
if (mysql_num_rows($requete) <=0) echo "Aucun résultat n'est trouvé!";

par yopla26 » 27 sept. 2005, 15:18

sinon comment puis je faire pour indiquer que le moteur de recherche n'a rien trouvé ?

car lorsque je tape un mot qui ne se trouve pas dans la db, il ne m'affiche rien comme résultats.

Je pense qu'il y a moyen de l'améliorer en personnalisant les options de recherches genre pour la recherche d'un numéro : on ne peut taper que des numéros ou pour email il faut qu'il est @ etc...

par yopla26 » 27 sept. 2005, 15:04

ca y é je viens de trouver le probleme c'est tout bête :

en faite cété un probleme de table

au lieu de mettre cela :
$sql="SELECT * FROM sondage WHERE '".$methode."' LIKE '".$motscle."' ORDER BY nom";
je devais mettre ceci :
$sql="SELECT * FROM sondage WHERE ".$methode." LIKE '".$motscle."' ORDER BY nom";
il fallait simplement enleve les '' entre methode[/php]

par yopla26 » 27 sept. 2005, 15:02

j'ai essayé ceci :
$methode = $_POST['methode'];
$motscle = $_POST['motscle'];

if ($methode =='' ) {

echo "Retourner sur la page d'accueil. Veuillez entrer une valeur valide !";
}
else
{

$sql="SELECT * FROM sondage WHERE '".$methode."' LIKE '".$motscle."' ORDER BY nom";


$requete = mysql_query($sql,$cnx)  or die ('Erreur : '.mysql_error() );

echo "<center><table width='37%'>";

While ($voir = mysql_fetch_assoc($requete))
  {


echo  "<TR><td align='left'><b>Prénom: </b>".$voir['prenom']."<br>";
            echo "<b>Nom: </b>".$voir['nom']."<br>";
            echo "<b>Téléphone: </b>" .$voir['telephone']. "<br>";
            echo "<b>Email: </b>" .$voir['email']. "<br>";

}
echo "</table> ";
}

print $sql;
y a toujours un probleme ca ne fonctionne pas, je comprend vraiment pas

par sadeq » 27 sept. 2005, 14:47

j'ai essayé les résultats ne s'affichent toujours pas.
Je viens de voir ton code précédent, t'as des erreurs de structuration de la table HTML et de la lecture des résultats.
Le bloc à corriger et la correction sont les suivants:
1. Pour afficher chaque résultat dans une table:
...
$sql="SELECT * FROM sondage WHERE ".$methode." LIKE '%".$motscle."%' ORDER BY nom"; 

$requete = mysql_query($sql,$cnx)  or die ('Erreur : '.mysql_error() ); 

While ($voir = mysql_fetch_assoc($requete)) //Correction : une boucle While pour parcourir tous les résultats
  { 
//Correction : un TR est inséré pour créer une ligne de table
echo  "<center><table width='37%'><TR><td align='left'><b>Prénom: </b>".$voir['prenom']."<br>"; 
            echo "<b>Nom: </b>".$voir['nom']."<br>"; 
            echo "<b>Téléphone: </b>" .$voir['telephone']. "<br>"; 
            echo "<b>Email: </b>" .$voir['email']. "<br>"; 
        
echo "</table></center>"; //Correction : fermer la table avant de passer au suivant
} //fin de while

....
2. Pour afficher tous les résultats dans la même table:
....
$sql="SELECT * FROM sondage WHERE ".$methode." LIKE '%".$motscle."%' ORDER BY nom"; 

$requete = mysql_query($sql,$cnx)  or die ('Erreur : '.mysql_error() ); 

echo  "<center><table width='37%'>"; //Correction: ouvrir la table avant la boucle

While ($voir = mysql_fetch_assoc($requete)) //Correction : une boucle While pour parcourir tous les résultats
  { 
//Correction : un TR est inséré pour créer une ligne de table
echo  "<TR><td align='left'><b>Prénom: </b>".$voir['prenom']."<br>"; 
            echo "<b>Nom: </b>".$voir['nom']."<br>"; 
            echo "<b>Téléphone: </b>" .$voir['telephone']. "<br>"; 
            echo "<b>Email: </b>" .$voir['email']. "<br>"; 
        
} //fin de while
echo "</table></center>"; //fermer la table
....
Récap:
En effet, ta requête peut renvoyer plusieurs résultats (0..N), il faut utiliser une boucle (while) pour les lire.
Pour chaque résultat trouvé une ligne <TR> est créée.

par yopla26 » 27 sept. 2005, 14:35

j'ai essayé les résultats ne s'affichent toujours pas.

par Cyrano » 27 sept. 2005, 13:17

Essaye en ajoutant des possibilités autres:
$sql="SELECT * FROM sondage WHERE '".$methode."' LIKE '%".$motscle."%' ORDER BY nom"; 
Note les "%" de chaque coté du mot clé: ça ouvre la possibilité de trouver "Jean-Jérome" ou "Jérome Legrand" par exemple.

par yopla26 » 27 sept. 2005, 11:48

j'obtiens ceci quand j'ajoute print $sql;

SELECT * FROM sondage WHERE 'prenom' LIKE 'JEROME' ORDER BY nom

par pjl » 27 sept. 2005, 11:45

commence par afficher ta requête pour pouvoir la tester.

Moteur de recherche par champs spécifique

par yopla26 » 27 sept. 2005, 11:43

Bonjour j'aimerai faire une recherche par nom ou prenom ou telephone ou email à l'aide d'un champs texte et d'un menu déroulant. Mais voila cela ne fonctionne pas lorsque je veux afficher les résultats

Voici mon code :
<form method="POST" action="affichage_recherche.php">

	<p><input type="text" name="motscle" size="20">
	<select size="1" name="methode">
		<option value="telephone">Numéro de Téléphone</option>
		<option value="nom">Nom</option>
		<option value="prenom">Prenom</option>
		<option value="email">Email</option>
	</select>
	<input type="submit" value="Rechercher"></p>
</form>
et le formulaire d'affichage :
$methode = $_POST['methode'];
$motscle = $_POST['motscle'];

if ($methode =='' ) {

echo "Retourner sur la page d'accueil. Veuillez entrer une valeur valide !";
}
else
{

$sql="SELECT * FROM sondage WHERE '".$methode."' LIKE '".$motscle."' ORDER BY nom";


$requete = mysql_query($sql,$cnx)  or die ('Erreur : '.mysql_error() );

 if( $voir = mysql_fetch_assoc($requete))

  {


 echo "<center><table width='37%'><td align='left'><b>Prénom: </b>".$voir['prenom']."<br>";
            echo "<b>Nom: </b>".$voir['nom']."<br>";
            echo "<b>Téléphone: </b>" .$voir['telephone']. "<br>";
            echo "<b>Email: </b>" .$voir['email']. "<br>";
       
}
echo "</table>
    <input type='hidden' name='methode' value='<?php echo($methode) ;?>'>
    
    <table border='0' align='center' cellspacing='2' cellpadding='2'></table>";

}
Merci de m'indiquer la procédure, sinon j'ai déjà fais une recherche sur le forum en testant mais cela n'a rien rien