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>';
	}
}