Bonjour,
Voici mon problème.
Sur une page, j'affiche un certain nombre d'informations issues d'une base de donnée.
Certaines des données sont modifiables grâce à un formulaire dont vous trouverez l'extrait qui me pose un problème ci-dessous.
On dois d'abord cocher la checkbox correspondant à la ligne ou aux lignes que l'on souhaite modifier puis faire son choix dans la liste <select>.
Sachant que l'on a la possibilité de sélectionner une ou plusieures lignes à modifier, je stock les valeurs de mes checkbox et des <select> dans des tableaux (check[] et alert[]).
Ce qui se passe c'est qu'à l'envoi des données, le tableau alert[] enregistre non seulement les données des lignes cochées mais aussi celles des lignes non cochées.
Ce qui me donne ca :
Array check[] : Array ( [0] => 26 )
Array Alert[] : Array ( [0] => vert [1] => orange [2] => vert )
Alert : orange
Requete : UPDATE wst_install SET site_alert = 'vert' WHERE id = '26'
Alors que je devrais avoir ca :
Array check[] : Array ( [0] => 26 )
Array Alert[] : Array ( [0] => orange)
Alert : orange
Requete : UPDATE wst_install SET site_alert = 'orange' WHERE id = '26'
Auriez vous une idée de la raison pour laquelle le tableau alert[] enregistre toutes les valeurs de chaque lignes au lieu de m'enregistrer uniquement les valeurs de mes lignes sélectionnées ?
J'espère avoir été clair...
Ci-dessous mon formulaire et son traitement.
Merci
Formulaire :
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 <form method="POST" action="'.$_SERVER['PHP_SELF'].'">'; while ($voir = mysql_fetch_array($result)) { echo ' <tr bgcolor="#FFFFFF" class="tab_donnees" height="20px"> <td><input type="checkbox" name="check[]" value="'.$voir['id'].'"></td> <td> <select class="select" name="alert[]" size="1"> <option value="vert">Vert <option value="orange">Orange <option value="rouge">Rouge </select> </td> </tr>'; } echo ' </table> <br> <div class="div_rec"><input type="submit" class="rec_mods" value="Enregistrer les changements"></form>
Traitement du formulaire :
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 if ((isset($HTTP_POST_VARS['check']))&&(isset($HTTP_POST_VARS['alert']))) { $array_count = count($check); /*echo '<br>Nbre :'; echo $array_count; echo '<br>Nbre 2:'; echo $array_count2; echo '<br>';*/ for($y=0; $y<$array_count; $y++) { //echo 'OK2'; $db_conn = db_connect(); $requete = "UPDATE wst_install SET site_alert = '$alert[$y]' WHERE id = '$check[$y]'"; $result = mysql_query($requete); } if ($result == true) { echo '<div class="div-alert-b"><br>Changements effectués avec succès !<br><a href="javascript:history.go(-1)">Continuer</a><br><br>'; echo 'Tab Check : '; print_r($check); echo '<br>Tab Alert : '; print_r($alert); echo '<br>Alert : '; echo $alert[1]; echo '<br>Requete : '; echo $requete; echo ' <br><br></div>'; } if ($result == false) { echo '<div class="div-alert-b"><br>Changements impossible !<br><a href="javascript:history.go(-1)">Continuer</a><br><br></div>'; } }
Partager