Bonjour,
Malgré pas mal d'heure de recherche sur les forums je n'ai pas trouvé la solution complète à mon problème.
Mon objectif : trier dans une table les enregistrements vérifiant 2 critères sélectionnés dans des menus déroulants (les éléments de chaque menu déroulant proviennent d'une table différente).Jusqu'ici je vois ce qu'il faut faire.
Si aucun des 2 critères n'est sélectionné c'est à dire si les menus déroulants restent sur "tout" la requête renvoie l'ensemble des enregistrements.Si un seul des 2 critères est activé la requête ne tient compte que de ce seul critère.
(Je me limite pour l'instant à 2 critères mais j'aimerai en mettre d'avantage.)
Tables utilisées:
affaires contenant:id, intitule,nature_tache,id_agent1,id_domaine
agents contenant:id, nom,prenom
domaines contenant:id,domaine
Pages php:
rech_multi_aff.php : formulaire de paramétrage de la requête. Méthode GET, 2 variables URL utilisées : $_GET['choix_pren'] et $_GET['choix_dom']
affic_rech_multi_aff.php : page d'affichage des résultats de la requête
Formulaire de sélection :
Page traitant les requêtes :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88 <?php require_once('Connections/ConnexionCCED.php'); ?> <?php if(!isset($_GET['choix_pren']))$_GET['choix_pren']=1; if(!isset($_GET['choix_dom']))$_GET['choix_dom']=1; //init d'utilisateurs si non déclaré ?> <?php mysql_select_db($database_ConnexionCCED, $ConnexionCCED); $query_rs_agent1 = "SELECT * FROM agents"; $rs_agent1 = mysql_query($query_rs_agent1, $ConnexionCCED) or die(mysql_error()); $row_rs_agent1 = mysql_fetch_assoc($rs_agent1); $totalRows_rs_agent1 = mysql_num_rows($rs_agent1); mysql_select_db($database_ConnexionCCED, $ConnexionCCED); $query_rs_dom = "SELECT * FROM domaines"; $rs_dom = mysql_query($query_rs_dom, $ConnexionCCED) or die(mysql_error()); $row_rs_dom = mysql_fetch_assoc($rs_dom); $totalRows_rs_dom = mysql_num_rows($rs_dom); ?> <!DOCTYPE html> <html lang="fr"> <head> <meta http-equiv="content-type" content="text/html; charset="utf-8" /> <link rel="stylesheet" href="style/style_def.css" /> <script src="script.js"></script> </head> <body> <div id="region_modif1"> <form name="form1" method="get" action="affic_rech_multi_aff.php"> <table width="200" border="1"> <tr> <td>Agent1:</td> <td><select name="select" size="1" id="select"> <option value="0" <?php if (!(strcmp(0, $_GET['choix_pren']))) {echo "selected=\"selected\"";} ?>>TOUT</option> <?php do { ?> <option value="<?php echo $row_rs_agent1['id']?>"<?php if (!(strcmp($row_rs_agent1['id'], $_GET['choix_pren']))) {echo "selected=\"selected\"";} ?>><?php echo $row_rs_agent1['prenom']?></option> <?php } while ($row_rs_agent1 = mysql_fetch_assoc($rs_agent1)); $rows = mysql_num_rows($rs_agent1); if($rows > 0) { mysql_data_seek($rs_agent1, 0); $row_rs_agent1 = mysql_fetch_assoc($rs_agent1); } ?> </select></td> <td> </td> <td>Domaine:</td> <td><select name="select2" size="1" id="select2"> <option value="1" <?php if (!(strcmp(1, $_GET['choix_dom']))) {echo "selected=\"selected\"";} ?>>TOUT</option> <?php do { ?> <option value="<?php echo $row_rs_dom['id']?>"<?php if (!(strcmp($row_rs_dom['id'], $_GET['choix_dom']))) {echo "selected=\"selected\"";} ?>><?php echo $row_rs_dom['domaine']?></option> <?php } while ($row_rs_dom = mysql_fetch_assoc($rs_dom)); $rows = mysql_num_rows($rs_dom); if($rows > 0) { mysql_data_seek($rs_dom, 0); $row_rs_dom = mysql_fetch_assoc($rs_dom); } ?> </select></td> </tr> <tr> <td> </td> <td> </td> <td><input type="submit" name="button" id="button" value="Envoyer"></td> <td> </td> <td> </td> </tr> </table> <p> </p> </form> <p> </p></div> </body> </html> <?php mysql_free_result($rs_agent1); mysql_free_result($rs_dom); ?>
Problème :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104 <?php require_once('Connections/ConnexionCCED.php'); ?> <?php //init des variables si non déclarées if(!isset($_GET['choix_pren']))$_GET['choix_pren']=""; if(!isset($_GET['choix_dom']))$_GET['choix_dom']=""; ?> <?php //// Définitions de variables :/// $crit_1=$_GET['choix_pren']; $crit_2=$_GET['choix_dom']; //// Définitions des choix critère 1 et 2 activés ? ///// if (isset ($_GET['choix_pren'])) { $clause_crit_1_where="WHERE id_agent1=$crit_1"; $clause_crit_1_and="AND id_agent1=$crit_1"; } elseif (!isset($_GET['choix_pren'])) { $clause_crit_1_where==""; $clause_crit_1_and==""; } if (isset ($_GET['choix_dom'])) { $clause_crit_2_where="WHERE id_domaine=$crit_2"; $clause_crit_2_and="AND id_domaine=$crit_2"; } elseif (!isset ($_GET['choix_dom'])) { $clause_crit_2_where==""; $clause_crit_2_and==""; } //// Listes des requêtes//// mysql_select_db($database_ConnexionCCED, $ConnexionCCED); if ($crit_1=="" AND $crit_2=="") { //// La requête/// $requet="SELECT intitule,nature_tache,id_domaine,id_agent1 FROM affaires"; //// Son résultat //// $reponse= mysql_query($requet, $ConnexionCCED) or die(mysql_error()); $ligne = mysql_fetch_array($reponse); } elseif ($crit_1=="") { //// La requête/// $requet="SELECT intitule,nature_tache,id_domaine,id_agent1 FROM affaires WHERE id_domaine='$crit_2'"; //// Son résultat //// $reponse= mysql_query($requet, $ConnexionCCED) or die(mysql_error()); $ligne = mysql_fetch_array($reponse); } elseif ($crit_2=="") { //// La requête/// $requet="SELECT intitule,nature_tache,id_domaine,id_agent1 FROM affaires WHERE id_agent1='$crit_1'"; //// Son résultat //// $reponse= mysql_query($requet, $ConnexionCCED) or die(mysql_error()); $ligne = mysql_fetch_array($reponse); } else //// si les 2 critères ont été activés//// { //// La requête/// $requet="SELECT intitule,nature_tache,id_domaine,id_agent1 FROM affaires WHERE id_agent1='$crit_1' AND id_domaine='$crit_2'"; //// Son résultat //// $reponse= mysql_query($requet, $ConnexionCCED) or die(mysql_error()); $ligne = mysql_fetch_array($reponse); } ?> <!DOCTYPE html> <html lang="fr"> <head> <meta http-equiv="content-type" content="text/html; charset="utf-8" /> <link rel="stylesheet" href="style/style_def.css" /> <script src="script.js"></script> </head> <body> <div id="region_modif1"> <table id="tableau"> <tr> <td>intitule</td> <td>nature_tache</td> <td>id_domaine</td> <td>id_agent1</td> </tr> <?php do { ?> <tr> <td><?php echo $ligne['intitule']; ?></td> <td><?php echo $ligne['nature_tache']; ?></td> <td><?php echo $ligne['id_domaine']; ?></td> <td><?php echo $ligne['id_agent1']; ?></td> </tr> <?php } while ($ligne = mysql_fetch_array($reponse)); ?> </table> </div> </body> <!-- InstanceEnd --></html>
Quelle que soit la sélection des critère1 et critère 2 la requête renvoie systématiquement l'ensemble des enregistrements.
Pourtant le formulaire renvoie bien les 2 variables $_GET.
Je n'arrive pas à faire afficher le choix "tout" systématiquement au démarrage du formulaire
Merci d'avance pour votre aide.
Partager