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 :

Recupérer la valeur d'un select et l'envoyer dans une BDD


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2019
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2019
    Messages : 10
    Points : 4
    Points
    4
    Par défaut Recupérer la valeur d'un select et l'envoyer dans une BDD
    Bonjour,
    J'ai un problème depuis plusieurs jour avec un select, je veux récupérer sa valeur et l'envoyer dans ma BDD sauf que ça me renvoie dans la bdd un champs vide..

    J'écris d'abord mon select en recherchant les valeurs de celui-ci dans ma bdd, ce qui fonctionne très bien.

    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
    31
    32
    33
    34
     
    <?php
    $pdo = new PDO("mysql:dbname=base_omaj;host=localhost", "root", "", array(PDO::MYSQL_ATTR_FOUND_ROWS => true ));
    $st1 = $pdo -> prepare ("select Nom_poste_source from poste_source");
    $st1->execute();
    $res = null;
    $input_name1 = "source";
     
     
    if ((isset($_GET[$input_name1]) === true) AND (strlen($_GET[$input_name1]) >0 ))
    {
        echo "Vous avez choisie " .$_GET[$input_name1];
    }
     
    ?>
     
     <form action="Remplissage_omaj.php" methode="post">
     
                    <!-- REMPLISSAGE POSTE SOURCE -->   
                    <!-- Poste source -->    
                    Poste source :
                    <select name="source" >
                    <?php
                        echo "<option></option>\n>";
                        while ($res =$st1->fetch(PDO::FETCH_NUM))
                        {
                            echo "<option>" .$res[0]. "</option>";
                        }
                    ?>
                    </select>
                    <input name="Valider" type="submit" value="Valider" />
                    <input name="Annuler" type="submit" value="Annuler" />
     
    </form>
    Puis je les récupère la valeur selectionnée et la renvoie sur ma bdd (j'ai 3 select comme celui)

    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
    31
    <?php
    $host = "localhost";
    $dbusername = "root";
    $dbpassword = "";
    $dbname = "base_omaj";
     
    $conn = new mysqli($host, $dbusername, $dbpassword, $dbname);
    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    }
     
     
     
    $Nom_source = !empty($_POST['source']) ? $_POST['source'] : NULL;
    $Nom_depart = !empty($_POST['depart']) ? $_POST['depart'] : NULL;
    $Nom_type = !empty($_POST['type']) ? $_POST['type'] : NULL;
    $Description = !empty($_POST['description']) ? $_POST['description'] : NULL;
     
     
     
    $sql = "INSERT INTO omaj (Numero_omaj, Nom_source, Nom_depart, Nom_type, Date, Description, Id_etat,Nom_etat) VALUES ('46','$Nom_source','$Nom_depart','$Nom_type','2018-12-10','$Description','1','Prepare')"; 
     
    if ($conn->query($sql) === TRUE) {
        echo "Omaj ajoutéé";
            header( "refresh:5;url=Pr%C3%A9par%C3%A9.php");
        } else {
            echo "Error: " . $sql . "<br>" . $conn->error;
            header( "refresh:5;url=Pr%C3%A9par%C3%A9.php" );
        }
     
    ?>
    J'espère avoir été clair, merci pour l'aide

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    1- pourquoi utilises-tu PDO dans un script, et mysqli_ dans l'autre ??

    Contente-toi de PDO.

    2- Il est préférable de mettre des value aux <option>.
    Ce qui permet notamment de récupérer les ids au lieu des noms.

    ex. :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
          echo "<option value=\"" .$res['id']. "\""">" .$res['nom']. "</option>";
    3- La bonne pratique veut qu'on utilise une requête préparée.



    4-
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
             header( "refresh:5;url=Pr%C3%A9par%C3%A9.php" );
    EVITE de mettre des accents !! (noms de fichiers, de variables, de colonnes en BDD....)

  3. #3
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2019
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2019
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    Bonjour, merci pour les conseils
    Je vais essayer d'appliquer tout ça!

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    j'ajoute ceci:


    • ça permet de faire une "gestion d'erreur" (et de réafficher le formulaire en cas d'erreur)
    • et ça évite de faire un header inutile à la fin

  5. #5
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2019
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2019
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    J'ai essayer de corriger un maximum en suivant les conseils mais ça ne fonctionne toujours pas, cela m'ajoute un champs vide dans la BDD.

    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
    31
    32
    33
    <?php
    $pdo = new PDO("mysql:dbname=base_omaj;host=localhost", "root", "", array(PDO::MYSQL_ATTR_FOUND_ROWS => true ));
    $st1 = $pdo -> prepare ("select Nom_poste_source Id_poste_source from poste_source");
    $st1->execute();
    $res = null;
    $input_name1 = "source";
     
    if ((isset($_GET[$input_name1]) === true) AND (strlen($_GET[$input_name1]) >0 ))
    {
        echo "Vous avez choisie " .$_GET[$input_name1];
    }
     
    ?>
     
                    <form action="Remplissage_omaj.php" methode="post">
     
                    <!-- REMPLISSAGE POSTE SOURCE -->   
                    <!-- Poste source -->    
                    Poste source :
                    <select name="source">
                    <?php
                        echo "<option></option>\n>";
                        while ($res =$st1->fetch(PDO::FETCH_NUM))
                        {
                            echo "<option value=" .$res['Id_poste_source']. ">" .$res[0]. "</option>";
                        }
                    ?>
                    </select>
     
                    <input name="Valider" type="submit" value="Valider" />
                    <input name="Annuler" type="submit" value="Annuler" />
     
                    </form>
    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
    $sql = "INSERT INTO omaj (Id,Numero_omaj, Nom_source, Nom_depart, Nom_type, Date, Description, Id_etat,Nom_etat) VALUES (NULL,?,?,?,?,?,?,?,?)"; 
    $db = include 'Remplissage_tableau.php';
     
    try { 
     
        $stmt = $pdo->prepare($sql);
     
        $Numero_omaj = '50';
        $Nom_source = !empty($_POST['source']) ? $_POST['source'] : NULL;
        $Nom_depart = !empty($_POST['depart']) ? $_POST['depart'] : NULL;
        $Nom_type = !empty($_POST['type']) ? $_POST['type'] : NULL;
        $Date = '2018-12-10';
        $Description = !empty($_POST['description']) ? $_POST['description'] : NULL;
        $Id_etat = '1';
        $Nom_etat = 'Prepare';
     
        $stmt->execute(array($Numero_omaj, $Nom_source, $Nom_depart, $Nom_type, $Date, $Description, $Id_etat, $Nom_etat)) ;
     
       $nb_insert = $stmt->rowCount();
       echo $nb_insert.' insertion effectuée<br/>';
       unset($db);
    } 
    catch (Exception $e) {
       //s'il y a un problème PHP ou SQL, tout s'affichera ici
       print "Erreur ! " . $e->getMessage() . "<br/>";
    }
     
    ?>
    De plus j'ai cette erreur là :
    Erreur ! SQLSTATE[23000]: Integrity constraint violation: 1048 Le champ 'Nom_source' ne peut être vide (null)
    Ce qui est normal étant donné que rien ne s'affiche dans la BDD.

    Merci

  6. #6
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2019
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2019
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    Cela fonctionne en changeant le POST par des GET

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Vu !!

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
                    <form action="Remplissage_omaj.php" methode="post">

    C'est method !! Pas methode ! (<form> -> method)

    Un formulaire est par défaut en method="get". Ce qui explique pourquoi ça fonctionne en $_GET.

    Pour l'avoir en $_POST, corrige :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
                    <form action="Remplissage_omaj.php" method="post">

  8. #8
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2019
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2019
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    Bonjour,
    oui j'ai vu
    merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. recupérer les valeur d'un select
    Par mouss4rs dans le forum Langage
    Réponses: 12
    Dernier message: 27/03/2009, 17h08
  2. [Debutant] recupérer les valeurs d'un select
    Par foubou dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 10/06/2008, 16h40
  3. Recupérer les valeurs d'un select multiple
    Par MANU_2 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 07/02/2008, 11h49
  4. Recupérer la valeur d'un select imbriqué dans un update
    Par miniil dans le forum Langage SQL
    Réponses: 3
    Dernier message: 07/07/2006, 10h49
  5. [Conception] comment recupérer la valeur d'un select
    Par arno1977 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 13/06/2006, 14h09

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