Bonsoir,
J'ai un souci avec un script de traitement d'un formulaire de recherche (4 types de recherche possibles).
Tout marchait bien pour récupérer les résultats des 2 1ers types (départements ou communes) : un grand merci à Jérôme Réaux pour son aide.
Pour les 2 autres (étage ou roche), j'ai fait des if ... else. Et là : PAGE BLANCHE. C'est horripilant de ne pas avoir de message d'erreur.
1° : y a t-il un moyen d'obtenir un message d'erreur pour le php comme pour le sql ?
2° : quelqu'un aurait-il un peu de temps et la gentillesse de regarder mon code juste pour m'indiquer où se situe l'erreur.
C'est difficile pour moi de faire cohabiter le traitement du formulaire, les sessions, l'affichage des résultats, les requêtes qui dépendent des POST... Je cale.
Ci-dessous un extrait de mon script.
Un grand merci pour votre aide et une très bonne soirée,
Evelyne31
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 <?php session_start(); // je démarre la session // ------------------------ //Connexion à la base de données mysql_connect('localhost', 'root', 'root'); mysql_select_db('xxxxx'); // ------------------------ // Initialisation des SESSION : si elles n'existent pas, on les crée if(!isset($_SESSION["recherche"]["mot"])){ $_SESSION["recherche"]["mot"] = ''; } if(!isset($_SESSION["recherche"]["type"])){ $_SESSION["recherche"]["type"] = ''; } // ------------------------ // Récupération des données (critères de recherche) via le formulaire if (isset($_POST["recherche"])){ // si le formulaire a été posté if (isset($_POST["mot_recherche"])){ $_SESSION["recherche"]["mot"] = trim($_POST["mot_recherche"]); } if (isset($_POST["type_recherche"])){ $_SESSION["recherche"]["type"] = trim($_POST["type_recherche"]); } } // ------------------------ // Création de la requête switch (($_SESSION["recherche"]["type"])) { case 'nomDepartement': // contient le mot ...$mot_recherche... // IMPORTANT => mysql_real_escape_string(...) pour PROTEGER des injections SQL !! $clauseWhere = " WHERE nomDepartement LIKE '%".mysql_real_escape_string($_SESSION['recherche']['mot'])."%' "; break; case 'nomCommune': // [......] $clauseWhere = " WHERE nomCommune LIKE '%".mysql_real_escape_string($_SESSION['recherche']['mot'])."%' "; break; case 'natureRoche': // [......] $clauseWhere = " WHERE natureRoche LIKE '%".mysql_real_escape_string($_SESSION['recherche']['mot'])."%' "; break; case 'nomEtage': // [......] $clauseWhere = " WHERE nomEtage LIKE '%".mysql_real_escape_string($_SESSION['recherche']['mot'])."%' "; break; default: $clauseWhere = ""; // requête à faire par défaut } // ------------------------ // count pour Departement ou Commune // Nombre total de résultats if ($_SESSION['recherche']['mot'] = 'nomDepartement' or 'nomCommune'); { $retour_total_query = "SELECT count(ID_gite) AS total FROM GITE g JOIN DEPARTEMENT d ON g.ID_departement = d.ID_departement JOIN COMMUNE c ON g.ID_commune = c.ID_commune ". $clauseWhere; // Critères de recherche $retour_total = mysql_query($retour_total_query) or die (mysql_error()); $donnees_total = mysql_fetch_assoc($retour_total); //On range retour sous la forme d'un tableau. $total = $donnees_total['total']; //On récupère le total pour le placer dans la variable $total. } //count pour Etage else ($_SESSION['recherche']['mot'] = 'nomEtage'); { $retour_total_query = "SELECT count(ID_gite) AS total FROM GITE g JOIN AS_GITE_ETAGE age ON g.ID_gite = age.GITE_ID_gite JOIN ETAGE e ON age.ETAGE_ID_etage = e.ID_etage ". $clauseWhere; // Critères de recherche $retour_total = mysql_query($retour_total_query) or die (mysql_error()); $donnees_total = mysql_fetch_assoc($retour_total); //On range retour sous la forme d'un tableau. $total = $donnees_total['total']; //On récupère le total pour le placer dans la variable $total. } // ------------------------ //requête pour Département ou Commune //La requête sql pour récupérer les messages de la page actuelle. if ($_SESSION['recherche']['mot'] = 'nomDepartement' or 'nomCommune'); { mysql_query("SET NAMES 'utf8'"); $retour_messages_query = "SELECT g.numGite FROM GITE g JOIN DEPARTEMENT d ON g.ID_departement = d.ID_departement JOIN COMMUNE c ON g.ID_commune = c.ID_commune ". $clauseWhere. // Critères de recherche " ORDER BY numGite ASC LIMIT ".$premiereEntree.", ".$messagesParPage." "; // Pagination*/ $retour_messages = mysql_query($retour_messages_query); } //requête pour Etage else ($_SESSION['recherche']['mot'] = 'nomEtage'); { mysql_query("SET NAMES 'utf8'"); $retour_messages_query = "SELECT g.numGite FROM GITE g JOIN AS_GITE_ETAGE age ON g.ID_gite = age.GITE_ID_gite JOIN ETAGE e ON age.ETAGE_ID_etage = e.ID_etage ". $clauseWhere. // Critères de recherche " ORDER BY numGite ASC LIMIT ".$premiereEntree.", ".$messagesParPage." "; // Pagination... Affichage HTML...
Partager