Input checkbox

Par xander, il y a 13 ans


Les bases HTML/CSS

Bonjour,
Comment récupéré un Boolean via un checkbox ?
Merci

12 réponses

xander, il y a 13 ans

j'aimerais le faire en php enfaîte pour envoyé un boolean or je suis bloqué dans mon code car l’insertion ne s'effectue pas =s

<input type="checkbox" name="promo" value="promo"> En promo ?

action php :

<?php
require("session.class.php");

$Session = new Session();

        //nom :
        $nom = $_POST'nom'] ;
        //prix
        $prix = $_POST'prix'] ;
        //image
        $image = $_POST'image'];
        //description
        $description = $_POST'description'] ;
        //quantiter
        $quantiter = $_POST'quantiter'] ;
        //id_consoles
        $id_consoles = $_POST'id_consoles'] ;
        //id_types
        $id_types = $_POST'id_types'] ;
        //id_genres
        $id_genres = $_POST'id_genres'] ;
        //promo
        if(!empty($_POST'promo'])){
        $promo = 0;
        }else{
        $promo = 1;
        }
//connection au serveur
include ('includes/connexion_bdd.php');
// vérification du produit, existe ou existe pas ??
$connect = mysql_connect ('localhost', 'root', '') or die ("Connexion à la base SQL impossible");
$select = mysql_select_db ('oldschoolgen', $connect);

  // On vérifie si le produit est déjà ds la bdd
$sql = 'SELECT count(*) FROM produits WHERE nom="'.mysql_real_escape_string($_POST'nom']).'"AND id_consoles="'.mysql_real_escape_string($_POST'id_consoles']).'"';
$res = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$data = mysql_fetch_array($res);

// on verifie que le produit n'est pas déjà utilisé
mysql_free_result($res);

      if ($data[0] == 1) {
        $Session->setFlash('Le produit existe déjà dans la base de données','error');
      }

      // sinon on continue l'insertion du produit
      else
      {
// insertion des données récupérer
// régularisation de la syntaxe 

            $req = $bdd->prepare('INSERT INTO oldschoolgen.produits(nom, prix, image, description, quantiter, id_consoles, id_types, id_genres, promo) VALUES(:nom, :prix, :image, :description, :quantiter, :id_consoles, :id_types, :id_genres, :$promo');

            $req->execute(array(
                  'nom' => $nom,
                  'prix' => $prix,
                  'image' => $image,
                  'description' => $description,
                  'quantiter' => $quantiter,
                  'id_consoles' => $id_consoles,
                  'id_types' => $id_types,
                  'id_genres' => $id_genres,
                  'promo' => $promo
            ));
            $req->closeCursor();
            // message d'alerte
            $Session->setFlash('L\'ajout du produit a bien été effectuer','success');
}
// retour a la page d'acceuil
header('Location:ajout_produits.php');
?>

une idée du problème ?

Natà, il y a 13 ans

Ha ok, c'est juste pour une insertion.

Je pense qu'en changeant ça

if(!empty($_POST'promo'])){
    $promo = 0;
}else{
    $promo = 1;
}

En ça :

if(isset($_POST'promo'])){
    $promo = 1;
}else{
    $promo = 0;
}

Ça devrait fonctionner, chez moi ça marche.

Sinon, c'est que le soucis ne vient pas de là.

xander, il y a 13 ans

J'avais déjà essayé cette solution l'erreur ne viens pas de la XD mon cerveau surchauffe j'ai essayé la concaténation dans ma requête même résultat rien a faire je vois pas d'ou sa viens

Natà, il y a 13 ans

Si c'est une erreur mysql tu devrais avoir un retour de l'erreur, vire ton header Location et analyse l'erreur, sinon, je vois pas :/

xander, il y a 13 ans

Voila l'erreur que j’obtiens :

Warning: PDOStatement::execute() [pdostatement.execute]: SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in F:\wamp\www\osg_test\ajouter_produits.php on line 66

Natà, il y a 13 ans

Hum, quand tu fais ton $req->execute() c'est pas plutôt $bdd->execute() ?
Tu as aussi un erreur dans ton prepare, c'est pas :$promo mais :promo (et je pense que l'erreur vient de la puisque tu lui dit de rentrer 8 champs (puisque le dernier ne passe pas) et tu lui donnes 9 variables, d'ou l'erreur "invalid parameter number")

xander, il y a 13 ans

Non pour le $execute c'est bien $req que j'utilise car c'est une requête préparé ensuite le :promo enlève le message d'erreur mais je n’obtiens rien dans ma base de données

Natà, il y a 13 ans

Il manque une parenthèse à ton prepare aussi.

xander, il y a 13 ans

MDR je viens de refaire ma requête et j'ai remarqué la parenthèse ..... a je fatigue de c'est erreur de merde que sa soit un point virgule ou une cote
Merci de ton aide !

Natà, il y a 13 ans

^^ pas de soucis, ça arrive, bonne continuation. :)