[RESOLU] module de recherche multicriteres php

mbmk92
Invité n'ayant pas de compte PHPfrance

27 juin 2013, 11:59

Contrairement a baddevil, quand je clic sur la page suivante sa exécute la requete par défaut! comment faire pour que la page suivante des critères sélectionnés apparaissent et non la page suivante de la requete par défaut?? :(
Je suis complètement suspendu à votre aide... Encore merci d'avance pour votre aide!! voici mon code
//$_SESSION['critere'] = array();

	if(!empty($_POST)){
		$_SESSION['critere'] = $_POST;
		
if(isset($_SESSION['critere']))
	extract($_SESSION['critere']);//on extrait les critères choisis pour ne plus redefinir des variables
	
$critere = array();//declaration du tablaeau qui va prendre tous les critères choisis.

	//on met le critere dans le tableau si il n'est pas null
	if(isset($devisCom) AND !empty($devisCom)){ $critere[] = 'D.idCommercial = '.$devisCom.' '; }
	if(isset($devisEtat) AND !empty($devisEtat)){ $critere[] = 'etatDevis = "'.$devisEtat.'" '; }
	if(isset($devisCli) AND !empty($devisCli)){ $critere[] = 'Cli.raisonSocialClient LIKE "%'.$devisCli.'%" '; }
	if(isset($perj1) AND !empty($perj1) AND 
		isset($perm1) AND !empty($perm1) AND 
		isset($peran1) AND !empty($peran1) AND 
		isset($perj2) AND !empty($perj2) AND 
		isset($perm2) AND !empty($perm2) AND 
		isset($peran2) AND !empty($peran2)){ 
	$per1 = $peran1.'-'.$perm1.'-'.$perj1.' 00:00:00';
	$per2 = $peran2.'-'.$perm2.'-'.$perj2.' 23:59:59';
	$critere[] = "dateEnregistrementDevis BETWEEN '".$per1."' AND '".$per2."' "; 
	}
	
	
	$critereALL = implode(' AND ', $critere);//on met tous les critères dans un string
	}
exécution de la requête
//interrogeons la base de donnée en fonction du privilège du commercial
if($_SESSION['privilege']=='Administrateur'){
	if(!empty($critereALL)){
		$nbEnr = 'SELECT COUNT(*) AS total
		FROM devis D,commercial Com,client Cli
		WHERE D.idClient=Cli.idClient AND D.idCommercial = Com.idCommercial AND '.$critereALL.'';
			//appel de la fonction qui calcul le nombre d'enregistrements
			$total = calculTotal($nbEnr);
			
			//Nous allons maintenant compter le nombre de pages.
			$nombreDePages=ceil($total/messagesParPage);
			
			$pageActuelle = pageactuelle($nombreDePages);
			$premiereEntree = preentree($pageActuelle);
		
		$requete = 'SELECT * ,Com.nomCommercial, Cli.raisonSocialClient
		FROM devis D,commercial Com,client Cli
		WHERE D.idClient=Cli.idClient AND D.idCommercial = Com.idCommercial AND '.$critereALL.'
		ORDER BY raisonSocialClient LIMIT '.$premiereEntree.', '.messagesParPage.'';	
		}
		//tous les devis
		else{
			$nbEnr = 'SELECT COUNT(*) AS total FROM devis';
			//appel de la fonction qui calcul le nombre d'enregistrements
			$total = calculTotal($nbEnr);
			
			//Nous allons maintenant compter le nombre de pages.
			$nombreDePages=ceil($total/messagesParPage);
			
			$pageActuelle = pageactuelle($nombreDePages);
			$premiereEntree = preentree($pageActuelle);
			
			$requete = 'SELECT * ,Com.nomCommercial, Cli.raisonSocialClient
				FROM devis D,commercial Com,client Cli
				WHERE D.idClient=Cli.idClient AND D.idCommercial = Com.idCommercial
				ORDER BY raisonSocialClient LIMIT '.$premiereEntree.', '.messagesParPage.'';
		}	//fin if liste par Com
	 
	$texte = '<p align="right">La base contient actuellement ';

Eléphant du PHP | 123 Messages

27 juin 2013, 20:55

salut, pour ma part je passe par une session ce qui garde mes critères en mémoire
ensuite je pense qu il faut que tu ouvre un nouveau sujet si tu veux qu on te repondre avec un lien de mon sujet

Eléphanteau du PHP | 13 Messages

03 juil. 2013, 12:41

salut, pour ma part je passe par une session ce qui garde mes critères en mémoire
ensuite je pense qu il faut que tu ouvre un nouveau sujet si tu veux qu on te repondre avec un lien de mon sujet
OK merci mais comment le faire stp

Eléphanteau du PHP | 13 Messages

03 juil. 2013, 14:08

Je viens de le faire dan sPHP débutant et PHP Avancé. Si tu peux m'aider merci d'avance

Eléphanteau du PHP | 13 Messages

05 juil. 2013, 00:50

Jusque la la pagination fonctionne parfaitement! Mais maintenant ce que je souhaiterais faire c'est de retenir les critères sélectionnes dans le formulaire! Je m'explique:
si par exemple on choisi le critère validé et qu'il y a 20 résultats soit 2 pages, dans mon formulaire, je voudrais que le bouton radio validé soit coché et ce sur toute les page. Sur la page 1 le bouton radio est coché; mais quand je clic sur la page 2, le bouton n'est plus coché bien que les résultats et la pagination sont exactes. Comment faire pour conserver le bouton radio coché selon le critère choisi?

Merci pour votre aide :D

Eléphant du PHP | 123 Messages

05 juil. 2013, 06:13

salut , dans mon module de recherche je n ai pas de bouton radio mais j avais déjà fais ca pour autre chose pour qu il garde en mémoire un critere comme l ABS d un vehicule

un bout de mon code si ca peut t aider
$requete = "SELECT  *
                  			  FROM AT_Annonces,AT_marque
                          where AT_Annonces.marque=AT_marque.IDmarque
                          and IDannonce='".$_GET['cocher1']."'"; 
                                $resultat = mysql_query ($requete);
                		$tempo = mysql_fetch_assoc($resultat);

                		                                                                                                            					
                          $abs = $tempo['abs'];
                          if(isset($tempo['abs'])&& $tempo['abs']=="oui") 
                          {$coch1="checked";}
                          else
                          {$coch1="";}

Eléphanteau du PHP | 13 Messages

05 juil. 2013, 17:19

ok d'accord merci.... mais dans mon cas les critères sont stockés dans une variable de session pour pouvoir les utiliser dans les pages 2,3,etc...est ce que sa marcherai?