Bonjour,
Je me permets de poster ici pour avoir quelques lumières.
Je souhaite présenter dans un tableau les commandes en cours.
Avec le fournisseur, la référence du produit, l'année ...
L'affichage est ok, j'arrive aussi a afficher le nom / prenom du client en fonction de son id (chose sur laquelle j'ai bloqué un petit moment (novice inside).
Maintenant je souhaite ajouter des options de tri à mon tableau.
1. n'afficher que les commandes du fournisseur X, avec une liste déroulante, ca c'est ok.
Par contre quand je souhaite trier et par fournisseur et par année, les choses se compliquent.
Voici pour moi l'algorythmique de la chose.
Voici mon code pour le formulaire de départ :Si le fournisseur est défini
{
je test les variables pour vérifier.
requete sql de selection des commandes avec le fournisseur x.
}
ET SI Année est définie
{
je test les variables pour vérifier.
requete sql de selection des commandes avec le fournisseur x ET l'année X
}
Sinon
{
Afficher le choix de l'année
}
FinSi
Sinon
{
je montre la liste déroulante pour qu'on puisse choisir le fournisseur
}
FIN
Et le formulaire qui va traiter avec l'année, la référence produit ...
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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245 <link href="../../style.css" rel="stylesheet" type="text/css" /> <form action="?action=commande_consulter_1" method="post" onSubmit="return checkrequired(this)"> <table align="left"> <tr> <td class="colone_b Style1"></td> <td class="colone_a Style1">Consultation / Recherche Cmdes. <input type="text" name="Mot" size="15"> <input type="submit" value="Rechercher" alt="Lancer la recherche!"> <br> <br> <?php //////////////////////////////////////////////////////////////// // définir le jour en cours. $jour = date('Y-m-d'); //////////////////////////////////////////////////////////////// // sélectionner les rdv. $totalcmde=mysql_query('SELECT COUNT(*) AS total FROM commandes WHERE statut="" '); $donnees_totalcmde=mysql_fetch_assoc($totalcmde); $totalcmde=$donnees_totalcmde['total']; echo 'TOTAL DES COMMANDES EN COURS : '.$totalcmde.'<br>'; /* fonction pour les commandes terminées */ $totallivree=mysql_query('SELECT COUNT(*) AS total FROM commandes WHERE statut="livre" '); $donnees_totallivree=mysql_fetch_assoc($totallivree); $totallivree=$donnees_totallivree['total']; echo 'Commandes livrées : '.$totallivree.'<br>'; echo '------------------------------<br>'; echo 'Actions : <br>'; echo '<a href="clients.php?action=consulter_rdv&condition=cejour">Afficher les commandes terminées / livrée </a><br>'; echo '<a href="clients.php?action=consulter_rdv&condition=cejour">Afficher les commandes qui doivent arriver </a><br>'; /////////////////////////////////////////////// // Fonction d'affichage de tous les rendezvous /////////////////////////////////////////////// if (isset($_POST['id'])) afficher_rdv($_POST['id']); $retour_total=mysql_query('SELECT COUNT(*) AS total FROM commandes'); $donnees_total=mysql_fetch_assoc($retour_total); $total=$donnees_total['total']; $messagesParPage=10; $nombreDePages=ceil($total/$messagesParPage); if(isset($_GET['page'])) // Si la variable $_GET['page'] existe... { $pageActuelle=intval($_GET['page']); if($pageActuelle>$nombreDePages) // Si la valeur de $pageActuelle (le numéro de la page) est plus grande que $nombreDePages... { $pageActuelle=$nombreDePages; } } else // Sinon { $pageActuelle=1; // La page actuelle est la n°1 } //Fonction de calcul pour la pagination. $premiereEntree=($pageActuelle-1)*$messagesParPage; // On calcul la première entrée à lire //Listing des conditions // if ((empty($_GET["condition"]))) { $select = ' SELECT commandes.id, commandes.idfournisseur, commandes.idannee, commandes.refproduit, commandes.type, commandes.taille, commandes.couleur, commandes.accessoires, commandes.informations, commandes.datelivraison, commandes.collaborateur, commandes.magasin, commandes.motif, commandes.idclient, commandes.datecommande FROM commandes ORDER BY id ASC LIMIT '.$premiereEntree.', '.$messagesParPage.''; $result = mysql_query($select) or die ('Erreur : '.mysql_error() ); $total = mysql_num_rows($result); echo ''; //INNER JOIN clients ON rdv_date.client = clients.id } ?> <hr /> <br> Options de Tri pour les Commandes : <br><br> <form action="commande_consulter_1.php" method="post"> 1. Sélectionner le fournisseur. <? /* 1. Sélectionner le fournisseur. */ echo '<select name="fournisseur">'; mysql_select_db('gestion',$db); $SQL = "SELECT id,nom FROM fournisseur"; $res = mysql_query($SQL); while($val=mysql_fetch_array($res)) { echo "<option value=".$val["id"].">".$val["nom"]."</option>\n"; } echo '</select>'; echo '<input type="submit" Value="Trier"><br>'; ?> 2. Sélectionner l'année<br> 3. Sélectionner la référence.<br> 4. Sélectionner la taille.<br> 5. Sélectionner le coloris.<br> 6. Sélectionner le type.<br> <br> <br> <? /* Fonction de Tri pour le tableau */ /* 2. Sélectionner l'année< */ /* 3. Sélectionner la référence.< */ /* 4. Sélectionner la taille. */ /* 5. Sélectionner le coloris.< */ /* 6. Sélectionner le type.< */ /* Fin de la fonction de recherche des commandes. */ // si on a récupéré un résultat on l'affiche. if($total) { // debut du tableau echo '<table width="100%" class="client" border="0" cellspacing="0" cellpadding="0">'."\n"; // première ligne on affiche les titres prénom et surnom dans 2 colonnes echo '<tr class="toprow">'; echo '<td class="toprow"><b><u>N° Cmde </u><br></td>'; echo '<td class="toprow"><b><u>Fournisseur</u></b> - </td>'; echo '<td class="toprow"><b><u>Référence</u></b> - </td>'; echo '<td class="toprow"><b><u>Taille</u></b> - </td>'; echo '<td class="toprow"><b><u>Type</u></b> - </td>'; echo '<td class="toprow"><b><u>Couleur</u></b> - </td>'; echo '<td class="toprow"><b><u>Le Client</u></b> - </td>'; echo '<td class="toprow"><b><u>Date Cmde</u></b> - </td>'; echo '<td class="toprow"><b><u>Date Livraison</u></b> - </td>'; echo '<td class="toprow"><b><u>Magasin</u></b> - </td>'; echo '<td class="toprow"><b><u>Modifier</u></b> - </td>'; echo '<td class="toprow"><b><u>Consulter</u></b> - </td>'; echo '</tr>'."\n"; // lecture et affichage des résultats sur 2 colonnes, 1 résultat par ligne. while($row = mysql_fetch_array($result)) { /* Requete pour la sélection des données clients dans la table Client suivant IdCLIENT de la table commande */ $client2=mysql_query('SELECT nom, prenom, nomm FROM clients WHERE id='.$row['idclient'].' ;') or die('<span style="color:#F00;">Erreur lors d\'une requette MYSQL !<br /> <img src="imgs/messagebox_critical.png" alt="ERREUR" /> l\'erreur s\'est produite à la ligne : <u>'.__LINE__.'</u>, dans le fichier <u>"'. __FILE__.'"</u>.</span><br />'.mysql_error()); $infoclient=mysql_fetch_array($client2); /* FIN */ /* Requete pour la sélection des données clients dans la table Client suivant IdCLIENT de la table commande */ $fournisseur=mysql_query('SELECT nom FROM fournisseur WHERE id='.$row['idfournisseur'].' ;') or die('<span style="color:#F00;">Erreur lors d\'une requette MYSQL !<br /> <img src="imgs/messagebox_critical.png" alt="ERREUR" /> l\'erreur s\'est produite à la ligne : <u>'.__LINE__.'</u>, dans le fichier <u>"'. __FILE__.'"</u>.</span><br />'.mysql_error()); $infofournisseur=mysql_fetch_array($fournisseur); /* FIN */ /* Les Données du Tableau */ echo '<tr>'; echo '<td class="leftcol"><div class="intro">'.$row["id"].'</div></td>'; echo '<td class="data"><div class="intro">'.$infofournisseur["nom"].'</div></td>'; echo '<td class="data"><div class="intro">'.$row["refproduit"].'</div></td>'; echo '<td class="data"><div class="intro">'.$row["taille"].'</div></td>'; echo '<td class="data"><div class="intro">'.$row["type"].'</div></td>'; echo '<td class="data"><div class="intro">'.$row["couleur"].'</div></td>'; echo '<td class="data"><div class="intro">'.$row["idclient"].'-- '.$infoclient["nom"].' --'.$infoclient["prenom"].'</div></td>'; echo '<td class="data"><div class="intro">'.$row["datecommande"].'</div></td>'; echo '<td class="data"><div class="intro">'.$row["datelivraison"].'</div></td>'; echo '<td class="data"><div class="intro">'.$row["magasin"].'</div></td>'; //LIENS echo '<td class="data"><div class="intro"><a href="clients.php?action=consulter_rdv_details&id='.$row["id"].'">Modifier</a></div></td>'; echo '<td class="data"><div class="intro"><a href="clients.php?action=consulter_rdv_details&id='.$row["id"].'">Consulter</a></div></td>'; echo '</tr>'."\n"; } } echo '</table>'."\n"; echo '' . $total .' Commandes sur cette page sur un total de ' .$totalcmde.' Commandes'; // fin du tableau. echo '<p align="center">Page : '; //Pour l'affichage, on centre la liste des pages for($i=1; $i<=$nombreDePages; $i++) //On fait notre boucle { //On va faire notre condition if($i==$pageActuelle) //Si il s'agit de la page actuelle... { echo ' [ '.$i.' ] '; } else //Sinon... { echo ' <a href="commandes.php?action=commande_consulter&page='.$i.'">'.$i.'</a> '; } } echo '</p>'; // on libère le résultat mysql_free_result($result); ?> </td> </tr> <tr> <td></td> </form>
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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318 <? /*Récupération des anciennes fonctions de la page pour le tri ET la pagination. */ //////////////////////////////////////////////////////////////// // définir le jour en cours. $jour = date('Y-m-d'); //////////////////////////////////////////////////////////////// // sélectionner les rdv. $totalcmde=mysql_query('SELECT COUNT(*) AS total FROM commandes WHERE statut="" '); $donnees_totalcmde=mysql_fetch_assoc($totalcmde); $totalcmde=$donnees_totalcmde['total']; echo 'TOTAL DES COMMANDES EN COURS : '.$totalcmde.'<br>'; /* fonction pour les commandes terminées */ $totallivree=mysql_query('SELECT COUNT(*) AS total FROM commandes WHERE statut="livre" '); $donnees_totallivree=mysql_fetch_assoc($totallivree); $totallivree=$donnees_totallivree['total']; echo 'Commandes livrées : '.$totallivree.'<br>'; echo '------------------------------<br>'; echo 'Actions : <br>'; /////////////////////////////////////////////// // Fonction d'affichage de tous les rendezvous /////////////////////////////////////////////// if (isset($_POST['id'])) afficher_rdv($_POST['id']); $retour_total=mysql_query('SELECT COUNT(*) AS total FROM commandes'); $donnees_total=mysql_fetch_assoc($retour_total); $total=$donnees_total['total']; $messagesParPage=10; $nombreDePages=ceil($total/$messagesParPage); if(isset($_GET['page'])) // Si la variable $_GET['page'] existe... { $pageActuelle=intval($_GET['page']); if($pageActuelle>$nombreDePages) // Si la valeur de $pageActuelle (le numéro de la page) est plus grande que $nombreDePages... { $pageActuelle=$nombreDePages; } } else // Sinon { $pageActuelle=1; // La page actuelle est la n°1 } //Fonction de calcul pour la pagination. $premiereEntree=($pageActuelle-1)*$messagesParPage; // On calcul la première entrée à lire /* Fin du Code qui ne changera pas*/ ////////////////////////////////////////// ///////////////////////////////////////// /* FONCTIONS DE TRIAGE */ /////////////////////////////////////// ////////////////////////////////////// if (isset($_POST['fournisseur'])) { /* Fournisseur définie */ echo 'fournisseur défini <br> Donc il faut choisir l annee Svp'; ////////////////////// /* Test des Variables Fournies par le formulaire*/ echo '<br>Id fournisseur : '; echo '' .$_POST['fournisseur']. '<br>'; $fournisseur = $_POST['fournisseur']; echo '<br>$fournisseur = '; echo $fournisseur; echo '<br>'; ////////////////////// /* requete SQL avec le fournisseur */ $select = ' SELECT commandes.id, commandes.idfournisseur, commandes.idannee, commandes.refproduit, commandes.type, commandes.taille, commandes.couleur, commandes.accessoires, commandes.informations, commandes.datelivraison, commandes.collaborateur, commandes.magasin, commandes.motif, commandes.idclient, commandes.datecommande FROM commandes WHERE commandes.idfournisseur = '.$fournisseur.' ORDER BY id ASC LIMIT '.$premiereEntree.', '.$messagesParPage.''; $result = mysql_query($select) or die ('Erreur : '.mysql_error() ); $total = mysql_num_rows($result); echo 'Tri par Fournisseur'; ////////////////////// /* ANNEE */ if (isset($_POST['annee'])) { /* Fournisseur définie */ echo 'Année déja définie, sélectionnez donc la référence produit'; /* TEST VARIABLE FRS */ echo '<br>test variable fournisseur si l annee est definie. '; echo $fournisseur; ////////////////////// /* Test des Variables Fournies par le formulaire*/ echo '<br>Id ANNEE : '; echo '' .$_POST['annee']. '<br>'; $annee = $_POST['annee']; echo '<br>$annee = '; echo $annee; echo '<br>'; $fournisseur =''; ////////////////////// /* requete SQL avec le fournisseur */ $select = ' SELECT commandes.id, commandes.idfournisseur, commandes.idannee, commandes.refproduit, commandes.type, commandes.taille, commandes.couleur, commandes.accessoires, commandes.informations, commandes.datelivraison, commandes.collaborateur, commandes.magasin, commandes.motif, commandes.idclient, commandes.datecommande FROM commandes WHERE commandes.idfournisseur = '.$fournisseur.' WHERE commandes.idannee = '.$fournisseur.' ORDER BY id ASC LIMIT '.$premiereEntree.', '.$messagesParPage.''; $result = mysql_query($select) or die ('Erreur : '.mysql_error() ); $total = mysql_num_rows($result); echo 'Tri par Fournisseur ET par Annee'; //////////////////////FIN REQUETE } else { /* TEST VARIABLE FRS */ echo '<br>test variable fournisseur avant l envoi du formulaire avec l annee. '; echo $fournisseur; /* Afficher la liste déroulante avec la liste des annees */ echo '<form action="commandes.php?action=commande_consulter_1" method="post">'; echo "<div align='left'>2. Sélectionnez l'annee "; /* 1. Sélectionner le l'annee. */ /* le fournisseur na pas été sélectionné donc on affiche le formulaire */ echo '<select name="annee">'; mysql_select_db('gestion',$db); $SQL = "SELECT id,annee from ANNEE"; $res = mysql_query($SQL); while($val=mysql_fetch_array($res)) { echo "<option value=".$val["id"].">".$val["annee"]."</option>\n"; } echo '</select>'; echo '<input type="submit" Value="Trier"><br></form>'; } /* FIN ANNEE */ } else { /* Afficher la liste déroulante avec la liste des fournisseurs */ echo "<div align='left'>1. Sélectionner le fournisseur "; /* 1. Sélectionner le fournisseur. */ /* le fournisseur na pas été sélectionné donc on affiche le formulaire */ echo '<select name="fournisseur">'; mysql_select_db('gestion',$db); $SQL = "SELECT id,nom FROM fournisseur"; $res = mysql_query($SQL); while($val=mysql_fetch_array($res)) { echo "<option value=".$val["id"].">".$val["nom"]."</option>\n"; } echo '</select>'; echo '<input type="submit" Value="Trier"><br></form>'; } /*FIN FOURNISSEUR */ ///////////////////////////////////// /* test des variables recues */ /* echo 'annee : '; echo $annee; echo '<br> fournisseur : '; echo $fournisseur; */ ////////////////////////////////////////// ///////////////////////////////////////// /* FONCTIONS TABLO */ /////////////////////////////////////// ////////////////////////////////////// // si on a récupéré un résultat on l'affiche dans un tableau if($total) { // debut du tableau echo '<table width="100%" class="client" border="0" cellspacing="0" cellpadding="0">'."\n"; // première ligne on affiche les titres prénom et surnom dans 2 colonnes echo '<tr class="toprow">'; echo '<td class="toprow"><b><u>N° Cmde </u><br></td>'; echo '<td class="toprow"><b><u>Fournisseur</u></b> - </td>'; echo '<td class="toprow"><b><u>Référence</u></b> - </td>'; echo '<td class="toprow"><b><u>Taille</u></b> - </td>'; echo '<td class="toprow"><b><u>Type</u></b> - </td>'; echo '<td class="toprow"><b><u>Couleur</u></b> - </td>'; echo '<td class="toprow"><b><u>Le Client</u></b> - </td>'; echo '<td class="toprow"><b><u>Date Cmde</u></b> - </td>'; echo '<td class="toprow"><b><u>Date Livraison</u></b> - </td>'; echo '<td class="toprow"><b><u>Magasin</u></b> - </td>'; echo '<td class="toprow"><b><u>Modifier</u></b> - </td>'; echo '<td class="toprow"><b><u>Consulter</u></b> - </td>'; echo '</tr>'."\n"; // lecture et affichage des résultats sur 2 colonnes, 1 résultat par ligne. while($row = mysql_fetch_array($result)) { /* Requete pour la sélection des données clients dans la table Client suivant IdCLIENT de la table commande */ $client2=mysql_query('SELECT nom, prenom, nomm FROM clients WHERE id='.$row['idclient'].' ;') or die('<span style="color:#F00;">Erreur lors d\'une requette MYSQL !<br /> <img src="imgs/messagebox_critical.png" alt="ERREUR" /> l\'erreur s\'est produite à la ligne : <u>'.__LINE__.'</u>, dans le fichier <u>"'. __FILE__.'"</u>.</span><br />'.mysql_error()); $infoclient=mysql_fetch_array($client2); /* FIN */ /* Requete pour la sélection des données clients dans la table Client suivant IdCLIENT de la table commande */ $fournisseur=mysql_query('SELECT nom FROM fournisseur WHERE id='.$row['idfournisseur'].' ;') or die('<span style="color:#F00;">Erreur lors d\'une requette MYSQL !<br /> <img src="imgs/messagebox_critical.png" alt="ERREUR" /> l\'erreur s\'est produite à la ligne : <u>'.__LINE__.'</u>, dans le fichier <u>"'. __FILE__.'"</u>.</span><br />'.mysql_error()); $infofournisseur=mysql_fetch_array($fournisseur); /* FIN */ /* Les Données du Tableau */ echo '<tr>'; echo '<td class="leftcol"><div class="intro">'.$row["id"].'</div></td>'; echo '<td class="data"><div class="intro">'.$infofournisseur["nom"].'</div></td>'; echo '<td class="data"><div class="intro">'.$row["refproduit"].'</div></td>'; echo '<td class="data"><div class="intro">'.$row["taille"].'</div></td>'; echo '<td class="data"><div class="intro">'.$row["type"].'</div></td>'; echo '<td class="data"><div class="intro">'.$row["couleur"].'</div></td>'; echo '<td class="data"><div class="intro">'.$row["idclient"].'-- '.$infoclient["nom"].' --'.$infoclient["prenom"].'</div></td>'; echo '<td class="data"><div class="intro">'.$row["datecommande"].'</div></td>'; echo '<td class="data"><div class="intro">'.$row["datelivraison"].'</div></td>'; echo '<td class="data"><div class="intro">'.$row["magasin"].'</div></td>'; //LIENS echo '<td class="data"><div class="intro"><a href="clients.php?action=consulter_rdv_details&id='.$row["id"].'">Modifier</a></div></td>'; echo '<td class="data"><div class="intro"><a href="clients.php?action=consulter_rdv_details&id='.$row["id"].'">Consulter</a></div></td>'; echo '</tr>'."\n"; } } echo '</table>'."\n"; echo '' . $total .' Commandes sur cette page sur un total de ' .$totalcmde.' Commandes'; // fin du tableau. echo '<p align="center">Page : '; //Pour l'affichage, on centre la liste des pages for($i=1; $i<=$nombreDePages; $i++) //On fait notre boucle { //On va faire notre condition if($i==$pageActuelle) //Si il s'agit de la page actuelle... { echo ' [ '.$i.' ] '; } else //Sinon... { echo ' <a href="commandes.php?action=commande_consulter&page='.$i.'">'.$i.'</a> '; } } echo '</p>'; // on libère le résultat mysql_free_result($result); ?>
Lorsque je sélectionnée l'énnae et que je clic pour trier j'ai ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Notice: Undefined variable: result in c:\program files\easyphp1-8\www\application\require\actions\commande_consulter_1.php on line 243 Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\program files\easyphp1-8\www\application\require\actions\commande_consulter_1.php on line 243 Notice: Undefined variable: result in c:\program files\easyphp1-8\www\application\require\actions\commande_consulter_1.php on line 316 Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in c:\program files\easyphp1-8\www\application\require\actions\commande_consulter_1.php on line 316
Si quelqu'un avait une idée pour m'aider ca serai super sympa.
Merci d'avance pour votre aide.
Plex
Partager