Bonjour,

Voila je rencontre un petit problème avec mon code. Je ne trouve pas sur le Web la condition pour pour enregistrer le choix de la liste déroulante dans la BDD.
Merci d'avance

Ce que je fais

Décrivez ici votre code ou ce que vous cherchez à faire

<html>
    <?php

    error_reporting(E_ALL);

    if(isset($_POST['submit']))
        if($nom){
        }else
    {
    $nom =htmlentities(trim($_POST['nom']));        
    $prenom =htmlentities(trim($_POST['prenom']));
    $adresse =htmlentities(trim($_POST['adresse']));
    $ville =htmlentities(trim($_POST['ville']));

    $bdd = new PDO('mysql:host=localhost;dbname=phplogin;charset=utf8', 'root', '');
        try
        {
            $bdd = new PDO('mysql:host=localhost;dbname=phplogin;charset=utf8', 'root', '');
        }
        catch (Exception $e)
        {
        die('Erreur : ' . $e->getMessage());
        }       

        $req = $bdd->prepare("INSERT INTO inscription (nom, prenom, adresse, ville) VALUES (:nom, :prenom, :adresse, :ville)");
        $req->execute(array("nom" => $nom, "prenom" => $prenom, "adresse" => $adresse, "ville" => $ville));  

        die("Inscription terminée <ahref=traitement.php connectez</a>vous");
    };

    ?>

    <head>
        <meta charset="utf-8" />
    </head>
    <body>
    <form method="POST" action="traitement.php">
    <p>
       <label for="nom">Nom :</label>
       <input type="text" name="nom" id="nom" />

       <br></br>

       <label for="prenom">Prenom :</label>
       <input type="text" name="prenom" id="prenom" />

       <br></br>

       <label for="adresse">Adresse :</label>
       <input type="text" name="adresse" id="adresse" />

       <br></br>

       <label for="ville">Ville :</label>
       <input type="text" name="ville" id="ville" />

       <br></br>

       <label for="Nombre d'enfant">Nombre d'enfant :</label>
       <FORM>
        <SELECT name="Nombre d'enfant" size="1">
        <OPTION>1
        <OPTION>2
        <OPTION>3
        <OPTION>4
        <OPTION>5
        </SELECT>
        </FORM>

       <br></br>

       <FORM>
        <INPUT TYPE="submit" NAME="submit" VALUE=" Envoyer ">
        </FORM>

        <br></br>

    </p>
    </form>

    </body>
</html>

Ce que je veux

Enregistrer les données de la liste déroulante dans la BDD.

Ce que j'obtiens

Rien

10 réponses


shinix
Réponse acceptée

Re,

  1. c'est pas du PHP c'est du HTML ;)
  2. Ta toujours une colonie de <form>.

Ce que tu fais :

<SELECT name="Nombre d'enfant" size="1">
<OPTION>1
<OPTION>2
<OPTION>3
<OPTION>4
<OPTION>5
</SELECT>

Ce que tu dois faire :

<select name="nombre_enfant">
 <option value="1">Option 1</option>
 <option value="2">Option 2</option>
</select>

Ton soucis fais partie des bases du HTML, avant de continuer je te recommandes de suivre une petite formation HTML pour que tu comprennes tes erreures.

shinix
Réponse acceptée

Oui mais si ton html est faux t'aura du mal à obtenir de résultat en PHP..

la réponse que je t'ai donné est juste, pour récupérer le select suffit de faire $_POST['nombre_enfant']

Azorgh
Réponse acceptée

Comme te l'as précisé shinix, tu as des <form> dans ton <form>. Déjà pas bon.
Ensuite tu as modifié le select comme il l'avait dit aussi ?

Azorgh
Réponse acceptée

Fais attention à la casse !

<select name="Nombre_enfant">
</select>
$nombre_enfant =htmlentities(trim($_POST['nombre_enfant']));

Donc modifie l'un des deux pour qu'il concorde.

Ensuite je te conseil de revoir ton code php. Dans ta préparation de requête des fois du as : ":var" et d'autre "var".

VALUES (:nom, [..], variable) //Sans les ":"

Donc refait un tour.
Le mieux a faire avant de test les INSERT, c'est de tester si tu as bien toutes les données , donc avant ton $bdd = new PDO...,tu peux faire un

die(print_r(array("nom" => $nom, "prenom"=> $prenom, "adresse" => $adresse, "ville" => $ville, "nombre_enfant" => $nombre_enfant, "nomenfant" => $nomenfant)));

Et voir si les informations sont celles soumises.

Azorgh
Réponse acceptée

Cool. Selectionnes maintenant la/les réponses qui t'ont aidés afin de passer le sujet en résolu !

lecjoh
Auteur

C'est ce que j'ai modifié, j'ai commencer par HTML en formation et ça peut aller mais c'est pour l'enregistrement des données en PHP que j'ai du mal surtout avec une liste à plusieurs choix.

lecjoh
Auteur

C'est ce que j'ai fais dans mon traitement.php, le voici :

<?php

error_reporting(E_ALL);

if(isset($_POST['submit']))
{
$nom =htmlentities(trim($_POST['nom']));
$prenom =htmlentities(trim($_POST['prenom']));
$adresse =htmlentities(trim($_POST['adresse']));
$ville =htmlentities(trim($_POST['ville']));            
$nombreenfant =htmlentities(trim($_POST['nombreenfant']));
$nomenfant =htmlentities(trim($_POST['nomenfant']));

    $bdd = new PDO('mysql:host=localhost;dbname=phplogin;charset=utf8', 'root', '');
            try
            {
                $bdd = new PDO('mysql:host=localhost;dbname=phplogin;charset=utf8', 'root', '');
            }
            catch (Exception $e)
            {
            die('Erreur : ' . $e->getMessage());
            }       
        mysql_select_db('phplogin');
        $req = mysql_query("SELECT * FROM inscription WHERE nom='$nom', prenom='$prenom', adresse='$adresse', ville='$ville', nombreenfant=$nombreenfant, nomenfant='$nomenfant'");

        $req = $bdd->prepare("INSERT INTO inscription (nom, prenom, adresse, ville, nombreenfant, nomenfant) VALUES (:nom, :prenom, :adresse, :ville, nombreenfant, nomenfant)");
        $req->execute(array("nom" => $nom, "prenom"=> $prenom, "adresse" => $adresse, "ville" => $ville, "nombreenfant" => $nombreenfant, "nomenfant" => $nomenfant));
}

?>

Merci d'avance

lecjoh
Auteur

Je comprends pas bien pour récupérer le SELECT ce qu'il faut faire. Je vous remet mes 2 codes inscriptions.php et traitement.php.

<html>
    <?php

    error_reporting(E_ALL);

    if(isset($_POST['submit']))
    {   
    $bdd = new PDO('mysql:host=localhost;dbname=phplogin;charset=utf8', 'root', '');
      try
    {
        $bdd = new PDO('mysql:host=localhost;dbname=phplogin;charset=utf8', 'root', '');
        $req = "INSERT INTO inscription (nom, prenom, adresse, ville, nombre_enfant, nomenfant)";
        $req .= " VALUES ";
        //il te manquait :nombreenfant, :nomenfant
        $req .= "(:nom, :prenom, :adresse, :ville, :nombreenfant, :nomenfant)";
        $stmt = $bdd->prepare($req);
        $stmt->bindValue('nom',htmlentities(trim($_POST['nom'])),PDO::PARAM_STR);
        $stmt->bindValue('prenom',htmlentities(trim($_POST['prenom'])),PDO::PARAM_STR);
        $stmt->bindValue('adresse',htmlentities(trim($_POST['adresse'])),PDO::PARAM_STR);
        $stmt->bindValue('nombre_enfant',htmlentities(trim($_POST['nombre_enfant'])),PDO::PARAM_STR);
        $stmt->bindValue('nomenfant',htmlentities(trim($_POST['nomenfant'])),PDO::PARAM_STR);

        if (!$stmt->execute()) {
            throw new PDOException('insertion impossible');
        }
    }
    catch (Exception $e)
    {
        die('Erreur : ' . $e->getMessage());
    } 
    }
    ?>

    <head>
        <meta charset="utf-8" />
    </head>
    <body>
    <form method="POST" action="traitement.php">
    <p>
       <label for="nom">Nom :</label>
       <input type="text" name="nom" id="nom" />

       <br></br>

       <label for="prenom">Prenom :</label>
       <input type="text" name="prenom" id="prenom" />

       <br></br>

       <label for="adresse">Adresse :</label>
       <input type="text" name="adresse" id="adresse" />

       <br></br>

       <label for="ville">Ville :</label>
       <input type="text" name="ville" id="ville" />

       <br></br>

       <label for="Nombre d'enfant">Nombre d'enfant :</label>

        <select name="Nombre_enfant">
        <option value="1">1</option>
        <option value="1">2</option>
        <option value="1">3</option>
        <option value="1">4</option>
        <option value="1">5</option>
        </select>

       <br></br>

       <label for="nomenfant">Nom de l'enfant :</label>
       <input type="text" name="nomenfant" id="nomenfant" />

       <br></br>

        <INPUT TYPE="submit" NAME="submit" VALUE=" Envoyer ">

    </p>
    </form>

    </body>
</html>     
lecjoh
Auteur
<?php

error_reporting(E_ALL);

if(isset($_POST['submit']))
{
$nom =htmlentities(trim($_POST['nom']));
$prenom =htmlentities(trim($_POST['prenom']));
$adresse =htmlentities(trim($_POST['adresse']));
$ville =htmlentities(trim($_POST['ville']));           
$nombre_enfant =htmlentities(trim($_POST['nombre_enfant']));
$nomenfant =htmlentities(trim($_POST['nomenfant']));

    $bdd = new PDO('mysql:host=localhost;dbname=phplogin;charset=utf8', 'root', '');
            try
            {
                $bdd = new PDO('mysql:host=localhost;dbname=phplogin;charset=utf8', 'root', '');
            }
            catch (Exception $e)
            {
            die('Erreur : ' . $e->getMessage());
            }      
        mysql_select_db('phplogin');
        $req = mysql_query("SELECT * FROM inscription WHERE nom='$nom', prenom='$prenom', adresse='$adresse', ville='$ville', nombre_enfant=$nombre_enfant, nomenfant='$nomenfant'");

        $req = $bdd->prepare("INSERT INTO inscription (nom, prenom, adresse, ville, nombre_enfant, nomenfant) VALUES (:nom, :prenom, :adresse, :ville, nombre_enfant, nomenfant)");
        $req->execute(array("nom" => $nom, "prenom"=> $prenom, "adresse" => $adresse, "ville" => $ville, "nombre_enfant" => $nombre_enfant, "nomenfant" => $nomenfant));
}

?>
lecjoh
Auteur

Merci pour cette aide, mon code fonctionne maintenant.