par
Ryle » 28 juin 2019, 16:11
Ok, au temps pour moi alors, ce n'est pas une liste de valeur, mais différentes informations indépendantes que tu gères. On oublie donc les crochets dans le nom du champ (même si on peut y arriver quand même de cette manière) et on va les nommer en fonction de ce à quoi ils servent (c'est plus facile à lire, à comprendre, à maintenir...) :
<form method="post">
<input type="checkbox" name="demarrage" value="1" /> démarrage
<input type="checkbox" name="climatisation" value="1" /> climatisation
<input type="checkbox" name="radar_recul" value="1" /> Radar de recul
<input type="submit" name="equipements" value="Valider">
</form>
Au niveau de php, tu recevras les valeurs pour chacune des cases qui auront été cochées dans les variables suivantes : $_POST['demarrage'], $_POST['climatisation'], $_POST['radar_recul']. Si une case n'est pas cochée, la variable ne sera pas définie, si la case est cochée, sa valeur sera 1 (spécifié dans l'attribut value).
Il faut donc contrôler les cases cochées en vérifiant les variables reçues. Tu pourras ensuite définir les valeurs que tu veux utiliser dans ta base.
<?php
...
if (isSet($_POST['demarrage']))
$demarrage = 1;
else
$demarrage = 0;
// tu peux aussi l'écrire ainsi, ça revient au même que les 4 lignes ci-dessus :
$demarrage = isSet($_POST['demarrage']) ? 1 : 0;
// Et idem pour les autres cases
$climatisation = isSet($_POST['climatisation']) ? 1 : 0;
$radar_recul = isSet($_POST['radar_recul']) ? 1 : 0;
// Une fois que tu as récupéré toutes tes cases (1 pour celles qui sont cochée et 0 par défaut quand elles ne le sont pas), tu peux les utiliser dans une requête SQL pour mettre à jour ta table en base de données
// insert si l'enregistrement n'existe pas encore
$sql = " INSERT INTO ta_table (ton_champ_demarrage, ton_champ_clim, ton_champ_radar, ...) VALUES (" . $demarrage . ", " . $climatisation . ", " . $radar_recul . ", ...)";
// update si l'enregistrement existe déjà et que tu veux le mettre à jour
$sql = " UPDATE ta_table SET ton_champ_demarrage = " . $demarrage . ", ton_champ_clim = " . $climatisation . ", ton_champ_radar = " . $radar_recul . " ... WHERE id_de_ton_enregistrement = " . $id_enregistrement_a_mettre_a_jour;
...
?>
Pour les types de colonnes, tout dépend de ce que tu as besoin de stocker dedans.. VARCHAR c'est pour du texte de 255 caractères au maximum, INT pour des nombres pouvant être assez grands. Là tout ce qu'on veut savoir c'est si la case est cochée (1) ou pas (0) . Tu peux utiliser soit INT, soit TINYINT, soit un ENUM en autorisant uniquement les 2 valeurs 0 et 1...
Ok, au temps pour moi alors, ce n'est pas une liste de valeur, mais différentes informations indépendantes que tu gères. On oublie donc les crochets dans le nom du champ (même si on peut y arriver quand même de cette manière) et on va les nommer en fonction de ce à quoi ils servent (c'est plus facile à lire, à comprendre, à maintenir...) :
[html]
<form method="post">
<input type="checkbox" name="demarrage" value="1" /> démarrage
<input type="checkbox" name="climatisation" value="1" /> climatisation
<input type="checkbox" name="radar_recul" value="1" /> Radar de recul
<input type="submit" name="equipements" value="Valider">
</form>[/html]
Au niveau de php, tu recevras les valeurs pour chacune des cases qui auront été cochées dans les variables suivantes : $_POST['demarrage'], $_POST['climatisation'], $_POST['radar_recul']. Si une case n'est pas cochée, la variable ne sera pas définie, si la case est cochée, sa valeur sera 1 (spécifié dans l'attribut value).
Il faut donc contrôler les cases cochées en vérifiant les variables reçues. Tu pourras ensuite définir les valeurs que tu veux utiliser dans ta base.
[php]<?php
...
if (isSet($_POST['demarrage']))
$demarrage = 1;
else
$demarrage = 0;
// tu peux aussi l'écrire ainsi, ça revient au même que les 4 lignes ci-dessus :
$demarrage = isSet($_POST['demarrage']) ? 1 : 0;
// Et idem pour les autres cases
$climatisation = isSet($_POST['climatisation']) ? 1 : 0;
$radar_recul = isSet($_POST['radar_recul']) ? 1 : 0;
// Une fois que tu as récupéré toutes tes cases (1 pour celles qui sont cochée et 0 par défaut quand elles ne le sont pas), tu peux les utiliser dans une requête SQL pour mettre à jour ta table en base de données
// insert si l'enregistrement n'existe pas encore
$sql = " INSERT INTO ta_table (ton_champ_demarrage, ton_champ_clim, ton_champ_radar, ...) VALUES (" . $demarrage . ", " . $climatisation . ", " . $radar_recul . ", ...)";
// update si l'enregistrement existe déjà et que tu veux le mettre à jour
$sql = " UPDATE ta_table SET ton_champ_demarrage = " . $demarrage . ", ton_champ_clim = " . $climatisation . ", ton_champ_radar = " . $radar_recul . " ... WHERE id_de_ton_enregistrement = " . $id_enregistrement_a_mettre_a_jour;
...
?>[/php]
Pour les types de colonnes, tout dépend de ce que tu as besoin de stocker dedans.. VARCHAR c'est pour du texte de 255 caractères au maximum, INT pour des nombres pouvant être assez grands. Là tout ce qu'on veut savoir c'est si la case est cochée (1) ou pas (0) . Tu peux utiliser soit INT, soit TINYINT, soit un ENUM en autorisant uniquement les 2 valeurs 0 et 1...