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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 17
    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
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 814
    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 814
    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.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre averti
    Inscrit en
    Octobre 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 17
    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 : 38
    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
    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 averti
    Inscrit en
    Octobre 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 17
    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 : 38
    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
    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');

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