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 multicritères PHP/MySQL


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 17
    Points : 10
    Points
    10
    Par défaut Recherche multicritères PHP/MySQL
    Bonjour à tous !
    je cherche un code pour une recherche multicritere (2) qui me permettrait d'afficher comme résultat un lien.

    le mien ne marche pas

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 048
    Points
    34 048
    Billets dans le blog
    14
    Par défaut
    Commence par nous donner ton code.
    Et cela aurait été mieux de mettre ça dans la rubrique php/mysql.

  3. #3
    Membre à l'essai
    Inscrit en
    Octobre 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 17
    Points : 10
    Points
    10
    Par défaut
    je veux en fait faire une recherche multicritère mais je n'ai pu. j'ai du changer le code en faisant ue recherche avec une seule entrée qui affiche un lien..
    aidez moi. Merci pour votre promptitude.
    voici mon code :
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    <?php
     
    $nom=$_POST['nom'];
    echo"<script langage=Javascript>
    $nom=$nom.tolowerCase()";
    echo"</script>"; 
     
     
    $host = "localhost";
     
    $user = "root";
     
    $password = "";
     
    $bdd = "";
     
    mysql_connect($host, $user, $password) or die ("Connexion au serveur impossible");
     
    // on choisit la bonne base
    mysql_select_db($bdd) or die ("Connexion a la base impossible");
     
    echo"
    <html>
    
    <head>
    
    <title>Résultat de la recherche</title>
    
    </head>
    
    <body>";
     
    if (($nom == "")||($nom == "%")) {
    // Si aucun nom clé n'a été saisi,
    // le script demande à l'utilisateur
    // de bien vouloir préciser un nom
     
    	echo "
    	Veuillez entrer un nom s'il vous plaît ! Cliquez sur precedent pour le faire..
    	";
     
    }
     
    else {
    // On selectionne les enregistrements contenant le nom
    // dans les keywords ou le titre
    	$query = "SELECT distinct count(lien) FROM recherchehotelresto
    	WHERE keyword LIKE \"%$nom%\"
    	OR titre LIKE \"%$nom%\"
    	";
     
    	$result = mysql_query($query);
     
    	$row = mysql_fetch_row($result);
     
    	$Nombre = $row[0];
     
    // Si aucun enregistrement n'est retourné,
    // on affiche un message adéquat
    if ($Nombre == "0") {
    	echo "
    	<h2>Aucun résultat ne correspond à votre recherche</h2>
    veuillez entrez un nom correct s'il vous plaît ! Cliquez sur precedent pour le faire..
    	<p>
    
    	";
     
    }
     
    // Sinon, on affiche le nombre d'enregistrements correspondant
    // et les résultats eux-mêmes
    else {
    	$query = "SELECT distinct lien,keyword,titre FROM recherchehotelresto
    	WHERE keyword LIKE \"%$nom%\"
    	OR titre LIKE \"%$nom%\" ORDER by titre ASC";
     
    	$result = mysql_query($query);
     
    	// Si un seul enregistrement est trouvé, on affiche un message au singulier
    	if ($Nombre == "1") {
    	echo "
    	<a name=\"#resultat\"><h2>Résultat: trouvé</h2></a>
    
    	<p>";
     
    	}
    	// Dans le cas contraire le message est au pluriel...
    	else {
    	echo "
    	<a name=\"#resultat\"><h2>Résultat: $Nombre éléments trouvés</h2></a>
    
    	<p>";
     
    	}
    	while($row = mysql_fetch_row($result))
    	{
    		echo "
    		<p>\n
    		<b>$row[2]</b>\n
    		<br><a href=\"../$row[0]\">Visualiser l'élément</a>\n
    		<p>\n
    		";
     
    	}
    }
     
    }
     
    // on ferme la base
    mysql_close();
     
    ?>

  4. #4
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Ca risque pas il est un peu tout naze ce code :p

    Compter le nombre de résultats que renvoie une requête c'est mysql_num_rows(mysql_query()). Pas la peine de faire deux requêtes.
    D'autres parts les entiers sont de la forme $int = 0; en PHP et non $int = "0";
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
     
    <?php
     
    $nom=$_POST['nom'];
    echo"<script langage=Javascript>
    $nom=$nom.tolowerCase()";
    echo"</script>"; 
     
     
    $host = "localhost";
     
    $user = "root";
     
    $password = "";
     
    $bdd = "";
     
    mysql_connect($host, $user, $password) or die ("Connexion au serveur impossible");
     
    // on choisit la bonne base
    mysql_select_db($bdd) or die ("Connexion a la base impossible");
     
    echo"
    <html>
    
    <head>
    
    <title>Résultat de la recherche</title>
    
    </head>
    
    <body>";
     
    if (($nom == "")||($nom == "%")) 
    	{
    	echo "Veuillez entrer un nom s'il vous plaît ! Cliquez sur precedent pour le faire..";
    	}
    else 	{
    	$query = mysql_query('SELECT distinct lien,keyword,titre FROM recherchehotelresto
    	WHERE keyword LIKE "%'.$nom.'%" OR titre LIKE "%'.$nom.'%" ORDER by titre ASC');
    	if(mysql_num_rows($query)>0)
    		{
    		echo '<a name="#resultat"><h2>Résultat: trouvé</h2></a><p>';
    		echo '<a name="#resultat"><h2>Résultat: '.mysql_num_rows($query).' éléments trouvés</h2></a><p>';
     
    		while($row = mysql_fetch_array($query))
    			{
    			echo '<p><b>'.$row[2].'</b><br><a href="../'.$row[0].'">Visualiser l\'élément</a><p>';
    			}
    		}
    	else
    		{
    		echo '<p>Aucun éléments trouvés</p>';
    		}
    	}
     
    }
     
    mysql_close();
     
    ?>

  5. #5
    Membre à l'essai
    Inscrit en
    Octobre 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 17
    Points : 10
    Points
    10
    Par défaut
    Merci pour pour votre aide si précieuse mais je viens encore vers vous. et si j'utilisais deux variables du genre :

    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
    34
    35
    36
    37
    <?php
     
    $nom=$_POST['nom'];
    $prenom=$_POST['prenom'];
    echo"<script langage=Javascript>
    $nom=$nom.tolowerCase()";
    echo"</script>"; 
     
     
    $host = "localhost";
     
    $user = "root";
     
    $password = "";
     
    $bdd = "";
     
    mysql_connect($host, $user, $password) or die ("Connexion au serveur impossible");
     
    // on choisit la bonne base
    mysql_select_db($bdd) or die ("Connexion a la base impossible");
     
    echo"
    <html>
     
    <head>
     
    <title>Résultat de la recherche</title>
     
    </head>
     
    <body>";
     
    if (($nom == "")||($nom == "%")||($prenom == "")||($nom == "%") ) 
    	{
    	echo "Veuillez entrer un nom s'il vous plaît ! Cliquez sur precedent pour le faire..";
    	}
    etc...

    Ce que je veux, c'est faire une recherche avec deux ou trois variables en entrée. Que faire ?
    Merci pour tout !

  6. #6
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Bonsoir
    Il faudrait que tu récupères tes variables depuis un formulaire comme pour le nom : $nom=$_POST['nom'];. Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $nom=$_POST['nom'];
    $prenom=$_POST['prenom'];
    Comme tu l'as fait tu devras aussi vérifier pour ces champs qu'ils ne sont pas vides où qu'ils conviennent bien à tes critères.

    Ensuite il faudra que tu modifie la requête SQL afin qu'elle recherche aussi sur tes autres informations.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $sql = mysql_query('SELECT distinct lien,keyword,titre FROM recherchehotelresto WHERE keyword LIKE "%'.$nom.'%" OR keyword LIKE "%'.$prenom.'%" OR titre LIKE "%'.$nom.'%" OR titre LIKE "%'.$prenom.'%" ORDER by titre ASC');

  7. #7
    Membre à l'essai
    Inscrit en
    Octobre 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 17
    Points : 10
    Points
    10
    Par défaut
    Merci pour tout THOMASR. J'essais ce que tu me dis là et je te tiens informé de la suite...A bientôt !

  8. #8
    Membre à l'essai
    Inscrit en
    Octobre 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 17
    Points : 10
    Points
    10
    Par défaut
    j'ai essayé de suivre tes instructions mais en vain. il m'affiche ce résultat :
    Warning:mysql_num_rows():suplied argument is not a valid Mysql result in C:\.... on line 63

    Voici mon code :

    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
    34
    35
    36
    37
    38
    39
    40
    $ville=$_POST['ville'];
    $etoiles=$_POST['etoiles'];
    $bourse=$_POST['bourse'];
     
    $host = "localhost";
    $user = "root";
    $password = "";
    $bdd = "hotel_resto";
     
    mysql_connect($host, $user, $password) or die ("Connexion au serveur impossible");
     
    // on choisit la bonne base
    mysql_select_db($bdd) or die ("Connexion a la base impossible");
     
    echo"
    <html>
     <head>
     <title>Résultat de la recherche</title>
     </head>
     <body>";
     
    $query = mysql_query('SELECT distinct lien,ville,etoiles,bourse,titre FROM recherchehotelresto
    	WHERE ville LIKE "%'.$ville.'%" OR etoiles LIKE "%'.$etoiles.'%" OR bourse LIKE "%'.$bourse.'%" OR titre LIKE "%'.$ville.'%" ORDER by titre ASC');
    	if(mysql_num_rows($query)>0)
    		{
    		echo '<a name="#resultat"><h2>Résultat: '.mysql_num_rows($query).' élément(s) trouvé(s)</h2></a><p>';
     
    		while($row = mysql_fetch_array($query))
    			{
    			echo '<p><b>'.$row[2].'</b><br><a href="../'.$row[0].'">Visualiser l\'élément</a><p>';
    			}
    		}
    	else
    		{
    		echo '<p>Aucun élément(s) trouvé(s)</p>';
    		}
     
    mysql_close();
     
    ?>
    je pense que pour vous faciliter la tâche afin de m'aider, je vous donne tous les élements necessaires.

    le formulaire:
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    <form name="form1" method="post" action="rechercheavancehotel.php" enctype="multipart/form-data">
    <table width="206" align="center">
           <tr>
            <td width="58" align="right"><p class="Style8"><font size="2"><b>Ville : </b></font></td>
            <td width="159" align="left"><p><font size="2">
              <select name="ville">
    		  <option selected="selected">choisir votre ville</option>
                <option value="toulouse">toulouse</option>
                <option value=""></option>
                <option value=""></option>
                <option value=""></option>
              </select>
    </font></td>
        </tr>
        <tr>
            <td width="58" align="right"><p align="left" class="Style8"><font size="2"><b>Nombres d'&eacute;toiles   
                : </b></font></td>
            <td width="159" align="left"><p><font size="2">
              <select name="etoiles">
                <option selected="selected">1</option>
                <option value="2">2</option>
                <option value="3">3</option>
                <option value="4">4</option>
                <option value="5">5</option>
              </select>        
              &nbsp;</font></td>
        </tr>
        <tr>
            <td width="58" align="right"><p align="left"> <font size="2"><b><span class="Style8">Bourse            : </span></b></font></td>
            <td width="159" align="left"><p><font size="2">
              <select name="bourse">
    		  <option selected="selected">choisir votre bourse</option>
    		  <option value="15 - 25">15 - 25</option>
    		  <option value="25 - 50">25 - 50</option>
    		  <option value="50 - 100">50 - 100</option>
    		  <option value="100 - 150">100 - 150</option>
    		  <option value="150 et plus">150 et plus</option>
              </select> 
              </font></td>
        </tr>
        <tr>
            <td width="58" align="right" valign="top" rowspan="2" ><p><font size="2"></font></td>
                </tr>
        <tr>
            <td width="159" align="left"><p><font size="2"><input type="submit" value="Envoyer"> 
                </font></td>
        </tr>
    </table></form>
    Ensuite la table :


    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
    Ensuite la table :
     
     
    -- Structure de la table `rechercheavancehotels`
    -- 
     
    CREATE TABLE `rechercheavancehotels` (
      `id` int(5) NOT NULL default '0',
      `lien` varchar(100) NOT NULL default '',
      `ville` varchar(30) NOT NULL default '',
      `etoiles` varchar(5) NOT NULL default '',
      `bourse` varchar(30) NOT NULL default '',
      `titre` varchar(30) NOT NULL default '',
      PRIMARY KEY  (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
     
    -- 
    -- Contenu de la table `rechercheavancehotels`
    -- 
     
    INSERT INTO `rechercheavancehotels` VALUES (0, 'hotel/ibis/accueil.php', 'toulouse', '3', '25 - 50', 'toulouse');
    j'espère qu'à partir de là tu me comprends véritablement et que tu pourra m'aider. Merci pour tout!

Discussions similaires

  1. [MySQL] Recherche multicritères php MySql
    Par Gourou1 dans le forum PHP & Base de données
    Réponses: 15
    Dernier message: 13/03/2013, 10h53
  2. [MySQL] créer un moteur de recherche en php/mysql
    Par belakhdarbts10 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 21/05/2007, 12h52
  3. Recherche multicritère PHP-MySql
    Par pod1978 dans le forum Débuter
    Réponses: 4
    Dernier message: 14/10/2006, 23h52
  4. Requête multicritère PHP-Mysql
    Par pod1978 dans le forum Requêtes
    Réponses: 5
    Dernier message: 28/05/2006, 18h42

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