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

PHP & Base de données Discussion :

Envoi d'une Liste déroulante vers la base


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Autre
    Inscrit en
    Avril 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Avril 2018
    Messages : 13
    Points : 9
    Points
    9
    Par défaut Envoi d'une Liste déroulante vers la base
    Bonjour, je suis débutant en développement web.
    Je ne parviens pas à envoyer la donnée sélectionnée à partir d'une liste déroulante (balise select et option) vers une base de données mysql.
    Comment faire ?
    Merci d'avance pour vos réponses.
    Cordialement

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    montrez nous le code que vous avez essayé.
    est ce que vous avez déjà créé la structure de la base de données ?

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Autre
    Inscrit en
    Avril 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Avril 2018
    Messages : 13
    Points : 9
    Points
    9
    Par défaut
    Bonjour, ci joint mon code.
    L'envoi des données fonctionne uniquement avec la ligne 37 active et les lignes 39 à 45 en commentaires. Sinon, il ne se passe rien.
    Cdt
    Images attachées Images attachées    

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

    1- Merci de copier-coller les codes directement dans le contenu du message.

    2- le name du select est "taux" au lieu de "taux_tva"

    3- tu ne fais aucune gestion d'erreurs avant la requête : champs obligatoires ?...

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Autre
    Inscrit en
    Avril 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Avril 2018
    Messages : 13
    Points : 9
    Points
    9
    Par défaut
    Bonjour,
    j'ai changé le name du select "taux" en "taux_tva" : cela ne fonctionne toujours pas.
    Je m'occupe de la gestion des erreurs plus tard. Pour le moment, j'ai juste mis des required.
    Dans les règles des messages, il est écrit : Le code HTML peut être employé : non
    C'est pourquoi j'ai mis des captures d'écran
    Cdt

  6. #6
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 627
    Points
    3 627
    Billets dans le blog
    8
    Par défaut
    On va pas te corriger ligne à ligne des fautes d'attention non plus. Beaucoup de champs dans ta table ont des underscores (_) que tu zappes dans ton script.
    D'une façon plus générale, dans la fonction bindValue(), le premier paramètre doit correspondre très exactement au nom de ton champ dans ta table.

    nb : date est un mot réservé SQL qu'il vaut mieux éviter dans ta table. A ta place, je mettrais facture_date du coup.
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  7. #7
    Invité
    Invité(e)
    Par défaut
    Dans les règles des messages, il est écrit : Le code HTML peut être employé : non
    Tu as vu ça où ???

    TOUT LE MONDE copie-colle ses codes dans le contenu des messages !
    Ensuite, on utilise la balise [CODE] (icone '#' du menu).

    ...cela ne fonctionne toujours pas.
    Je m'occupe de la gestion des erreurs plus tard.
    Il serait peut-être temps de t'en occuper maintenant !


    • ":montantht", "montant_ht"
    • ":taux", "taux_tva"
    • ":montant", "montant_ttc"
    • ...


    UNIFORMISE les nom des variables / placeholders / colonnes : ça t'évitera des erreurs bêtes...

  8. #8
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 627
    Points
    3 627
    Billets dans le blog
    8
    Par défaut
    @Jreaux : pour la gestion des erreurs, je crois que Stehag croit que tu parles du contrôle de saisie.
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  9. #9
    Invité
    Invité(e)
    Par défaut
    Ben oui, aussi.

    1- Là, aucun $_POST n'est vérifié.
    Si la requête plante, rien ne s'affiche.

    2- Et quid de l'affichage des erreurs PHP (donnée manquantes,...) ?
    A mettre en tête de fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <?php if( empty(session_id()) ){ session_start(); } // pour le jour où tu utiliseras des SESSION
    error_reporting(E_ALL); 	// Affichage des erreurs et les avertissements PHP
    3- Et si tu ne montres pas ton code CORRIGE, on ne peut pas savoir ce qui l'a été (corrigé).

  10. #10
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Citation Envoyé par stehag59 Voir le message
    Je m'occupe de la gestion des erreurs plus tard. Pour le moment, j'ai juste mis des required.
    Ok, je suis d'accord avec jreaux quant au fait qu'il vaut mieux le faire tout de suite, mais les required c'est déjà pas mal. Toutefois, il faut mettre required sur tous les champs obligatoires, c'est-à-dire dans ton cas, tous les champs de la table qui sont non null.

    Ce serait également une bonne idée d'activer les exceptions PDO, histoire de voir si la requête plante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $objetPDO->setAttritbute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    Citation Envoyé par stehag59 Voir le message
    Dans les règles des messages, il est écrit : Le code HTML peut être employé : non
    Citation Envoyé par jreaux62 Voir le message
    Tu as vu ça où ???
    En fait, oui, c'est effectivement écrit quelque part dans le fonctionnement du forum, mais ça ne veut pas dire que tu n'a a pas le droit d'écrire de code HTML sur le forum. Ce que ça veut dire, c'est que si tu écris <strong>le texte</strong>, ça va écrire <strong>le texte</strong> et non pas faire la mise en forme du type le texte.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Autre
    Inscrit en
    Avril 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Avril 2018
    Messages : 13
    Points : 9
    Points
    9
    Par défaut
    Merci pour vos conseils et remarques : j'apprends de mes erreurs de débutant.
    J'ai corrigé mon code et il fonctionne.
    Je dois maintenant coder le calcul du montant ttc en fonction du taux de tva sélectionné.
    voici mon code : (j'ai également corrigé les noms de mes tables)

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    <form action="insert.php" method="post"> 
        <div class="div-table-responsive-no-min">
            <table class="noberder">
                <tbody>
                    <tr class="liste_titre">
                        <td>Numéro de facture</td> 
                        <td>Date</td>
                        <td>Fournisseur</td>
                        <td>Montant HT</td>
                        <td>TVA</td>
                        <td>Montant TTC</td>
                        <td align="center">Action</td>
                    </tr>
                    <tr class="oddeven">
                        <td>
                            <input class="flat" size="15" name="numero" value="" type="text" required>
                        </td>
                        <td>
                            <input class="flat" size="15" name="date" value="" type="date" required>
                        </td>
                        <td>
                            <input class="flat" size="15" name="fournisseur"value="" type="text" required>
                        </td>
                        <td>
                            <input class="flat" size="15" name="montantHt" value="" type="text" required>
                        </td>
                        <td>                  
                            <select name="taux" >
                                <option value="0" >0</option>
                                <option value="2.1" >2.1</option>
                                <option value="5.5" >5.5</option>
                                <option value="10" >10</option>
                                <option value="20" >20</option>
                            </select>
                        </td>
                        <td>
                            <input class="flat" size="15" name="montantTTC" value="" type="text">
                        </td>
                        <td>
                            <input type="submit" name="achat" value="Ajouter">
                        </td>                  
                    </tr>
                </tbody>   
            </table>
        </div>   
    </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
    <?php
     
    if( empty(session_id()) ){ session_start(); } 
    // Affichage des erreurs et les avertissements PHP
    error_reporting(E_ALL); 	
     
    //test de connexion à la bdd
    try{
    $objetPdo = new PDO('mysql:host=localhost;dbname=dolibarr','root','');  
      }catch(PDOException $e){   
     die('Erreur : '.$e->getMessage());
    } 
        // préparation de la requète
        $pdoStat = $objetPdo->prepare('INSERT INTO achats VALUES (NULL, :num_facture, :facture_date, :nom_fournisseur, :montant_ht, :taux_tva, :montant_ttc)');
     
        //on lie chaque marqueur à une valeur
        $pdoStat->bindValue(':num_facture', $_POST['numero'], PDO::PARAM_STR);
        $pdoStat->bindValue(':facture_date', $_POST['date'], PDO::PARAM_STR);
        $pdoStat->bindValue(':nom_fournisseur', $_POST['fournisseur'], PDO::PARAM_STR);
        $pdoStat->bindValue(':montant_ht', $_POST['montantHt'], PDO::PARAM_STR);
        $pdoStat->bindValue(':taux_tva', $_POST['taux'], PDO::PARAM_STR);
        $pdoStat->bindValue(':montant_ttc', $_POST['montantTTC'], PDO::PARAM_STR);
     
        //execution de la requete
        $insertIsOK = $pdoStat->execute();
    ?>
    PS : les smileys correspondent à 2 points !

  12. #12
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 627
    Points
    3 627
    Billets dans le blog
    8
    Par défaut
    PDO:ARAM_STR


    C'est un code rigolo alors... C'est rare ça.
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  13. #13
    Futur Membre du Club
    Homme Profil pro
    Autre
    Inscrit en
    Avril 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Avril 2018
    Messages : 13
    Points : 9
    Points
    9
    Par défaut
    C'est involontaire. Les smileys sont apparus en publiant mon message. Bizarre...

  14. #14
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 627
    Points
    3 627
    Billets dans le blog
    8
    Par défaut
    Ben non pas bizarre :P c'est un smiley...
    Tu as "juste" oublié les balises code du forum (icone #)
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

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

Discussions similaires

  1. Réponses: 16
    Dernier message: 23/06/2016, 16h17
  2. Réponses: 1
    Dernier message: 22/04/2014, 16h32
  3. Remplissage d'une liste déroulante d'après base
    Par nicomax34 dans le forum Langage
    Réponses: 8
    Dernier message: 31/01/2009, 14h59
  4. Réponses: 1
    Dernier message: 20/03/2007, 09h24
  5. [MySQL] Enregistrer dans une base de données à partir d'une liste déroulante
    Par snakejl dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 17/05/2006, 16h32

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