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');
Partager