[Tableaux] Problème de valeur dans un tableau (array)
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:
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:
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>';
}
} |