IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

recherche avec plusieurs mots clé [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 46
    Points : 21
    Points
    21
    Par défaut recherche avec plusieurs mots clé
    Bonjour

    J'ai un problème en voulant faire une recherche avec des mots clés. En fait j'ai plusieurs champs que je peux remplir ou pas. Et lorsque que je ne met qu'un seul mot clé, ou que je ne remplis pas tout les champs il me met qu'il ne trouve pas de document. En gros je suis obligé de renseigner tout les champs si je veux que ca marche alors que j'aimerais pouvoir n'en remplir qu'un, ou deux, ou trois, ou quatre.

    Voila les champs pour les mots clés:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    		<td align="left" valign="top"> 
    			<form action="recherche.php" method="post" enctype="multipart/form-data">
    			<b>Recherche :</b><br>
    			<b>Auteur :</b><br>
    			<input size=8 type=text name='search'>&nbsp;<br>
    			<b>Titre :</b><br>
    			<input size=8 type=text name='search'>&nbsp;<br>
    			<b>Thème :</b><br>
    			<input size=8 type=text name='search'>&nbsp;<br>
    			<b>Decriptif sujet, Reliure, Etat :</b><br>
    			<input size=8 type=text name='search'>&nbsp;<br><input type=submit value="Ok"></form>
    		</td>

    Et voici ma fonction de recherche:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    function search($motCle)
    {
    	if($motCle=='all')
    	{
    		$req=mysql_query("SELECT * FROM essai ORDER BY Nom_auteur");
    	}
    	else
    	{
    		$req=mysql_query("SELECT * FROM essai WHERE Nom_auteur LIKE \"%$motCle%\" or Titre LIKE \"%$motCle%\"  or Théme LIKE \"%$motCle%\" or Descriptif_sujet_Reliure_etat LIKE \"%$motCle%\" ORDER BY Nom_auteur");
    	}
    	if(mysql_num_rows($req)==0)
    	{
    		echo "Aucun document trouvé";
    	}
    	else
    	{
    		while ($req2=mysql_fetch_array($req))
    		{
    			$doc=mysql_fetch_array(mysql_query("SELECT * FROM essai WHERE Nom_auteur LIKE \"%$motCle%\" or Titre LIKE \"%$motCle%\"  or Théme LIKE \"%$motCle%\" or Descriptif_sujet_Reliure_etat LIKE \"%$motCle%\"  "));
    			echo "<table border width=\"100%\"><tr><td width='40%' valign='top'>
    				<table width='100%' height='100%'>
    				<tr><td><b>Auteur : </b>".$doc['Nom_auteur']."
    						<b>Titre : </b>".$doc['Titre']."
    						<b>Thème : </b>".$doc['Théme']."
    						<b>Descriptif sujet, reliure, etat : </b>".$doc['Descriptif_sujet_Reliure_etat']."
    				</td></tr>
    				</table></table>
    				";
    		}
    	}
    }

    De plus lorsque j'effectue une recherche et qu'il trouve plusieurs résultats il affiche toujours le même par exemple:
    Auteur : WOLFF Albert Titre : Figaro - Salon 1891 Thème : Peinture Descriptif sujet, reliure, etat : Journal comprenant de nombreuses illustrations.

    Auteur : WOLFF Albert Titre : Figaro - Salon 1891 Thème : Peinture Descriptif sujet, reliure, etat : Journal comprenant de nombreuses illustrations.

    Auteur : WOLFF Albert Titre : Figaro - Salon 1891 Thème : Peinture Descriptif sujet, reliure, etat : Journal comprenant de nombreuses illustrations.

  2. #2
    Membre confirmé Avatar de SphynXz
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    439
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 439
    Points : 547
    Points
    547
    Par défaut
    salut,

    j'aimerais savoir comment tu passe de tes trois input (portant d'ailleurs le même nom ) à $motcle ?

    d'ailleur si tu veux utiliser le même nom pour plusieurs champs, le champ se devra d'avoir pour propriété name une syntaxe html de tableau, c'est à dire :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <input type=text name='motcle[]' />
    <input type=text name='motcle[]' />
    <input type=text name='motcle[]' />

    I don't know what will be used in the next world war, but the 4th will be fought with stones. - Albert Einstein
    Pour détourner un avion, il faut monter dedans - Frédéric beigbeder

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 46
    Points : 21
    Points
    21
    Par défaut
    j'aimerais savoir comment tu passe de tes trois input (portant d'ailleurs le même nom ) à $motcle ?
    Grâce à ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    <?php
    require("infos.php");
    require("fonctions.php");
    // Connexion à mysql
    $connect=mysql_connect($serveur,$user,$pass) or die ("erreur de connexion"); 
    mysql_select_db($base,$connect) or die ("erreur de connexion a la base");
     
    include("header.html");
    //Teste si la base de donnée est vide et renvoie un message d'erreur si VRAI
    if(vide($base))
    {
    	retour("vide");
    	exit();
    }
    if (isset($_GET['search']))
    {
    	search($_GET['search']);
    }
    elseif(!empty($_POST['search']))
    {
    	search($_POST['search']);
    }
    else
    {
    	echo "Vous n'avez entré aucun mot clé...";
    }
     
    if (mysql_close()==false)
    	exit("Fermeture impossible de la base");
     
    include("footer.html");
     
    ?>
    C'est vrai que c'est idiot d'avoir le même nom pour tout les champs en fait j'aimerais savoir aussi comment effectuer une recherche mais avec plusieurs mots clés. Par contre quelqu'un a pas une idée pour le problème de départ ?

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 46
    Points : 21
    Points
    21
    Par défaut
    finalement c bon j'ai réussi à résoudre mes pbs

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. faire une recherche avec plusieurs mot-clés
    Par jakouz dans le forum Débuter
    Réponses: 2
    Dernier message: 16/12/2010, 13h50
  2. [MySQL] recherche avec plusieurs mots dans mon moteur
    Par hadjiphp dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 25/05/2009, 08h53
  3. moteur de recherche avec plusieurs mots clés
    Par kadiato dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 17/02/2009, 15h44
  4. recherche avec plusieurs mots-clé
    Par MAMANHOU dans le forum IHM
    Réponses: 6
    Dernier message: 12/07/2007, 10h05
  5. Réponses: 6
    Dernier message: 04/11/2005, 17h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo