aide pour finaliser script recherche multicriteres

Eléphant du PHP | 254 Messages

24 oct. 2008, 15:35

Hello à tous
:-)
Je planche sur un formulaire de recherche multicritères
Il y a effectivement plein de posts à ce sujet..mais je ne solutionne pas mon pti souci :
- si on n'appuie pas sur "rechercher" alors j'exécute une requête
- si on fait une recherche en sélectionnant des valeurs des menus déroulants, alors on exécute une autre requête.
//si pas de recherche, on affiche le mois en cours
if(!isset($_GET['bouton'])) {
							mysql_select_db($database, $connection);
							$query_retraites = "SELECT * FROM retraites, retraite_langues, retraite_pays, retraite_foyers, retraite_type 
							WHERE retraites.ID_langue=retraite_langues.ID_langue AND retraites.ID_pays=retraite_pays.ID_pays AND retraites.foyer=retraite_foyers.foyer 
							AND retraites.ID_type=retraite_type.ID_type AND date_debut >= NOW() AND MONTH(date_debut) = '".$mois."' 
							AND YEAR(date_debut) >= YEAR(NOW()) ORDER BY retraites.date_debut ASC";
							$retraites = mysql_query($query_retraites, $connection) or die(mysql_error());
							$row_retraites = mysql_fetch_assoc($retraites);
							$totalRows_retraites = mysql_num_rows($retraites);
							}
							else{
								$collangue_retraites = "-1";
								if (isset($_GET['ID_langue'])) {
								$collangue_retraites = (get_magic_quotes_gpc()) ? $_GET['ID_langue'] : addslashes($_GET['ID_langue']);
								}
								$colpays_retraites = "-1";
								if (isset($_GET['ID_pays'])) {
								$colpays_retraites = (get_magic_quotes_gpc()) ? $_GET['ID_pays'] : addslashes($_GET['ID_pays']);
								}
								$coltype_retraites = "-1";
								if (isset($_GET['ID_type'])) {
								$coltype_retraites = (get_magic_quotes_gpc()) ? $_GET['ID_type'] : addslashes($_GET['ID_type']);
								}
								mysql_select_db($database, $connexion);
								$query_retraites = sprintf("SELECT retraites.ID_retraite, retraites.ID_langue, retraites.ID_pays, retraites.ID_type, 
retraites.description, retraites.date_debut, retraites.date_fin, retraites.foyer, retraite_langues.ID_langue, retraite_langues.langue, retraite_pays.ID_pays, 
retraite_pays.pays, retraite_type.ID_type, retraite_type.type 
								FROM retraites, retraite_langues, retraite_pays, retraite_type 
								WHERE retraites.id_langue = '%s' 
								AND retraites.id_pays = '%s' 
								AND retraites.id_type = '%s' 
								AND retraite_langues.ID_langue=retraites.ID_langue 
								AND retraite_pays.ID_pays=retraites.ID_pays 
								AND retraite_type.ID_type=retraites.ID_type 
								AND retraites.date_debut >= NOW() AND YEAR(date_debut) >= YEAR(NOW()) 
								ORDER BY retraites.date_debut ASC ", $collangue_retraites,$colpays_retraites,$coltype_retraites);
								$query_limit_retraites = sprintf("%s LIMIT %d, %d", $query_retraites, $startRow_retraites, $maxRows_retraites);
								$retraites = mysql_query($query_limit_retraites, $connection) or die(mysql_error());
								$row_retraites = mysql_fetch_assoc($retraites);
}
Le formulaire :

Code : Tout sélectionner

<form id="form1" name="form1" method="get" action="index.php?langue=<?php echo $row_retraites['pays']; ?> &pays=<?php echo $row_retraites['pays']; ?> &type=<?php echo $row_retraites['type']; ?> &startday=<?php echo $row_retraites['date_debut']; ?> &bouton=Rechercher">
Je dois faire autrement j'imagine;
Car là j'ai bien la première requête qui s'exécute, mais si je sélectionne des critères, rien ne se passe, je reste sur l'affichage de la première requête.

Merci de votre aide ! :-)

Mammouth du PHP | 19672 Messages

24 oct. 2008, 16:09

Détail peut-être important :
- Dans le code PHP, tu testes l'existence des paramètres (GET) "ID_langue", "ID_pays" ou encore "ID_type";
- Dans l'url d'action de ton formulaire, il y a les paramètres "langue", "pays" et "type" (entre autres)
Donc il y a au départ un problème d'absence de convention de noms... :-k
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 254 Messages

24 oct. 2008, 16:50

hello cyrano et merci de ta réponse !
oui j'ai vu et j'ai corrigé, mais cela ne donne rien
je ne vois pas d'où ça vient
Si j'isole les requêtes, cela fonctionne bien évidemment si je renvoie sur une page recherche.php par exemple pour exécuter la seconde.
Mais ce n'est pas ce que je veux.

Mammouth du PHP | 19672 Messages

24 oct. 2008, 18:17

Te poses-tu les bonnes questions ? :-k

Lors de la soumission du formulaire, la page d'arrivée reçoit-elle les données attendues ?... par exemple...
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 254 Messages

29 nov. 2008, 13:35

oups je réponds un peu tard !
j'ai résolu mon pti pb
avec une requete complexe et un implode()
merci !!!