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 :

Insérer avec liste déroulante dans base de données


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2019
    Messages : 7
    Par défaut Insérer avec liste déroulante dans base de données
    Bonjour,

    Après avoir cherché dans des multiples forum je n'ai toujours pas trouvé de réponse.

    J'aimerai pouvoir insérer des données dans une table et utiliser une liste déroulante provenant d'une autre table de la base de données. Donc pour résumer pouvoir insérer dans une table à partir d'une liste déroulante.

    Merci de votre aide.

    Hugo.

    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    <?php
    session_start();
     
        $basededonnees = mysqli_connect('127.0.0.1', 'root', '', 'application');
     
        if(isset($_POST['listeappliformulaire']))
        {
            $libelle_application=htmlspecialchars($_POST['libelle_application']);
            $version_application=htmlspecialchars($_POST['version_application']);
            $liste_id_editeur=($_POST['liste_id_editeur']);
     
            if (!empty($_POST['libelle_application']) AND !empty($_POST['version_application']) AND !empty($_POST['liste_id_editeur']))
            {
                $libelle_applicationlenght=strlen($libelle_application);
                $version_applicationlenght=strlen($version_application);
     
                if ($libelle_applicationlenght <= 50 AND $version_applicationlenght <= 50)
                {
                    $libelle_applicationMin=strtolower($libelle_application);
                    $libelle_applicationMaj=ucwords($libelle_applicationMin);
     
                    $version_applicationMin=strtolower($version_application);
                    $version_applicationMaj=ucwords($version_applicationMin);
     
                    $requete_liste_applicationsexistant = ("SELECT * FROM r06_liste_applications_pilotage WHERE r06_libelle_application_pilotage ='$libelle_application' AND r06_version_application_pilotage ='$version_application'");
                    $resultat=mysqli_query($basededonnees,$requete_liste_applicationsexistant) or die(mysqli_error($basededonnees));
                    $row_cnt = mysqli_num_rows($resultat) or die(mysqli_error($basededonnees));
                    if($row_cnt == 0)
                    {
                        $requete_inserer_liste_application_pilotage = ("INSERT INTO r06_liste_applications_pilotage VALUES ('0', '$libelle_applicationMaj', '$version_applicationMaj', '$liste_id_editeur')");
                        mysqli_query($basededonnees,$requete_inserer_liste_application_pilotage) or die(mysqli_error($basededonnees));
     
                        $message = "La nouvelle liste a bien été créée";
     
                    }
                    else
                    {
                        $erreur = "La liste existe déjà";
                    }
                }
                else
                {
                    $erreur = "Le nombre de caractères maximum est 50 caractères";
                }
     
            }
            else
            {
                $erreur = "Tous les champs doivent être complétés";
            }
        }
    ?>
     
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8">
            <link rel="stylesheet" type="text/css" href="http://127.0.0.1:8000/edsa-eds-www/TEST%20V1/Style/style.css">
            <title>Ajouter Liste d'Applications Pilotage</title>
        </head>
        <body>
            <div class="titre2">
                <h3>Ajout d'une Liste d'Applications de Pilotage</h3>
            </div>
     
            <div class="forminscription">
                <form method="POST" action="">
                    <table>
                        <tr>
                            <td><label for="libelle_application">Libellé de Liste d'Applications de Pilotage:</label></td>
                            <td><input type="text" name="libelle_application" id="libelle_application" placeholder="Libellé de la Liste"></td>
                        </tr>
                        <tr>
                            <td><label for="version_application">Version de Liste d'Applications de Pilotage:</label></td>
                            <td><input type="text" name="version_application" id="version_application" placeholder="Version de la Liste"></td>
                        </tr>
                        <tr>
                            <td><label for="liste_id_editeur">Id de l'Editeur:</label></td>
                            <td>
                                <select name="liste_id_editeur" id="liste_id_editeur">
                                    <?php
                                        $requete_liste_deroulante='SELECT * FROM r05_editeur';
                                        $resultatliste = mysqli_query($basededonnees,$requete_liste_deroulante);
                                        while ($LD = mysqli_fetch_assoc($resultatliste))
                                            {
                                                echo'<option id="'.$LD['r05_id'].'">'.$LD['r05_nom_editeur'].'</option>';
                                            }
     
                                    ?>
                                </select>
                            </td>
                        </tr>
                        <tr>
                            <td></td>
                            <td align="center"><input type="submit" name="listeappliformulaire" value="Créer la Nouvelle Liste d'Applications"></td>
                        </tr>
                    </table>
                </form>
            </div>
     
            <div class="instructionsform">
                <?php
                if (isset($erreur))
                {
                    echo '<font color="red">'.$erreur.'</font>';
                }
     
                if (isset($message))
                {
                    echo '<font color="green">'.$message.'</font><br />';
                }
                ?>  
            </div>
     
            <ul class="menupage">
              <li><a href="AjouterListeApplications.php">RAFFRAICHIR LA PAGE</a></li>
              <li><a href="AjouterListeApplications.php">AJOUTER UNE NOUVELLE LISTE D'APPLICATIONS</a></li>
              <li><a href="ParametresListeApplications.php">AFFICHER LES AUTRES LISTE D'APPLICATIONS</a></li>
              <li><a href="Parametres.php">Retour Paramètres</a></li>
              <li><a href="..\MenuPrincipal\MenuPrincipal.php">Retour Menu Principal</a></li>
            </ul>
     
            <?php
                /* Fermeture de la connexion */
                mysqli_close($basededonnees);
            ?>
        </body>
    </html>





    Le code annonce aucune erreur, mais il ne créé aucun contenu dans la table de la base de données.

    Je pense que le problème se situe ici:

    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
    <tr>
       <td><label for="liste_id_editeur">Id de l'Editeur:</label></td>
       <td>
        <select name="liste_id_editeur" id="liste_id_editeur">
        <?php
             $requete_liste_deroulante='SELECT * FROM r05_editeur';
             $resultatliste = mysqli_query($basededonnees,$requete_liste_deroulante);
             while ($LD = mysqli_fetch_assoc($resultatliste))
            {
                echo'<option id="'.$LD['r05_id'].'">'.$LD['r05_nom_editeur'].'</option>';
            }
     
        ?>
        </select>
        </td>
    </tr>
    Mais impossible de trouver comment le résoudre.

    Je l'impression que la liste ne renvoie rien, c'est-à-dire que lorsque j'active le bouton de validation du formulaire une autre page vide s'ouvre et ensuite plus rien ne se passe.

  2. #2
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 518
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 518
    Par défaut
    En php tu peux afficher les erreurs en ajoutant ces lignes tout au début du fichier php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ini_set('display_errors', 1);
    ini_set('display_startup_errors', 1);
    error_reporting(E_ALL);
    Puis essaie de voir le contenu de la variable $resultatliste avec var_dump()
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $requete_liste_deroulante='SELECT * FROM r05_editeur';
    $resultatliste = mysqli_query($basededonnees,$requete_liste_deroulante);
    var_dump(mysqli_fetch_all($resultatliste) );//voir le contenu...
    ....

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2019
    Messages : 7
    Par défaut
    Re bonjour merci Toufik, même lorsque je mets var_dump la page n'affiche rien.

    Je remplis mon formulaire puis quand je le valide il m'ouvre la même page mais avec rien d'affiché dessus.

    Mais après ce que j’aimerai faire c'est remplir mon formulaire qui permet de remplir ma table r06_liste_applications_pilotage de ma base de données en rentrant 3 données dans le formulaire, 2 sont des inputs de texte que l'on rentre et la 3e donnée est une liste déroulante de la table r05_editeur que l'on affiche et on peut choisir l'editeur précédemment rentré dans la table r05_editeur puis on valide notre choix, ce qui nous fait ajouter la nouvelle liste dans la base de données.

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

    ce n'est pas <option id="...">, mais <option value="...">.

  5. #5
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 518
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 518
    Par défaut
    Salut,

    je viens de tester et j'ai trouvé deux lignes qui bloquent l'enregistrement.

    ligne 27
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $row_cnt = mysqli_num_rows($resultat) or die(mysqli_error($basededonnees));
    à remplacer par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $row_cnt = mysqli_num_rows($resultat);
    ligne 30, supprimer les parenthèses autour de la requête mysql et si l'identifiant de la table est en auto-incrémente, tu remplaces le '0' par null :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $requete_inserer_liste_application_pilotage = "INSERT INTO r06_liste_applications_pilotage VALUES (null,'$libelle_applicationMaj', '$version_applicationMaj', '$liste_id_editeur')";
    Ne pas oublier aussi d'ajouter un utf8_decode autour des variables $libelle_application et version_application, pour les accents :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $libelle_application=utf8_decode(htmlspecialchars($_POST['libelle_application']));
    $version_application=utf8_decode(htmlspecialchars($_POST['version_application']));

  6. #6
    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 : 40
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Je ne suis pas d'accord avec ceci :
    Citation Envoyé par Toufik83 Voir le message
    Ne pas oublier aussi d'ajouter un utf8_decode autour des variables $libelle_application et version_application, pour les accents :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $libelle_application=utf8_decode(htmlspecialchars($_POST['libelle_application']));
    $version_application=utf8_decode(htmlspecialchars($_POST['version_application']));
    utf8_decode n'a d'intérêt dans ce contexte que si la page HTML générée n'est pas en encodage UTF-8 (ce qui n'est pas franchement recommandé). Est-ce le cas ?
    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]

Discussions similaires

  1. comment insérer la liste déroulante dans BD
    Par syrine01 dans le forum Langage
    Réponses: 3
    Dernier message: 16/12/2013, 15h31
  2. [XL-2007] Liste déroulante et base de données
    Par colapsus dans le forum Macros et VBA Excel
    Réponses: 67
    Dernier message: 10/02/2012, 12h50
  3. Réponses: 3
    Dernier message: 17/09/2009, 15h26
  4. problème liste déroulante et base de donnée
    Par sbcbc dans le forum Langage
    Réponses: 4
    Dernier message: 07/09/2009, 13h08
  5. [MySQL] Liste déroulante et base de données
    Par lanysteph dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 20/10/2006, 12h07

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