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
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
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 !
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(); ?>
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(); ?>
Merci pour pour votre aide si précieuse mais je viens encore vers vous. et si j'utilisais deux variables du genre :
etc...
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.."; }
Ce que je veux, c'est faire une recherche avec deux ou trois variables en entrée. Que faire ?
Merci pour tout !
Bonsoir
Il faudrait que tu récupères tes variables depuis un formulaire comme pour le nom : $nom=$_POST['nom'];. Par exemple :
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 $nom=$_POST['nom']; $prenom=$_POST['prenom'];
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');
Merci pour tout THOMASR. J'essais ce que tu me dis là et je te tiens informé de la suite...A bientôt !
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 :
je pense que pour vous faciliter la tâche afin de m'aider, je vous donne tous les élements necessaires.
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(); ?>
le formulaire:
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
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'é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> </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>
j'espère qu'à partir de là tu me comprends véritablement et que tu pourra m'aider. Merci pour tout!
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');
Partager