Récupération de checkbox en "foreach"

Résolu/Fermé
Utilisateur anonyme - 24 nov. 2013 à 18:10
 Utilisateur anonyme - 24 nov. 2013 à 22:44
Bonsoir,

Je me tourne vers vous en dernier recours car mes nombreuses recherches sur la toile ne m'ont pas aidées...

J'ai plusieurs checkbox dans une page HTML/PHP et je souhaite enregistrer la valeur de chacun dans ma BDD via MySQL.

Problème --> PHP enregistre la valeur de la dernière case cochée.

Voici mon code :

<?php
 
if(isset($_POST["envoi"])) {
	$valeur = $_POST['$SMARTJOG'];
 
$insert= (isset($_POST["SMARTJOG"]))? $_POST["SMARTJOG"]:array(); //pour récupérer toutes les valeurs cochées des checkbox
 
foreach($insert as $SMARTJOG => $valeur)
 
//requête dans la table
$sql = "UPDATE etats_films SET etat_smartjog_vo='$valeur' , etat_smartjog_vf='$valeur', etat_smartjog_3d='$valeur' WHERE id='$id'";
  
mysql_query ($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error()); }
 
?>

    <input type="checkbox" id="checkbox-smartjog-1" name="SMARTJOG[]" class="regular-checkbox big-checkbox" value="1"/>VO<label for="checkbox-smartjog-1"></label>
    <input type="checkbox" id="checkbox-smartjog-2" name="SMARTJOG[]" class="regular-checkbox big-checkbox" value="2"/>VF<label for="checkbox-smartjog-2"></label>
    <input type="checkbox" id="checkbox-smartjog-3" name="SMARTJOG[]" class="regular-checkbox big-checkbox" value="3"/>3D<label for="checkbox-smartjog-3"></label>



Comment différencier la variable $valeur pour que chaque champ ait sa propre valeur ?
A voir également:

6 réponses

Utilisateur anonyme
24 nov. 2013 à 18:58
Bonjour

Tu n'enregistres pas les valeurs de chacun, tu fais toujours une même mise à jour car ton UPDATE a une condition WHERE id='$id'.
Tu fais très probablement bien toutes les mises à jour, mais comme tu les fais toutes sur le même enregistrement, normal que tu ne voies que la dernière valeur.
Il y a un problème de logique dans ce que tu cherches à faire. Il faut peut-être que tu balayes ton formulaire pour insérer les lignes correspondant à des options nouvellement cochées, et supprimer de la base les lignes correspondant à des options qui ne sont plus cochées. Mais je dis ça sans savoir ce que tu cherches vraiment à faire.
1