IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Insérer checkbox dans une BDD avec choix multiple


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Webdesigner
    Inscrit en
    Janvier 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : Maroc

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2010
    Messages : 23
    Par défaut Insérer checkbox dans une BDD avec choix multiple
    bonjour,

    je suis entrain de créer un formulaire de contact, ou il ya un bouton checkbox avec trois choix, sachant qu'on peut cocher tous les trois, mais je n'ai qu'une seule valeur qui s’insère dans la base de donnée (la dernière)..
    est ce qu'il ya une possibilité de les afficher tous ??

    code html:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <font class="textes" > Souhaitez-vous être rappelé :</font></div>
    <input name="appel" type="checkbox" value="matin">Le matin <input name="appel" type="checkbox" value="apres_midi">Après midi <input name="appel" type="checkbox" value="soiree">Soirée (17h à 19h)</div>

    code d'insertion php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    <?php
    $base="academia";
    $conn=mysql_connect("localhost", "root", "");
    mysql_select_db($base);
     
    $appel=$_POST['appel'];
     
     
    $sql='insert into inscription VALUES("", "'.mysql_escape_string($appel).'")';
     
    $req=mysql_query($sql) or die ('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
    header("location:conf_contact.php");
     
    ?>

  2. #2
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 313
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 313
    Billets dans le blog
    17
    Par défaut
    Salut !!

    Pour le moment c'est normal car tes checkbox ont toutes le même nom, c'est-à-dire appel.
    Pour que appel puisse contenir plusieurs valeurs il faut le "transformer" en tableau en rajoutant des [] à chaque name.

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <input type="checkbox" name="appel[]" value="matin">
    ...
    Les valeurs cochées seront dans le *tableau* $_POST['appel'].

  3. #3
    Membre averti
    Femme Profil pro
    Webdesigner
    Inscrit en
    Janvier 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : Maroc

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2010
    Messages : 23
    Par défaut
    Citation Envoyé par Séb. Voir le message
    Salut !!

    Pour le moment c'est normal car tes checkbox ont toutes le même nom, c'est-à-dire appel.
    Pour que appel puisse contenir plusieurs valeurs il faut le "transformer" en tableau en rajoutant des [] à chaque name.

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <input type="checkbox" name="appel[]" value="matin">
    ...
    Les valeurs cochées seront dans le *tableau* $_POST['appel'].

    j'ai fais comme ceci , mais rien n'apparait dans la base de données, même si j'ai coché tous les choix

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input name="appel[]" type="checkbox" value="matin">Le matin <input name="appel[]" type="checkbox" value="apres_midi">Après midi <input name="appel[]" type="checkbox" value="soiree">Soirée (17h à 19h)

  4. #4
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 313
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 313
    Billets dans le blog
    17
    Par défaut
    Montre le traitement du *tableau* $_POST['appel'].

  5. #5
    Membre averti
    Femme Profil pro
    Webdesigner
    Inscrit en
    Janvier 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : Maroc

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2010
    Messages : 23
    Par défaut
    Citation Envoyé par Séb. Voir le message
    Montre le traitement du *tableau* $_POST['appel'].


    je suis encore débutante , c pour cela je sais pas ou mettre ça (*tableau* $_POST['appel'])

    ca sera très généreux de ta part si tu me montre ou le mettre exactement dans ma page d'insertion , voilà le code complet de la page :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    <?php
    $base="academia";
    $conn=mysql_connect("localhost", "root", "");
    mysql_select_db($base);
     
    $civilite=$_POST['civilite'];
    $nom=$_POST['nom'];
    $prenom=$_POST['prenom'];
    $email=$_POST['email'];
    $tel=$_POST['tel'];
    $formation=$_POST['formation'];
    $question=$_POST['question'];
    $appel=$_POST['appel'];
    $naissance=$_POST['naissance'];
    $lieu=$_POST['lieu'];
    $adresse=$_POST['adresse'];
    $situation =$_POST['situation'];
    $reference=$_POST['reference'];
    $autre_ref=$_POST['autre_ref'];
    $date = date("d/m/Y - H:i:s");
     
     
     
     
    $sql='insert into inscription VALUES("", "'.mysql_escape_string($civilite).'","'.mysql_escape_string($nom).'","'.mysql_escape_string($prenom).'","'.mysql_escape_string($email).'","'.mysql_escape_string($tel).'","'.mysql_escape_string($formation).'","'.mysql_escape_string($question).'","'.mysql_escape_string($appel).'","'.mysql_escape_string($naissance).'","'.mysql_escape_string($lieu).'","'.mysql_escape_string($adresse).'","'.mysql_escape_string($situation).'","'.mysql_escape_string($reference).'","'.mysql_escape_string($autre_ref).'","'.mysql_escape_string($date).'")';
     
    $req=mysql_query($sql) or die ('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
    header("location:conf_contact.php");
     
    ?>

  6. #6
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 313
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 313
    Billets dans le blog
    17
    Par défaut
    $_POST['appel'] est un tableau.

    Càd que si tu fais :

    echo $_POST['appel'][0] tu afficheras la valeur de la 1re case cochée.
    Si tu fais $_POST['appel'][$i] tu afficheras la valeur de la $i-ème case cochée.
    Si aucune case n'est cosée alors $_POST['appel'] n'existera pas. Tu peux vérifier cela avec la fonction PHP isset( ).

    Si tu veux stocker dans ta BdD les valeurs cochées séparées par des virgules tu peux faire à la place de $appel=$_POST['appel']; ce qui suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if ( isset($_POST['appel']) && is_array($_POST['appel']) ) {
        // Arrivé ici $_POST['appel'] existe et est bien un tableau
        $appel = implode(', ', $_POST['appel']) ;
    } else {
        $appel = '' ;
    }
    Doc sur implode( ) : http://fr.php.net/implode

Discussions similaires

  1. Insérer image dans une bdd
    Par Blagueur dans le forum Débuter
    Réponses: 10
    Dernier message: 24/10/2008, 13h05
  2. [AJAX] Vérifier des données dans une BDD avec AJAX
    Par mwech dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 22/10/2008, 15h13
  3. Réponses: 3
    Dernier message: 14/05/2008, 11h58
  4. Réponses: 4
    Dernier message: 23/07/2006, 20h42
  5. Calculs dans une requete avec conditions multiples
    Par Sha1966 dans le forum Access
    Réponses: 3
    Dernier message: 13/01/2006, 15h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo