[RESOLU] module de recherche multicriteres php

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] module de recherche multicriteres php

Re: [RESOLU] module de recherche multicriteres php

par mbmk92 » 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?

Re: [RESOLU] module de recherche multicriteres php

par baddevil » 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="";}

Re: [RESOLU] module de recherche multicriteres php

par mbmk92 » 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

Re: [RESOLU] module de recherche multicriteres php

par mbmk92 » 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

Re: [RESOLU] module de recherche multicriteres php

par mbmk92 » 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

Re: [RESOLU] module de recherche multicriteres php

par baddevil » 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

Re: [RESOLU] module de recherche multicriteres php

par mbmk92 » 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 ';

Re: [RESOLU] module de recherche multicriteres php

par mbmk92 » 27 juin 2013, 11:57

Bonjour merci pour ce forum il m'a infiniment aidé. Mai je rencontre un problème au niveau de la page suivante. S'il te plait daddevil peut tu me montrer ton code final?

Re: module de recherche multicriteres php

par baddevil » 03 déc. 2012, 18:50

effectivement j ai viré les declarations de variables en post et ajouté if (isset($_POST['action']))

et les erreurs sont plus la ouffff

merci a toi pour ton aide =D> :D

Re: module de recherche multicriteres php

par Saian » 03 déc. 2012, 18:36

L'exemple de code que j'ai écris n'est pas sensé te faire du undefined index Marque étant donné que l'index n'est jamais directement attaqué... (il est extrait de $_SESSION['criteres'] si l'index a bien été définit et c'est bien pour le cas ou l'index n'est pas définit que j'ai ajouté du isset sur chaque critère) sauf erreur de ma part tu n'as pas du bien comprendre le principe.
Oublie les $marque=$_POST["Marque"]; etc. Bien entendu il peut y avoir des erreurs dans mon code ne l'ayant pas testé, mais le principe est la. Si tu comprends le principe tu dois pouvoir corriger les éventuelles erreurs qui seraient dans mon code.
if(isset($_POST['action'])) // si le formulaire est soumis on stocke les paramètres dans la session
  $_SESSION['criteres'] = $_POST;

if(isset($_SESSION['criteres'])) // condition tant que le visiteur n'a pas encore touché aux critères et que donc $_SESSION['criteres'] n'existe pas, on ne peut pas extraire les paramètres
  extract($_SESSION['criteres']);// extraction des critères de recherche

// on récupère les critères sélectionnés
$choix = array();
// si la variable est présente, on lui affecte une place dans le tableau 'choix[]', qui nous servira ensuite à construire le WHERE de la requête.
if(isset($marque) && !empty($marque))// ajout du isset car tant qu'on a pas choisi de critère, on ne peut pas les extraires et donc la variable n'existe pas
  $choix[] = "Marque = '$marque'";
if(isset($Energie) && !empty($Energie))
  $choix[] = "Energie = '$Energie'";
// etc, pour chaque critère en respectant la casse des noms de variable bien entendu

$requete = 'SELECT * FROM autotran WHERE '.implode(' AND ', $choix);

Re: module de recherche multicriteres php

par baddevil » 03 déc. 2012, 18:18

alors j ai fais comme tu ma dit et la j ai bien la page suivante avec le reste de la recherche
mais avec des erreurs en primes lol

Notice: Undefined index: Marque
et cela pour chaque criteres

Re: module de recherche multicriteres php

par Saian » 03 déc. 2012, 17:31

Ben oui $_POST['action'] n'est pas défini et donc ça ne passe pas dans le if ! tu dois revoir la condition qui permet de rentrer dans la "procédure".
En fait je dirai même que tu dois toujours exécuter la procédure de construction de la requête et son exécution.
La seule chose que tu vas conditionner sur la soumission du formulaire c'est l'écrasement de $_SESSION['criteres'].
if($_POST['action']) // si le formulaire est soumis on stocke les paramètres dans la session
  $_SESSION['criteres'] = $_POST;

if(isset($_SESSION['criteres'])) // condition tant que le visiteur n'a encore pas touché aux critères et que donc $_SESSION['criteres'] n'existe pas, on ne peut pas extraire les paramètres
  extract($_SESSION['criteres']);// extraction des critères de recherche

// on récupère les critères sélectionnés
$choix = array();
// si la variable est présente, on lui affecte une place dans le tableau 'choix[]', qui nous servira ensuite à construire le WHERE de la requête.
if(isset($marque) && !empty($marque))// ajout du isset car tant qu'on a pas choisi de critère, on ne peut pas les extraires et donc la variable n'existe pas
  $choix[] = "Marque = '$marque'";
if(isset($Energie) && !empty($Energie))
  $choix[] = "Energie = '$Energie'";
// etc

Re: module de recherche multicriteres php

par baddevil » 03 déc. 2012, 17:29

Sans "s". ;)
merci

par contre maintenant j ai une jolie page blanche que je clik sur page suivante

j ai fais ceci
if (isset($_POST['action']))
  {
                  $marque=$_POST["Marque"];
                  $Energie=$_POST["Energie"];
                  $prix_mini=$_POST["prix_mini"];
                  $prix_maxi=$_POST["prix_maxi"];
                  $kilometrage_mini=$_POST["kilometrage_mini"];
                  $kilometrage_maxi=$_POST["kilometrage_maxi"];
                  $annee_min=$_POST["annee_min"];
                  $annee_max=$_POST["annee_max"];
            // on récupère les critères sélectionnés
                  $choix = array(); 
                 // si la variable est présente, on lui affecte une place dans le tableau 'choix[]', qui nous servira ensuite à construire le WHERE de la requête.
                  if(!empty($marque))
                   { $choix[] = "Marque = '$marque'"; }
                  if(!empty($Energie))
                   { $choix[] = "Energie = '$Energie'"; }
                  if(!empty($prix_mini))
                   { $choix[] = "Prix_public >= '$prix_mini'"; }
                  if(!empty($prix_maxi))
                   { $choix[] = "Prix_public <= '$prix_maxi'"; }
                  if(!empty($kilometrage_mini))
                   { $choix[] = "Kilometrage >= '$kilometrage_mini'"; }
                  if(!empty($kilometrage_maxi))
                   { $choix[] = "Kilometrage <= '$kilometrage_maxi'"; }
                  if(!empty($annee_min))
                   { $choix[] = "Millesime >= '$annee_min'"; }
                  if(!empty($annee_max))
                   { $choix[] = "Millesime <= '$annee_max'"; }
                   




                   $critere = implode(' AND ', $choix);
                     
 
                   $_SESSION['criteres'] = $_POST;
                   
                    extract($_SESSION['criteres']);




Re: module de recherche multicriteres php

par xTG » 03 déc. 2012, 17:15

Sans "s". ;)

Re: module de recherche multicriteres php

par baddevil » 03 déc. 2012, 17:12

bonjour,

j ai cette erreur avec extracts()
Fatal error: Call to undefined function extracts()