A voir également:
- Recherche avec checkbox
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Recherche adresse - Guide
- Recherche musique - Guide
- Recherche avec photo - Guide
- Recherche privée - Guide
3 réponses
PoZiF
Messages postés
6
Date d'inscription
mardi 29 juin 2010
Statut
Membre
Dernière intervention
30 juin 2010
Modifié par PoZiF le 29/06/2010 à 09:39
Modifié par PoZiF le 29/06/2010 à 09:39
A quoi correspond la fonction chargelistes() ? Car pour une une liste déroulante le code est le suivant (entre des balises form)
Sinon pour les Buttons Radio, ils ont tout les deux les mêmes noms, donc seulement 1 des 2 peut être coché, donc il suffit de récupérer ça valeur
Il ne te reste plus que à faire ta requête SQL en sélectionnant en utilisant
Sinon tu as une erreur dans ton 2ème code (souligne et en gras) :
<SELECT name="nom" size="1"> <OPTION value="1">1</OPTION> <OPTION value="2">2</OPTION> </SELECT>
Sinon pour les Buttons Radio, ils ont tout les deux les mêmes noms, donc seulement 1 des 2 peut être coché, donc il suffit de récupérer ça valeur
$critere = $_POST['Gpe_filtre'];
Il ne te reste plus que à faire ta requête SQL en sélectionnant en utilisant
WHERE critere = '$critere'
Sinon tu as une erreur dans ton 2ème code (souligne et en gras) :
IF ( isset($_POST[$field]) && $_POST[$field] !== '' )
PoZiF
Messages postés
6
Date d'inscription
mardi 29 juin 2010
Statut
Membre
Dernière intervention
30 juin 2010
29 juin 2010 à 10:53
29 juin 2010 à 10:53
Oki. Je bosse pas cette aprm donc j'y jeterai un coup d'oeil ;) J'ai du code à finir aussi
PoZiF
Messages postés
6
Date d'inscription
mardi 29 juin 2010
Statut
Membre
Dernière intervention
30 juin 2010
29 juin 2010 à 14:22
29 juin 2010 à 14:22
Dans ta partie requêtes ta cela :
Ton tableau $fields n'est plus bon du coup, car dans ton code de tes checkbox ont tous pour name="Gpe_filtre" et ton tableau ne le comporte pas
$fields = array('fsq_id', 'fsq_origine', 'fsq_pilote', 'fsq_resp_meo', 'fsq_etat', 'fsq_date_rq', 'fsq_date_dd', 'fsq_type_proc', 'fsq_date_cur' ) ; // Champs $query = 'SELECT * FROM fsq WHERE 1 = 1' ; foreach ($fields AS $field ) { IF ( isset($_POST[$field]) && $_POST[$field] !== '' ) { // IGNORE les champs vides $query .= " AND $field = '{$_POST[$field]}'" ; } }
Ton tableau $fields n'est plus bon du coup, car dans ton code de tes checkbox ont tous pour name="Gpe_filtre" et ton tableau ne le comporte pas
PoZiF
Messages postés
6
Date d'inscription
mardi 29 juin 2010
Statut
Membre
Dernière intervention
30 juin 2010
29 juin 2010 à 14:42
29 juin 2010 à 14:42
Le mieux c'est de faire un peu comme ça :
Après pour ta requête soit tu vérifie la si la checkbox est initialisé, et si oui ça valeur, ou alors tu donnes a chaque checkbox un name différent, ça te te permet de réutiliser le tabeau $fiels .
<form method="post"> <input type="checkbox" name="a[]" value="fsq_id">1 <input type="checkbox" name="a[]" value="fsq_origine">2 <input type="checkbox" name="a[]" value="fsq_pilote">3 <!-- Important la [], sinon tu ne transmettra qu'une valeur de checkbox --> <input type="submit"> </form> <?php if(isset($_POST['a'])) { $a[] = $_POST['a']; //tu récupère les valeurs coches sous forme de tableau } ?>
Après pour ta requête soit tu vérifie la si la checkbox est initialisé, et si oui ça valeur, ou alors tu donnes a chaque checkbox un name différent, ça te te permet de réutiliser le tabeau $fiels .
<?php if(isset($_POST['a'])) { $a[] = $_POST['a']; //tu récupère les valeurs coches sous forme de tableau } ?>
je mets ça ou?
Sinon le code suivant
<input name="Gpe_filtre" type="checkbox" value="numero" onclick='affiche(this,"numero");enlever(this,"lib_origine");enlever(this,"lib_theme");enlever(this,"lib_pilote");enlever(this,"lib_plan");enlever(this,"lib_etat");enlever(this,"lib_création");enlever(this,"lib_prise_pilote");enlever(this,"lib_cura")'/>
Il sert juste a faire apparaitre la liste déroulente je sais pas si tu avais compris? quand tu coche la case la liste deroulante apparait et ensuite tu peux faire la selection =).
Toutes les checkbox avec qui on pour name:Gpe_filtre ont tous la meme fonctionnalité en aucun elles ne servent à rechercher.
<!--Traitement de fiche Curative --> <tr> <td><label> <div align="right" id="lib_cura" style="display:block"> Traitement de fiche Curative <input type="checkbox" name="fsq_date_cur" value="fsq_date_cur" onclick='affiche(this,"fsq_date_cur");enlever(this,"lib_numero");' /> </div> </label></td> </tr> </tr> <!--Traitement par plan d'action --> <tr> <td><label> <div align="right" id="lib_act" style="display:block"> Traitement par plan d'action <input type="checkbox" name="fsq_date_cur" value="fsq_amelioration_pilote" onclick='affiche(this,"fsq_amelioration_pilote");enlever(this,"lib_numero");' /> </div> </label></td> </tr>
Voila pour le form ensuite pour la requete dans la page res_filtre_multi.php
$fields = array('fsq_id', 'fsq_origine', 'fsq_pilote', 'fsq_resp_meo', 'fsq_etat', 'fsq_date_rq', 'fsq_date_dd', 'fsq_type_proc', 'fsq_date_cur', 'fsq_amelioration_pilote' ) ; // Champs <form>/BdD $query = 'SELECT * FROM fsq WHERE 1 = 1' ; foreach ($fields AS $field ) { IF ( isset($_POST[$field]) && $_POST[$field] !== '' ) { // IGNORE les champs vides $query .= " AND $field = '{$_POST[$field]}'" ; } }
J'ai rajouté les valeur de ma table ( fsq_date_cur et ,fsq_amelioration) qui corresponde respectivement aux fiche traiter en curative et au fiche traiter avec un plan d'action. Mais ceci ne fonctionne pas. Il m'affiche que aucune fiche ne correponds a ce critere ...
Je ne sais pas ou tu veux que je place ton "if isset $_post"
Tu dois te demander pourquoi il ne le fait pas avec la methode select vu que sa marche!^^? Car les valeurs de "fsq_date_cur" sont des dates..Donc si je fais avec un select je pourrais choisir qu'une fiche vu que la selection se fait pas date! Pareil pour la fsq_amelioration_pilote les valeurs qu'elle contient sont des commentaires(plan d'action) donc faire une selection des plan d'action mis en place ce n'est pas le top xD et pareil il va m'affiche qu'une fiche car c'est rare que les pilote établissent le même plan d'action âu caractère pres =p. Donc c'est pour il faut que je le fasse avec une checkbox afin qu'il me liste tes fiches qui ont été traité en curative ou par un plan d'action . Et je n'y arrive pas je galere deouis pas mal de temps sur sa now!
PoZiF
Messages postés
6
Date d'inscription
mardi 29 juin 2010
Statut
Membre
Dernière intervention
30 juin 2010
30 juin 2010 à 12:51
30 juin 2010 à 12:51
Je comprend pas ce que tu veux faire. Ton problème est au niveau de la requetes ou du xhtml lui même ?
Si j'ai bien compris Tu as 2 checkbox : A et B
Si A est coché, tu montres les selects 1 et 2
Si B est coché, tu montres les selects 3 et 4
C'est ça ?
Si j'ai bien compris Tu as 2 checkbox : A et B
Si A est coché, tu montres les selects 1 et 2
Si B est coché, tu montres les selects 3 et 4
C'est ça ?
Non du tout sa c'est déja fait ^^. Je veux juste que quand on clique sur une checkbox. Par exemple quand je clique sur la checkbox qui définie les fiche traiter en curative ( dont l'entité est 'fsq_date_cur') il m'affiche seulement les fiches qui ont été traiter en curative!Mais je ne
trouve pas comment faire ... y'a pas moyen de faire de mettre du php dans unje checkbox comme avec les select? sa serais plus simple . Sinon je ne vois toujours pas comment faut faire...
trouve pas comment faire ... y'a pas moyen de faire de mettre du php dans unje checkbox comme avec les select? sa serais plus simple . Sinon je ne vois toujours pas comment faut faire...
29 juin 2010 à 10:15
La fonction chargeliste permet de charger les valeurs de ma table et ainsi afficher les différentes valeurs.
En ce qui concerne le code pour la liste deroulante j'ai toujours fait comme sa.^^
Ensuite, le code de la checkbox que tu vois dans mon code permet d'afficher une liste déroulante !^^
C'est assez dure à expliquer. Je voudrais que lorsque que j'ai coché la case et ensuite cliquer sur le bouton 'recherche' il me recherche le nouveau critere mis en place j'avais essayé comme sa :
'fsq_date_cur' etant une valeur de ma table 'fsq'.
Je vais essayé avec ce que tu m'a mis mais le probleme c'est que je ne vois pas dans quelle page faire la requete!(filtre_multi ou res_filtre_multi)?
29 juin 2010 à 10:36
- Tu as tes 2 listes déroulantes et ton groupe de checkbox pouvant avoir 2 valeurs, le tout dans une <form method="post">...</form>
- Tu chopes les valeurs de tes listes déroulantes et de tes checkbox.
- Tu exécutes ta requêtes pour choper les éléments correspondant.
- Et là tu affiches ce que ta requête à renvoyer, et ceux, sur la même page.
Là tu auras belle et bien une recherche filtrée. Au pire envoie moi tes fichiers et ta table sur l'adresse mail que je t'ai filé sur FB.
Modifié par Jérémy le 29/06/2010 à 10:59
sa c'est la page 'filtre_multi.php' (contient tout les criteres de selection)
ensuite je vais te passer la page res_filtre multi (contient le tableau avec la liste des fiche et autre info xD)
Le probleme comme tu le vois y'a un <?php require ('qualite.inc'); ?> =P tu me dira si tu en a besoins .(je pense que oui)
sinon voila ma table SQL 'fsq'
edit: ups j'ai oublié la page avec le tableau des valeur lister et la requete!
c'est la page (res_filtre_multi.php) :
logiquement tu n'as pas besoins de la modifier j'ai déja fait appel au valeur de la table dans le array!.
Voila mon ptit flo, ta vu c'est des code de fou xD!
29 juin 2010 à 11:02