Envoyer l'état des checkbox à la BDD

Fermé
Utilisateur anonyme - 27 oct. 2013 à 18:35
 Utilisateur anonyme - 14 nov. 2013 à 19:14
Bonjour,

Malgré des heures passées à suivre des tutos sur l'envoi de l'état des checkbox dans ma BDD SQL, je ne parviens toujours pas à ma fin.

Ma page :

J'ai 4 sections type Fieldset qui contiennent chacun 6 checkbox, 1 menu déroulant et un champ texte.

Ma BDD:

1 champ par checkbox. La valeur par défaut est NULL.

Mon code :


if($_POST['envoi1']){
$SMARTJOG - $_POST['SMARTJOG'];
foreach ($SMARTJOG as $smart1) {

mysql_query("UPDATE INTO etats_films VALUES('$smart1')")or exit(mysql_error());

}

}
<form method="POST" action="modif-etat-film.php">
<input type="checkbox" id="checkbox-smartjog-1" name="SMARTJOG[]" class="regular-checkbox big-checkbox" />VO  <label for="checkbox-smartjog-1"></label>
<input type="checkbox" id="checkbox-smartjog-2" name="SMARTJOG[]" class="regular-checkbox big-checkbox" />VOSTF  <label for="checkbox-smartjog-2"></label>
<input type="checkbox" id="checkbox-smartjog-3" name="SMARTJOG[]" class="regular-checkbox big-checkbox" />3D  <label for="checkbox-smartjog-3"></label>
<input type="checkbox" id="checkbox-smartjog-4" name="SMARTJOG[]" class="regular-checkbox big-checkbox" />SME  <label for="checkbox-smartjog-4"></label>
<input type="checkbox" id="checkbox-smartjog-5" name="SMARTJOG[]" class="regular-checkbox big-checkbox" />2D  <label for="checkbox-smartjog-5"></label>
<input type="checkbox" id="checkbox-smartjog-6" name="SMARTJOG[]" class="regular-checkbox big-checkbox" />VI  <label for="checkbox-smartjog-6"></label>

<br>

<HR size=2 align=center width="100%">

<input type="text" id="date-smartjog" placeholder="DatePicker" size="10" maxlength="10">
<input type="submit" value="OK">
</form>


envoi1 est le name de mon bouton submit

$SMARTJOG est le name de mes checkbox

Quel qu'un d'aguéri dans ce domaine peut-il m'éclairer ?

Merci

Romain

6 réponses

Utilisateur anonyme
27 oct. 2013 à 21:55
Up !! :)
0
Utilisateur anonyme
28 oct. 2013 à 15:21
Up!!
0
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 566
28 oct. 2013 à 15:26
Salut,

tu fais ça :

$SMARTJOG - $_POST['SMARTJOG'];

Tu voulais pas plutôt faire ça :

$SMARTJOG = $_POST['SMARTJOG'];

La syntaxe de ta requête n'est pas bonne non plus, tu mélanges l'insert et l'update
0
Utilisateur anonyme
28 oct. 2013 à 15:57
Salut,

Merci pour ta réponse.
En effet, pour le égal c'est une erreur de ma part.

En revanche pour l'UPDATE, je n'utilises pas l'INSERT car ce sont des checkbox qui seront amenés à être modifiés de temps à autres.
Mon erreur actuelle est celle-ci :
Column count doesn't match value count at row 1
Je pense que c'est dans ma requête que ça berdouille.

Je bloque lorsque je dois renseigner mes "VALUES".
Je dois toutes les déclarer comme ça avant peut-être ?
$etat_smartjog_vf=$_POST['etat_smartjog_vf'];
$etat_smartjog_vo=$_POST['etat_smartjog_vo'];
0
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 566
28 oct. 2013 à 16:07
Non, tu fais un mix entre la syntaxe de l'update et la syntaxe de l'insert, donc la syntaxe est fausse.

Regarde : https://www.w3schools.com/sql/sql_update.asp
0
Utilisateur anonyme
28 oct. 2013 à 16:10
Ah okay!!
Bon je pense que je vais faire simple pour le moment et que je vais rester en INSERT.
Et donc pour mes VALUES il faut que je les déclares ?
0
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 566
28 oct. 2013 à 16:12
avec un insert, à chaque fois tu vas te retrouver avec une nouvelle ligne dans ta base de données, si tu veux juste modifier un état, l'update est le bon choix, il suffit juste de mettre la bonne syntaxe et pas une syntaxe sortie de ta poche ^^
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
12 nov. 2013 à 19:33
J'ai réessayé d'une autre manière, toujours sans résultat. (Mais aucune erreur renvoyée)

Ici je stocke mes values dans un array :
<?php

$chkbox = array('etat_smartjog_vo', 'etat_smartjog_vf', 'etat_smartjog_3d');
if(isset($_POST['envoi']))
{
foreach($chkbox as $selection )
{ if(in_array($selection, $SMARTJOG))
{ $values[ $selection ] = 1; }
else
{ $values[ $selection ] = 0; }
} // end of foreach.
$sql = "INSERT INTO etats_films (etat_smartjog_vo, etat_smartjog_vf, etat_smartjog_3d) VALUES({$values['etat_smartjog_vo']}, {$values['etat_smartjog_vf']}, {$values['etat_smartjog_3d']})"or die(mysql_error());
mysql_query($sql);
}
?>


Des idées sur ce qui peut bloquer ?
0
Utilisateur anonyme
12 nov. 2013 à 21:28
Up !! :)
0
Utilisateur anonyme
13 nov. 2013 à 14:06
Up !!
0
Utilisateur anonyme
14 nov. 2013 à 19:14
personne..?
0