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

12 réponses


Natà
Réponse acceptée

Il manque une parenthèse à ton prepare aussi.

Salut,
Tu peux récupérer ça en utilisant jQuery http://api.jquery.com/checked-selector/

xander
Auteur

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 ?

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
Auteur

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

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
Auteur

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

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
Auteur

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

xander
Auteur

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 !

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

xander
Auteur

Je voudrais savoir si tu pourrais m'aidé a ce sujet aussi ? : http://www.grafikart.fr/forum/topic/8222
Cordialement,
xander