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 :

enregistrement donnée liste déroulante d'une table [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 15
    Par défaut enregistrement donnée liste déroulante d'une table
    Bonjour,
    J'ai crée une partie administration pour gérer des collaborateurs.
    Je souhaite donc enregistrer des données qui sont dans un formulaire de type "Civilité, Nom, prénom adresse etc"
    Pour les civilités, j'ai crée une table contenant "M. Mme. et Mlle."

    J'envoie les données du formulaire dans un fichier appelé 'add.php' et dans celui çi je récupère mes infos postés de la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if(isset($_POST['collab_nom'])) $collab_nom=$_POST['collab_nom'];
    	else      $collab_nom ="";
     
    	if(isset($_POST['collab_prenom']))      $collab_prenom=$_POST['collab_prenom'];
    	else      $collab_prenom ="";
    etc...

    Ma question est comment récupérer l'information pour les civilités sachant que j'ai fait un sélect de type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <select name="civilite_id" id="civilite_id">
    					<?php
                        while ( $list1 = mysql_fetch_array( $query1 ) ) {
                        echo "<option value=".$list1['civilite_id'].">".$list1['civilite_description']."</option>";
                        }					 
                        ?>
         		 </select>
    Tout fonctionne à part pour la civilité, je ne sais pas comment écrire le code pour qu'il récupère la donnée de la liste déroulante et ensuite l'enregistrer dans ma table des collaborateurs dans le champ que j'ai crée 'collab-civilite'

    Ma requête pour le moment (lorsque je n'avais pas encore fait de liste déroulante pour la civilité) est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $sql = "INSERT INTO Mairie_collab  (collab_id, collab_civilite, collab_nom, collab_prenom,
     VALUES ('', '$collab_civilite', '$collab_nom', '$collab_prenom')
    Je vous prie de m'excuser par avance si une question de ce type a déjà été posté, j'ai cherché mais n'ai rien trouvé.

    Je précise que la table civilité est un impératif et ne peut pas faire autrement.
    Merci d'avance.

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Bonsoir,

    Je ne vois pas où est ton problème
    Sinon, ton select est entre la balise form que tu submit?

    A+.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    la question qui se pose, c'est qu'enregistres-tu dans le champ "collab_civilite" de la table Mairie_collab ?

    si c'est "civilite_id", no problemo.

    si c'est "civilite_description" :
    - soit tu change dans le <select> value="xxx['civilite_description'] -> que tu récupères directement
    - soit tu gardes civilite_id dans le <select>, mais tu dois alors faire une requete pour récupérer le "civilite_description" avant de l'enregistrer ...

  4. #4
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 15
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    Bonjour,
    la question qui se pose, c'est qu'enregistres-tu dans le champ "collab_civilite" de la table Mairie_collab ?

    si c'est "civilite_id", no problemo.

    si c'est "civilite_description" :
    - soit tu change dans le <select> value="xxx['civilite_description'] -> que tu récupères directement
    - soit tu gardes civilite_id dans le <select>, mais tu dois alors faire une requete pour récupérer le "civilite_description" avant de l'enregistrer ...
    Ce que je veux enregistrer dans collab-civilite de la table Mairie_collab c'est bien civilite_description qui vient de la table Mairie_civilite.

    Excuse moi mais je comprends pas bien ta solution (peu d'expérience et quelques lenteurs à comprendre parfois lol)

    si je garde mon select comme il est écrit pour le moment :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <select name="civilite_id" id="civilite_id">
    					<?php
                        while ( $list1 = mysql_fetch_array( $query1 ) ) {
                        echo "<option value=".$list1['civilite_id'].">".$list1['civilite_description']."</option>";
                        }					 
                        ?>
         		 </select>
    Ma liste s'affiche bien pour la sélection.
    Donc dans mon fichier add.php qui reçoit mes données, que faut-il que j'écrive pour que ça enregistre

    Si je mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if(isset($_POST['civilite_description'])) $civilite_description=$_POST['civilite_description'];
    	else      $civilite_description ="";
    Je récupère logiquement l'info sélectionné (M., Mme ou Mlle) mais quoi écrire dans ma requête pour sauvegarder dans ma table Mairie_collab cette foutu civilité qui vient d'une autre table...
    Je suis paumé, merci de votre patience et votre aide.

  5. #5
    Invité
    Invité(e)
    Par défaut
    En fait, j'ai donné 2 solutions ... différentes. Il ne faut pas les mélanger.

    A quoi bon faire : value=".$list1['civilite_id']." si au final, c'est id_description qu'il faut enregistrer ?

    Ah ! c'est bon, je vois !
    tu ne sais pas quelle requete faire pour remplir le select, c'est ca ?
    (c'est la requete à faire avant le while ...)
    Pour les civilités, j'ai crée une table contenant "M. Mme. et Mlle."
    Peux-tu donner la structure et le nom de la table ?

  6. #6
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Euh, le name de ton select est civilite_id donc tu dois le récupérer avec $_POST['civilite_id'] mais pas $_POST['civilite_description']

  7. #7
    Expert confirmé

    Avatar de FirePrawn
    Homme Profil pro
    Consultant technique
    Inscrit en
    Mars 2011
    Messages
    3 179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique

    Informations forums :
    Inscription : Mars 2011
    Messages : 3 179
    Par défaut
    Bonjour,

    Ton problème se situe ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if(isset($_POST['civilite_description'])) $civilite_description=$_POST['civilite_description'];
    Ca n'existe pas ! Toi ce que tu as c'est $_POST['civilite_id'] !

    Change la value de ton <option> pour civilite_description.
    Avant toute chose : lire le mode d'emploi du forum et ses règles.
    Je ne réponds pas aux questions techniques en MP.

  8. #8
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 15
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    En fait, j'ai donné 2 solutions ... différentes. Il ne faut pas les mélanger.

    A quoi bon faire : value=".$list1['civilite_id']." si au final, c'est id_description qu'il faut enregistrer ?

    Ah ! c'est bon, je vois !
    tu ne sais pas quelle requete faire pour remplir le select, c'est ca ?
    (c'est la requete à faire avant le while ...)

    Peux-tu donner la structure et le nom de la table ?
    Je ne sais pas quelle requête écrire pour enregistrer la civilité choisi dans ma liste déroulante (civilite_description qui vient de la table Mairie_civilite) pour l'enregistrer dans le champ collab_civilite qui lui est dans la table Mairie_collab.(table qui regroupe toutes les informations du collaborateur, civilité, nom, prénom etc)

    En fait mon problème est juste l'enregistrement de la donnée du champ civilité puisque tous les autres champs je sais le faire. (ils sont tous dans des input name)
    Dans mon formulaire à la base, je vois bien ma liste déroulante qui provient de ma table Mairie_civilite, ça aucun problème.

    Mon problème est là, quand je passe dans add.php qui est mon fichier pour enregistrer les données je ne sais plus ce que je dois écrire...

  9. #9
    Expert confirmé

    Avatar de FirePrawn
    Homme Profil pro
    Consultant technique
    Inscrit en
    Mars 2011
    Messages
    3 179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique

    Informations forums :
    Inscription : Mars 2011
    Messages : 3 179
    Par défaut
    Citation Envoyé par mikounet Voir le message
    Je ne sais pas quelle requête écrire pour enregistrer la civilité choisi dans ma liste déroulante (civilite_description qui vient de la table Mairie_civilite) pour l'enregistrer dans le champ collab_civilite qui lui est dans la table Mairie_collab.(table qui regroupe toutes les informations du collaborateur, civilité, nom, prénom etc)

    En fait mon problème est juste l'enregistrement de la donnée du champ civilité puisque tous les autres champs je sais le faire. (ils sont tous dans des input name)
    Dans mon formulaire à la base, je vois bien ma liste déroulante qui provient de ma table Mairie_civilite, ça aucun problème.

    Mon problème est là, quand je passe dans add.php qui est mon fichier pour enregistrer les données je ne sais plus ce que je dois écrire...
    Cf la réponse d'andry et la mienne.
    Avant toute chose : lire le mode d'emploi du forum et ses règles.
    Je ne réponds pas aux questions techniques en MP.

  10. #10
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 15
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    Peux-tu donner la structure et le nom de la table ?
    La table s'appelle Mairie-civilite
    Il y'a deux champs
    civilite_id
    civilite_description (qui comprend M. Mme. Mlle.)

  11. #11
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Citation Envoyé par FirePrawn Voir le message
    Cf la réponse d'andry et la mienne.
    C'est pour qui ce message . C'est nous deux qui se lit .

  12. #12
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 15
    Par défaut
    Vraiment je ne fais pas exprès mais je n'y arrive pas :'(
    Je vais essayer d'expliquer à nouveau plus simplement.

    Je veux enregistrer un formulaire ou je renseigne des champs pour un collaborateur (civilité, nom, prénom)
    Mon fichier s'appelle 'insertion_collab.php'

    Voilà mon code
    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
    <tr>
                <td>Civilit&eacute; :</td>
                <td>
                  <select name="civilite_id" id="civilite_id">
    					<?php
                        while ( $list1 = mysql_fetch_array( $query1 ) ) {
                        echo "<option value=".$list1['civilite_id'].">".$list1['civilite_description']."</option>";
                        }					 
                        ?>
         		 </select>
                </font></div></td>
              </tr>
     
              <tr>
                <td>Nom : </td>
                <td>
                  <input name="collab_nom" type="text" id="collab_nom" size="75" maxlength="60" />
                </td>
              </tr>
     
               <tr>
                <td>Pr&eacute;nom : </td>
                <td>
                  <input name="collab_prenom" type="text" id="collab_prenom" size="75" maxlength="60" />
                </font></div></td>
              </tr>
    Tout ça dans un formulaire qui part dans le fichier add.php ou je récupère mes données

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    // On commence par récupérer les champs 
     
            if(isset($_POST['????????])) $????????=$_POST['???????'];
    	else      $????????? ="";
     
    	if(isset($_POST['collab_nom'])) $collab_nom=$_POST['collab_nom'];
    	else      $collab_nom ="";
     
    	if(isset($_POST['collab_prenom']))      $collab_prenom=$_POST['collab_prenom'];
    	else      $collab_prenom ="";
    La requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $sql = "INSERT INTO Mairie_collab  (collab_id, collab_civilite, collab_nom, collab_prenom)
    VALUES ('', '$collab_civilite', '$collab_nom', '$collab_prenom' )";
    Le nom et prénom s'enregistre bien aucun soucis.

    J'ai mis ????? dans le premier if pour les civilités car je ne comprends vraiment plus ce que je dois récupérer et quel requête écrire...

  13. #13
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Citation Envoyé par andry.aime Voir le message
    Euh, le name de ton select est civilite_id donc tu dois le récupérer avec $_POST['civilite_id'] mais pas $_POST['civilite_description']

  14. #14
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
                  <select name="civilite_id" id="civilite_id">
    					<?php
                        // ICI, il devrait y avoir LA REQUETE !
                       // ....
                        while ( $list1 = mysql_fetch_array( $query1 ) ) {
                        echo "<option value=".$list1['civilite_id'].">".$list1['civilite_description']."</option>";
                        }					 
                        ?>
         		 </select>
    1/ Où est la REQUETE qui permet d'afficher les options ??

    2/ REMPLACE
    <select name="civilite_id" id="civilite_id">
    ...
    echo "<option value=".$list1['civilite_id'].">".$list1['civilite_description']."</option>";
    par
    <select name="civilite_description" id="civilite_description">
    ...
    echo "<option value=".$list1['civilite_description'].">".$list1['civilite_description']."</option>";
    3/ recupération
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
             // nom categorie
    		if(isset($_POST['civilite_description'])) 
    		{		$collab_civilite = $_POST['civilite_description']; }
    		else {		$collab_civilite = ''; }
    PS :il faut aussi PROTEGER la BD CONTRE LES INJECTIONS SQL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    // avant enregistrement en BdD :
    		$collab_civilite = mysql_real_escape_string($collab_civilite);
    // idem pour les autres champs
    @andry.aime & FirePrawn : inutile d'en rajouter, laissez-le respirer ! il a déjà coulé ! ... Je suis en pleine ré-animation !
    Dernière modification par Invité ; 10/08/2011 à 15h06.

  15. #15
    Expert confirmé

    Avatar de FirePrawn
    Homme Profil pro
    Consultant technique
    Inscrit en
    Mars 2011
    Messages
    3 179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique

    Informations forums :
    Inscription : Mars 2011
    Messages : 3 179
    Par défaut
    Edit : bon finalement j'vais rester gentil. Fais comme jreaux a dit, et ça marchera
    Avant toute chose : lire le mode d'emploi du forum et ses règles.
    Je ne réponds pas aux questions techniques en MP.

  16. #16
    Membre Expert Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 895
    Par défaut
    Salut, tu m'as contacté pour que je jette un oeil à ton problème. Je suis arrivé à la une conclusion et j'ai remarqué qu'elle avait déjà été donnée donc je vais juste la copier/coller:

    Citation Envoyé par andry.aime Voir le message
    Euh, le name de ton select est civilite_id donc tu dois le récupérer avec $_POST['civilite_id'] mais pas $_POST['civilite_description']


    NB: Sinon sincèrement, je ne vois pas l'utilité de la table civilites J'ai bien lu que tu étais "obligé" mais je ne comprends vraiment pas...
    Ceci est quand même bien plus simple :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <select name="civilite">
    <option value="monsieur">Mr</option>
    <option value="madame">Mme</option>
    <option value="mademoiselle">Mlle</option>
    </select>

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    // On commence par récupérer les champs 
     
            if(isset($_POST['civilite'])) $collab_civilite=$_POST['civilite'];
    	else      $civilite ="";
     
    	if(isset($_POST['collab_nom'])) $collab_nom=$_POST['collab_nom'];
    	else      $collab_nom ="";
     
    	if(isset($_POST['collab_prenom']))      $collab_prenom=$_POST['collab_prenom'];
    	else      $collab_prenom ="";
    et puis la requête:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $sql = "INSERT INTO Mairie_collab  (collab_civilite, collab_nom, collab_prenom)
    VALUES ('$collab_civilite', '$collab_nom', '$collab_prenom' )";

    NB2: tes requêtes ne sont pas sécurisées mais on pourra voir ça après ton problème principal ^^

  17. #17
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Re,

    Apparemment tu confonds le nom de colonnes de tes tables avec le nom des éléments de ton formulaire. Ceux sont deux choses bien différents.

    A+.

  18. #18
    Invité
    Invité(e)
    Par défaut
    ... trop tard ... on l'a perdu ...

  19. #19
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 15
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
                  <select name="civilite_id" id="civilite_id">
    					<?php
                        // ICI, il devrait y avoir LA REQUETE !
                       // ....
                        while ( $list1 = mysql_fetch_array( $query1 ) ) {
                        echo "<option value=".$list1['civilite_id'].">".$list1['civilite_description']."</option>";
                        }					 
                        ?>
         		 </select>
    1/ Où est la REQUETE qui permet d'afficher les options ??



    @andry.aime & FirePrawn : inutile d'en rajouter, laissez-le respirer ! il a déjà coulé ! ... Je suis en pleine ré-animation !
    Merci de ta patience c'est vrai que je suis complètement coulé sur un problème qui ne me parait pas si compliqué que ça... comme quoi

    Ma requête était placé en début de fichier en fait,
    J'ai écrit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    //Création requete pour la liste des civilites
    				$sql1 = "SELECT * FROM Mairie_civilite  order by civilite_id";
    				$query1 = mysql_query($sql1) or die('Erreur civilit&eacute;s' );
    @andry.aime J'ai bien vu ce que tu m'as dit mais si j'écris :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if(isset($_POST['civilite_id'])) $civilite_id=$_POST['civilite_id'];
    	else      $civilite_id ="";
    Déjà est ce bien ça que je dois écrire ? Et ensuite comment lui faire enregistrer dans ma table Mairie_collab dans le champ 'collab_civilite' ce foutu champ 'civilite_description' venant de ma liste déroulante et qui vient d'une autre table (Mairie_civilite)

  20. #20
    Invité
    Invité(e)
    Par défaut
    ... tout est ICI ! ...


    Je suis un incompris ...

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. enregistrer plusieurs colonnes d'une liste déroulante dans une table
    Par juliejuliejuliejulie dans le forum VBA Access
    Réponses: 5
    Dernier message: 19/06/2012, 18h18
  2. [MySQL] Liste déroulante d'une table : entrée manquante
    Par Lenezir dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 25/01/2008, 08h53
  3. [MySQL] Liste déroulante liée à une table
    Par fraisoo dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 09/02/2007, 06h20
  4. [Oracle] Remplir une liste déroulante avec une table
    Par CYCLOPE91440 dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 26/12/2006, 15h26
  5. Liste déroulante dans une table hyperfile
    Par arnaud_verlaine dans le forum WinDev
    Réponses: 8
    Dernier message: 01/11/2006, 18h27

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