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 :

Récupérer 2 champs de ma clef étrangère (liste déroulante) [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre actif
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Septembre 2009
    Messages
    458
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Septembre 2009
    Messages : 458
    Points : 237
    Points
    237
    Par défaut Récupérer 2 champs de ma clef étrangère (liste déroulante)
    Bonsoir,

    Je suis bloqué depuis aujourd'hui, je me permets de vous écrire.

    En résumé nous avons deux tables, la première entité se nomme feedbacks elle contient les colonnes suivantes (id_feedback, lesson_feedback, description_feedback, fk_candidat).

    La seconde table s'intitule candidats et nous avons les colonnes suivantes (id_candidat, name_candidat, firstname_candidat).

    Mon objectif est de pouvoir ajouter un feedback en ayant les champs suivants: lesson, description, nom du candidat et le prénom du candidat, dans mon formulaire d'enregistrement.

    Voici une illustration ci-dessous:



    Comment le voyez dans l'image je parviens à récupérer la clef étrangère pour le name_candidat mais pas pour le firstname_candidat

    Je pense que mon problème est dans mon formulaire

    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
    <form action="add_feedbacks.php" method="POST">
    <table>
       <tr><td>Lesson:</td><td><input type="text" name="lesson_feedback'"/></td></tr>
       <tr><td>Description:</td><td><input type="text" name="description_feedback'"/ </td></tr>
       <tr><td>Name candidat:</td><td><select name="fk_candidat" style="width:148px">
       <?php
     
       while($row = $sql->fetch()) { 
       ?>
     
       <option value="<?= $row['id_candidat']; ?>"><?= $row['name_candidat'];?>    </option>
     
       <?php
       }
       ?>
       </select>
     
       <tr><td>Firstname candidat:</td><td><select name="fk_candidat" style="width:148px">
       <?php
       while($row = $sql->fetch()) { 
       ?>
       <option value="<?= $row['id_candidat']; ?>"<?= $row['firstname_candidat'];?></option>
      <?php
      }
      ?>
      </select>
     
      <tr><td colspan="2"><input class="button" type="submit" value="Ajouter"/> 
      </td></tr>
    </table>
     
    </form>
    Je suppose qu'on peut utiliser 2 listes déroulantes pour une clef étrangère ? Je pense que le soucis vient d'ici ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <tr><td>Firstname candidat:</td><td><select name="fk_candidat" style="width:148px">
       <?php
       while($row = $sql->fetch()) { 
       ?>
       <option value="<?= $row['id_candidat']; ?>"<?= $row['firstname_candidat'];?></option>
      <?php
      }
      ?>
      </select>

  2. #2
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Le problème vient de ce que tu fais 2 fetch sur le même ensemble de données. A la fin du premier toutes les données ont été lues et donc quand tu fais le second while il n’y a plus rien à lire.
    Tu peux t’en sortir en refaisant un $sql->execute(); avant le second while.
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  3. #3
    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
    Je ne suis pas sure de bien voir l'intérêt de tes deux listes
    Tu as prévu le cas où on sélectionne deux personnes différentes dans les deux listes ? Genre si en base tu as 1 : Pierre Dupont et 2 : Jean Durand et que tu sélectionnes Pierre et Durand dans tes listes ?

    Ce ne serait pas plus simple d'avoir une seule liste qui afficherait Nom et prénom ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <tr><td>Candidat:</td><td><select name="fk_candidat" style="width:148px">
       <?php
       while($row = $sql->fetch()) { 
       ?>
       <option value="<?= $row['id_candidat']; ?>"<?= $row['firstname_candidat'].' '.$row['name_candidat'];?></option>
      <?php
      }
      ?>
      </select>
    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]

  4. #4
    Membre actif
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Septembre 2009
    Messages
    458
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Septembre 2009
    Messages : 458
    Points : 237
    Points
    237
    Par défaut
    Bonjour,

    Merci pour vos explications, j'ai compris d'où venait mon erreur, je ne savais pas qu'on pouvait regrouper 2 champs dans une liste, j'ai appris un truc aujourd'hui.

    Bonne fin de journée

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

Discussions similaires

  1. [MySQL] Comment récupérer un champ sélectionné à partir d'une liste déroulante?
    Par biba2386 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 16/05/2008, 14h21
  2. Réponses: 2
    Dernier message: 03/12/2007, 09h57
  3. remplir champs d'une table à partir liste déroulante
    Par karidrou dans le forum Access
    Réponses: 7
    Dernier message: 08/01/2007, 16h21
  4. Désactiver un champ texte à partir d'un liste déroulante
    Par illegalsene dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 04/05/2006, 14h40
  5. Remplir 3 champs textes différents avec une liste déroulante
    Par azorol dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 20/12/2005, 00h04

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