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 :

zone de liste deroulante et recuperation de l'id [PDO]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Février 2005
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 277
    Par défaut zone de liste deroulante et recuperation de l'id
    Bonjour a vous tous,
    voila j'avance doucement dans l'apprentissage et je decouvre ici et la beaucoup de choses, mais aujourd'hui je suis devant une petite difficulte que je dois comprendre et resoudre pour continuer mon chemin.
    En effet j'ai besois de vos explications, conseils, sur les listes deroulante et la recuperation des donnees quelles affichent. He oui j'ai fait une liste deroulante dans mon formulaire ( qui fonctionne bien d'ailleurs) mais je voudrais savoir comment recuprer les donnees quelle affiche afin de les enregistre dans ma table.
    le vous joint mes codes pour une meilleur comprehension, en esperant comprendre ce qui ne marche pas.

    modelnomjeu.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
    16
    17
    18
    19
    20
    21
    <?php
     
    $pdo = new PDO("mysql:host=localhost;dbname=multi-admin", "root", "");
     
    function ajouterNomJeu($nomjeu, $marque)
    {
      global $pdo;
      $sql = "INSERT INTO nomjeu VALUES(null, ?, ?)";
      $stmt = $pdo->prepare($sql);
      $stmt->bindvalue(1, $nomjeu, PDO::PARAM_STR);
      $stmt->bindvalue(2, $marque, PDO::PARAM_STR);
      return $stmt->execute();
    }
    function getAllNomJeu()
    {
      global $pdo;
      $sql = "SELECT * FROM nomjeu";
      $stmt = $pdo->prepare($sql);
      $stmt->execute();
      return $stmt->fetchAll(PDO::FETCH_OBJ);
    }
    controlleurnomjeu.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
     
    require_once "modelnomjeu.php";
     
    $action = isset($_POST['action']) ? $_POST['action'] : '';
     
    switch($action)
    {
        case 'add':
          $nomjeu = $_POST['nomjeu'];
          $marque = $_POST['marque'];
          ajouterNomJeu($nomjeu, $marque);
          break;
    }
    $NomJeu = getAllNomJeu();
    NomJeu.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
    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
    <?php
     
    require_once "controlleurnomjeu.php";
     
     
    ?>
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport"
              content="width=device-width, user-scalable=no, initial-scale=1.0, maximun-scale=1.0">
        <meta htt-equiv="X-UA-Compatibe" content="ie=edge">
        <link rel="stylesheet" href="bootstrap/css/bootstrap.css">
        <title>Non des jeux</title>
    </head>
    <body>
      <div class="container">
          <center><h2>Gestion des jeux de Machines a sous</h2></center>
      </div>
        <center>
          <form action="" method="POST" class="form-inline">
            <input type="hidden" name="action" value="add">
            <input type="text" name="nomjeu" class="form-control" placeholder="Nom du Jeu">
            <?php
     
            $connection = new PDO("mysql:host=localhost;dbname=multi-admin", "root", "");
     
              $smt = $connection->prepare('SELECT marque FROM marques');
              $smt->execute();
              $data = $smt->fetchAll();
            ?>
            <select name="marque" id="lst_marque" class="form-control">
              <?php foreach ($data as $row): ?>
                <option><?=$row["marque"]?></option>
              <?php endforeach ?>
            </select>
            <button class="btn btn-success">Ajouter un nom de jeu</button>
          </form>
          <br>
          <table class="table table-bordered">
            <tr>
              <th class="col-md-2"></th>
              <th class="col-md-2">idnomjeu</th>
              <th class="col-md-2">nomjeu</th>
              <th class="col-md-2">idmarque</th>
              <th class="col-md-2"></th>
            </tr>
            <?php foreach ($NomJeu as $v)  :?>
              <tr>
                <td></td>
                <td><?= $v->idnomjeu ?></td>
                <td><?= $v->nomjeu ?></td>
                <td><?= $v->idmarque ?></td>
                <td></td>
              </tr>
            <?php endforeach; ?>
          </table>
        </center>
     
     
    </body>
    </html>
    en vous remerciant par avance
    HB

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Et tu obtiens quoi ?

    Tes <option> devraient avoir comme "value" l'id de la marque (puisque je devine que c'est ça que tu n'arrives pas à inserer).
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre éclairé
    Inscrit en
    Février 2005
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 277
    Par défaut
    Houps pardon,
    oui j'obtiens bien dans ma liste deroulante le nom de la marque, mais sans l'id et quand je fait enregistre j'ai cette erreur.

    Notice: Undefined index: marque in C:\wamp64\www\SlotsCasino\controlleurnomjeu.php on line 11

    encore un grand merci

    HB

  4. #4
    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
    @Sabotage : par défaut, si dans un <select> les <option> n'ont pas d'attribut value, c'est le libellé qui est envoyé. Donc l'absence de value ne devrait pas poser de problème, ou en tout cas, pas de problème au niveau de la récupération du formulaire.

    Vu ton code, la seule possibilité que je voie d'avoir un undefined index sur $_POST['marque'] serait que ta liste déroulante soit complètement vide. Ce serait d'ailleurs une bonne idée d'ajouter des validations pour gérer 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]

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Donc l'absence de value ne devrait pas poser de problème
    Cela pose le problème qu'on ne travaille pas avec l'id.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre éclairé
    Inscrit en
    Février 2005
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 277
    Par défaut
    Bonjour Celira et Sabotage,
    je me suis poser aussi cette question et j'ai donc mis deux valeurs dans ma la base de zone deroulante (que je recupere bien d'ailleurs)

    puis j'ai essayer une autre chose, pour voir comment cela ce passait, j'ai changer la methode POST en GET pour voir l'url et quand je clic sur le bouton "ajouter un nom de jeu" l'url est bien comme cela "Nomjeu.php?action=add&nomjeu=black&marque=Novomatic" mais rien ne s'enregistre dans ma base encore un grand merci

    HB

  7. #7
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 125
    Par défaut
    Citation Envoyé par hboisteau Voir le message
    oui j'obtiens bien dans ma liste deroulante le nom de la marque, mais sans l'id et quand je fait enregistre j'ai cette erreur.
    dans ta requête tu sélectionnes seulement la marque et non l'ID et la MARQUE.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $smt = $connection->prepare('SELECT marque FROM marques');
    donc je trouve normale que ça soit ainsi.
    il faut faire à mon avis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $smt = $connection->prepare('SELECT id, marque FROM marques');
    et dans ton <select >
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <select name="marque" id="lst_marque" class="form-control">
              <?php foreach ($data as $row): ?>
                <option value='<?=$row["id"]?>'><?=$row["marque"]?></option>
              <?php endforeach ?>
    </select>

  8. #8
    Membre éclairé
    Inscrit en
    Février 2005
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 277
    Par défaut
    Whaou! milles merci pour ce coup de pouce!

    effectivement j'avais vue que dans ma requete je ne recuperait pas l'id, mais pour le select j'ai compris.

    Encore un grand merci

    HB

  9. #9
    Membre éclairé
    Inscrit en
    Février 2005
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 277
    Par défaut
    Agrrrr! juste une autre petite question,

    en effet tout fonctionne parfaitement mais ma liste deroulante reste toujours affiche sur la premiere marque de ma liste hors je desirerait mettre un truc du genre placeholder (marque du jeu) mais cette fonction n'a pas l'air de fonctionne.

    Encore un grand merci

    HB

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

Discussions similaires

  1. Masquer flèche de zone de liste deroulante
    Par Flo4594 dans le forum IHM
    Réponses: 16
    Dernier message: 08/12/2006, 12h08
  2. mettre à jour une zone de liste deroulante ?
    Par jessy212 dans le forum Access
    Réponses: 2
    Dernier message: 30/08/2006, 14h50
  3. erreur avec une zone de liste deroulante
    Par MCarole dans le forum Access
    Réponses: 9
    Dernier message: 18/07/2006, 11h45
  4. Zone de liste deroulante avec preselection précise
    Par dynexd dans le forum Access
    Réponses: 7
    Dernier message: 20/02/2006, 17h25
  5. modification contenu zone de liste deroulante
    Par Tierisa dans le forum Access
    Réponses: 12
    Dernier message: 23/09/2005, 00h06

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