INSERTION D'INPUT DE TYPE "CHECKBOX" dans une base de données php&mysq

Ce topic a été résolu
kouamkoff

kouamkoff Le 27 juin 2019 à 01:14 (Édité le 28 juin 2019 à 00:29)

Salut ! je suis nouveau dans ce groupe et c'est ma prémière publication. Je souhaiterais insérer des input de type checkbox dans ma bas de donnée mais j'y arrives pas.
voici mon code
<?php
try{
        $bdd = new PDO("mysql:host=127.0.0.1;dbname=site e-commerce", 'root', '');
        $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    }
    catch(Exception $e){
        echo $e->getMessage();
    }

    if(isset($_POST['options'])){

        foreach ($_POST['equipements'] as $fonction){
            echo $fonction.'<br><br>';
            }
            // PUIS VIENS LA REQUÊTE
        $SQL_INSERT_DONNEES = $bdd->prepare("INSERT INTO options(equipements)VALUES(?)");
    }
?>
<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
<form action="" method="post">
    <input type="checkbox" name="equipements[]" value="climatisation">Climatisation
    <input type="checkbox" name="equipements[]" value="volant multifonction">Volant multifonction
    <input type="checkbox" name="equipements[]" value="demarrage">Demarrage
    <input type="checkbox" name="equipements[]" value="fonction 4wd"> Fonction awd
    <input type="checkbox" name="equipements[]" value="radar de recul">Radar de recul</br><br><br>

    <input type="submit" name="options" value="valider">
</form>

</body>
</html>
Balatharas

Balatharas Le 27 juin 2019 à 19:44 (Édité le 27 juin 2019 à 20:16)

Salut, à ce que je vois de ton code il te faut revoir les bases :/
Tu n'as même pas exécuté ta requête...
$SQL_INSERT_DONNEES = $bdd->prepare("INSERT INTO options(equipements)VALUES(?)");
$SQL_INSERT_DONNEES->execute([ICI LA VARIABLE QUE DOIT CONTENIR equipements]);
Sinon, pour obtenir une insertion du type: "climatisation;volant multifonction;radar de recul;" voici les modifs:
if(isset($_POST['options'])){
        $equipements = "";
        foreach ($_POST['equipements'] as $fonction){
            // echo $fonction.'<br><br>';
            $equipements .= $fonction.";";
        }
            // PUIS VIENS LA REQUÊTE
        $SQL_INSERT_DONNEES = $bdd->prepare("INSERT INTO options(equipements)VALUES(?)");
        $SQL_INSERT_DONNEES->execute([$equipements]);
    }
Et pour insérer individuellement les cases cochées:
if(isset($_POST['options'])){
        $equipements = "";
        foreach ($_POST['equipements'] as $fonction){
            // echo $fonction.'<br><br>';
            $SQL_INSERT_DONNEES = $bdd->prepare("INSERT INTO options(equipements)VALUES(?)");
            $SQL_INSERT_DONNEES->execute([$fonction]);
        }
    }
kouamkoff

kouamkoff Le 27 juin 2019 à 22:01

Merci Balatharas ! j'ai fais comme tu m'as indiqué mais voici l'erreur qui s'affiche quand je valide
 Fatal error: Uncaught PDOException: SQLSTATE[HY000]: General error: 
1366 Incorrect integer value: 'radar de recul' for column 'equipements' 
at row 1 in C:\wamp64\www\site e-commerce\admin\check.php on line 18( ! ) PDOException: SQLSTATE[HY000]: General error: 1366 Incorrect integer 
value: 'radar de recul' for column 'equipements' at row 1 in 
C:\wamp64\www\site e-commerce\admin\check.php on line 18
kouamkoff

kouamkoff Le 27 juin 2019 à 22:05

voici comment j'ai fais les champs de ma table "options"
"id"(INT, AUTO INCREMENT)
"equipements"(tinyint)
Balatharas

Balatharas Le 27 juin 2019 à 23:12

Bah pour stocker du texte dans ta base de données, il faut que ta colonne equipements soit de type texte... donc pas tinyint... Ca sert a rien de se lancer dans le SQL sans avoir appris les bases parce que la il suffisait de lire l’erreur quand même 
kouamkoff

kouamkoff Le 28 juin 2019 à 00:03

ok je rectifie et je te reviens ! Merci de me repondre
kouamkoff

kouamkoff Le 28 juin 2019 à 00:29

Merci et grand merci Balatharas  !!! J'ai pu enfin insérer mes checkbox dans ma bdd
Vous devez être connecté pour poster une réponse. Se connecter ou Créer un compte