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...