Précédent   Forum des professionnels en informatique > PHP > Langage > Formulaires
Formulaires Forum d'entraide sur les formulaires avec PHP. Avant de poster -> FAQ formulaires, Cours de formulaires et Sources de formulaires
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/05/2011, 15h31   #1
Invité régulier
 
Arnold Bouya
Inscription : novembre 2009
Messages : 15
Détails du profil
Informations personnelles :
Nom : Arnold Bouya

Informations forums :
Inscription : novembre 2009
Messages : 15
Points : 5
Points : 5
Par défaut Formulaire de recherche multi-critères

Bonjour,

J'ai un formulaire de recherche multi-critères
Citation:
<form id="form1" name="form1" method="post" action= "<?php echo $_SERVER['PHP_SELF'];?>" >
J'ai mis deux tableaux dans ce formulaire: le premier tableau permet de choisir les critères (type de données, thème, sous-thème, commune). Puis de lancer la recherche.
Et de lancer la recherche en cliquant sur le bouton relatif à cet effet :
Citation:
<td><input id="Bouton_Recherche" class="Button" value="Rechercher" type="submit" name="Bouton_Recherche"></td>
voici le code :
Code :
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
Function pagination($RecupRequete)
	{
		$par_page=5;
		if(isset($_GET['debut'])){ 
			$debut=(int)$_GET['debut'];
		}
		else{
			$debut=0;/*page 1 par defaut*/
		}
 
		//$q="SELECT * from ".$dbtable."";
		$q = $RecupRequete;
		$comptage_lignes_table=mysql_num_rows(mysql_query($q));
		$mas_pages= ceil($comptage_lignes_table/$par_page);
		$prev=$debut-$par_page;
		$next=$debut+$par_page - 1;
 
		//$q2 = "select * from ".$dbtable." limit $debut,$par_page";
		$q2 = "$RecupRequete limit $debut,$par_page";
		echo "<br>", $q2;
		$get = mysql_query($q2);
		while($rows = mysql_fetch_assoc($get))
		{
			$r[]=$rows;
		}
		//mysql_close();
 
		/*creation navbar*/
		$navbar ="";
		if(!($debut<=0)){
			$navbar .= '<a href="?debut='.$prev.'"><<  </a>';
		}
 
		$i=1;
		for($x=0;$x<$comptage_lignes_table;$x=$x+5){
			if($debut!=$x){
			$navbar .= '<a href="?debut='.$x.'"> '.$i.' </a>';
			}else{
				$navbar .= '<a href="?debut='.$x.'"> <b>['.$i.'] </b></a>';
			}
			$i++;
		}
 
		if($debut <= $comptage_lignes_table-$par_page ){
			$navbar .= '<a href="?debut='.$next.'">  >></a>';
		}
 
			return $dat=array(0=>$navbar,1=>$r);
 
	}
La pagination marche très bien. Sauf que quand je clique sur un numéro de page, les critères de recherche choisis précédents s'effacent, ma page se recharge.

Alors, ma question de savoir si quelqu'un peut me dire comment faire pour éviter le rechargement de ma page donc le maintien des critères choisis.
Ma base de données est sous MySql et j'utilise PHP (version 5.3.0).

J'ai parcouru la FAQ PHP mais je n'ai pas trouvé une solution. A moins qu'une réponse soit noyée dans une des pages.

Merci d'avance.
magbouya est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2011, 15h48   #2
Membre régulier
 
Avatar de Pierrot2Mars
 
Homme Pierrot
Développeur Web
Inscription : novembre 2010
Messages : 79
Détails du profil
Informations personnelles :
Nom : Homme Pierrot
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : novembre 2010
Messages : 79
Points : 96
Points : 96
Salut,

C'est normal, ta fonction créé des liens <a href=""></a>
Tu envoies donc ton numéro de page en GET et tu perds tes données en POST de ton formulaire.

Elle ressemble à quoi ta requête dans l'argument de ta fonction ?
Quel type de champ input tu as dans ton formulaire ?

D'autre part, tu auras sans doute besoin de rajouter un LIMIT dans ta requête.
Pierrot2Mars est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2011, 17h28   #3
Invité régulier
 
Arnold Bouya
Inscription : novembre 2009
Messages : 15
Détails du profil
Informations personnelles :
Nom : Arnold Bouya

Informations forums :
Inscription : novembre 2009
Messages : 15
Points : 5
Points : 5
Citation:
Envoyé par Pierrot2Mars Voir le message
Salut,

C'est normal, ta fonction créé des liens <a href=""></a>
Tu envoies donc ton numéro de page en GET et tu perds tes données en POST de ton formulaire.

Elle ressemble à quoi ta requête dans l'argument de ta fonction ?
Quel type de champ input tu as dans ton formulaire ?

D'autre part, tu auras sans doute besoin de rajouter un LIMIT dans ta requête.
Ok, comment éviter d'envoyer le numéro de page en GET ?

Ma requête change en fonction des critères choisis. Par exemple si on choisit le thème et le sous-thème, elle est :
Code :
1
2
$requete1 = "SELECT * FROM t_cartesetdonnees WHERE Id_theme='".$_POST['s_id_theme']."' "
					  ." AND Id_sousTheme='".$_POST['s_id_soustheme']."' ORDER BY {$order_by} {$order_dir} ";
Et c'est dans la fonction
Code :
Function pagination($RecupRequete)
que que j'ajoute un LIMIT dans la requête :
Code :
$q2 = "$RecupRequete limit $debut,$par_page";
Je pense en effet que c'est un niveau des liens (que crée la fonction) et du GET qu'il y a un problème.
magbouya est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2011, 17h39   #4
Membre régulier
 
Avatar de Pierrot2Mars
 
Homme Pierrot
Développeur Web
Inscription : novembre 2010
Messages : 79
Détails du profil
Informations personnelles :
Nom : Homme Pierrot
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : novembre 2010
Messages : 79
Points : 96
Points : 96
Si tu n'a que ces 2 champs POST, tu peux transformer ta méthode de form en GET.
Tu obtiens donc tes deux variables :
Code :
$_GET['s_id_theme'] et $_GET['s_id_soustheme']
Tu transforme le href de tes liens en :
Code :
'?debut='.$x.'&'.s_id_theme='.$_GET['s_id_theme'].'&'.s_id_soustheme='.$_GET['s_id_soustheme'].'
Pierrot2Mars est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2011, 17h54   #5
Invité régulier
 
Arnold Bouya
Inscription : novembre 2009
Messages : 15
Détails du profil
Informations personnelles :
Nom : Arnold Bouya

Informations forums :
Inscription : novembre 2009
Messages : 15
Points : 5
Points : 5
Citation:
Envoyé par Pierrot2Mars Voir le message
Si tu n'a que ces 2 champs POST, tu peux transformer ta méthode de form en GET.
Tu obtiens donc tes deux variables :
Code :
$_GET['s_id_theme'] et $_GET['s_id_soustheme']
Tu transforme le href de tes liens en :
Code :
'?debut='.$x.'&'.s_id_theme='.$_GET['s_id_theme'].'&'.s_id_soustheme='.$_GET['s_id_soustheme'].'
Malheureusement j'ai 5 champs possibles (5 critères au choix). Mais j'ai compris ton idée. Je vais créer un petite fonction qui me permettra de transformer le href tel que tu me proposes.

En attendant, encore une question si je laisse ma méthode de formulaire en POST et je transforme le href en :
Code :
'?debut='.$x.'&'.s_id_theme='.$_POST['s_id_theme'].'&'.s_id_soustheme='.$_POST['s_id_soustheme'].'
n'est-ce pas aussi correct ?

En tout cas merci du tuyau.
magbouya est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/05/2011, 09h56   #6
Membre régulier
 
Avatar de Pierrot2Mars
 
Homme Pierrot
Développeur Web
Inscription : novembre 2010
Messages : 79
Détails du profil
Informations personnelles :
Nom : Homme Pierrot
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : novembre 2010
Messages : 79
Points : 96
Points : 96
Citation:
Envoyé par magbouya Voir le message
En attendant, encore une question si je laisse ma méthode de formulaire en POST et je transforme le href en :
Code :
'?debut='.$x.'&'.s_id_theme='.$_POST['s_id_theme'].'&'.s_id_soustheme='.$_POST['s_id_soustheme'].'
n'est-ce pas aussi correct ?
Les données en POST seront perdues.
Tu disposera des valeurs en GET qu'il faudra traiter.
Tu va jongler entre les POST et les GET, c'est pas le top.
Pierrot2Mars est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/05/2011, 16h25   #7
Invité régulier
 
Arnold Bouya
Inscription : novembre 2009
Messages : 15
Détails du profil
Informations personnelles :
Nom : Arnold Bouya

Informations forums :
Inscription : novembre 2009
Messages : 15
Points : 5
Points : 5
Salut,

Ok, je vais passer en GET et revoir la fonction pagination.
magbouya est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h38.


 
 
 
 
Partenaires

Hébergement Web