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 :

[SQL] Récupérer des variables d'une liste déroulante


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 29
    Points : 15
    Points
    15
    Par défaut [SQL] Récupérer des variables d'une liste déroulante
    Bonjour à tous et à toutes,
    j'ai un petit souci:
    voila j'ajoute des renseignements à partir d'un formulaire comportante des listes déroulantes. Ces variables vont bien s'enregistrer dans la BDD, mais au moment de les modifier ma variable réelle devient fausse et prend la 1ere par défaut
    Je m'explique:
    Quand j'enregistre on va mettre par exemple continent: Europe (de la liste déroulante)
    Mais si on veut modifier ce n'est plus europe qui s'aafiche mais afrique, c'est a dire le 1er de ma liste
    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
    if(isset($_POST['modif_chantier']))
            {
    			$modif_chantier = intval($_POST['modif_chantier']);
    			//SI LES CHAMPS N'EXISTENT PAS
    			if(!isset($_POST['modif_id_client']) || !isset($_POST['modif_nom_chantier'])
    				|| !isset($_POST['modif_mission']) || !isset($_POST['modif_ouvrage'])
    				|| !isset($_POST['modif_realisation']) || !isset($_POST['modif_explication'])
    				|| !isset($_POST['modif_continent']) || !isset($_POST['modif_pays'])
    				|| !isset($_POST['modif_ville']))
    			{
    				$selectMO="";
    				$selectAMO="";
    				$selectCE="";
    				$selectEE="";
    				$selectEX="";
     
    				// BOUCLE PERMETTANT DE TESTER LES DIFFERENTS CAS
    				switch($modif_mission)
    				{
    					case 'MO': $selectMO='SELECTED'; break;
    					case 'AMO': $selectAMO='SELECTED'; break;
    					case 'CE': $selectCE='SELECTED'; break;
    					case 'EE': $selectEE='SELECTED'; break;
    					case 'EX': $selectEX='SELECTED'; break;
    				}
     
    				$reponse = mysql_query("SELECT chantier.id_client, nom_chantier, mission, ouvrage,
    					realisation, explication, continent, pays, ville
    					FROM chantier
    					WHERE num_chantier='$modif_chantier'");
    				$donnees=mysql_fetch_array($reponse);
    ?>
    <form action="modif_chantier.php" method="post">
    <table border="1" class="table">
            <!-- ON CACHE LA VARIABLE -->
            <input type="hidden" name="modif_chantier" value="<?php echo $modif_chantier;?>"/>
            <tr>
                    <td>Numéro du chantier : </td>
                    <td><?php echo $modif_chantier;?></td>
            </tr>
            <tr>
                    <td>Numéro du client : </td>
                    <td><input type="text" name="modif_id_client" class="livre_dor" value="<?php echo $donnees['id_client'];?>"/></td>
            </tr>
            <tr>
                    <td>Nom du chantier : </td>
                    <td>
                    <textarea name="modif_nom_chantier" class="livre_dor" cols="27" rows="5"><?php echo $donnees['nom_chantier'];?></textarea>
                    </td>
            </tr>
    		<tr><td>Mission : </td>
            <td><select name="modif_mission" class="livre_dor">
    		<option <?php echo $selectMO; ?> value="MO"> Maitrise d'Oeuvre </option>
    		<option <?php echo $selectAMO; ?> value="AMO"> Assistance à la Maitrise d'ouvrage </option>
    		<option <?php echo $selectCE; ?> value="CE">Contrôle d'Etudes </option>
    		<option <?php echo $selectEE; ?> value="EE"> Etudes d'Exécution </option>
    		<option <?php echo $selectEX; ?> value="EX"> Expertise & Conception</option>
    		</select></td></tr>
    CODE COUPE PUIS
    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
    if(isset($_POST['envoyer']))
    			{
                    // DEUXIÈME REQUETE POUR LES MODIFICATIONS
                    // SI LES VARIABLES EXISTENT
                    if(isset($_POST['modif_id_client']) && isset($_POST['modif_nom_chantier'])
    					&& isset($_POST['modif_mission']) && isset($_POST['modif_ouvrage'])
    					&& isset($_POST['modif_realisation']) && isset($_POST['modif_explication'])
    					&& isset($_POST['modif_continent']) && isset($_POST['modif_pays'])
    					&& isset($_POST['modif_ville']))
                    {
    					$modif_id_client=intval($_POST['modif_id_client']);
    					$modif_nom_chantier=mysql_real_escape_string($_POST['modif_nom_chantier']);
    					$modif_mission=mysql_real_escape_string($_POST['modif_mission']);
    					$modif_ouvrage=mysql_real_escape_string($_POST['modif_ouvrage']);
    					$modif_realisation=mysql_real_escape_string($_POST['modif_realisation']);
    					$modif_explication=mysql_real_escape_string($_POST['modif_explication']);
    					$modif_continent=mysql_real_escape_string($_POST['modif_continent']);
    					$modif_pays=mysql_real_escape_string($_POST['modif_pays']);
    					$modif_ville=mysql_real_escape_string($_POST['modif_ville']);
     
    					$modif_realisation = nl2br($modif_realisation);
    					$modif_explication = nl2br($modif_explication);  
     
    					mysql_query("UPDATE chantier SET
    						chantier.id_client='$modif_id_client',
    						nom_chantier='$modif_nom_chantier',
    						mission='$modif_mission',
    						ouvrage='$modif_ouvrage',
    						realisation='$modif_realisation',
    						explication='$modif_explication',
    						continent='$modif_continent',
    						pays='$modif_pays',
    						ville='$modif_ville'
    						WHERE num_chantier='$modif_chantier'")
    						or die(mysql_error());
                    }
    				echo "<p align='center'> Les modifications ont été effectuées ! </p>";
    				include "que_voulez_vous_faire.php";
    et l'erreur est :
    Notice: Undefined index: modif_mission
    qui est pourtant déclaré...
    Quelqu'un peu m'aider STP
    Merci a vous
    Mélanie

  2. #2
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 70
    Points : 55
    Points
    55
    Par défaut
    moi aussi j'ai une erreur de ce style c'est a dire que je met une certaine donnée à partir d'une liste déroulante ça s'enregistre bien dans ma base de données mais quand je fais modifier à partir de ma page et bien il me met la première valeur comme pour jermel2........pourtant j'ai d'autre listes déroulantes et ça fonctionne super bien mais pas avec celle-ci .......

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 115
    Points : 104
    Points
    104
    Par défaut
    J'ai parcouru vite fait le code mais ça me paraît normal ce problème. Je n'ai pas vu de valeur par défaut de la liste donc en gros elle affiche la première option.

    Pour que la valeur de la liste prenne celle qui se trouve dans la base de données, il faut utiliser selected dans la balise option. Petit exemple rapide avec une date (sachant que $jour_d contient le résultat d'une requête SQL)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
                      <?php  
                      for($i=1;$i<32;$i++)
                      {
                         if($i==$jour_d)
                            $checked=" selected";
                         else
                            $checked="";
     
                         if($i<10)
                            echo "<option value=0$i $checked>0$i</option>";
                         else
                            echo "<option value=$i $checked>$i</option>";
                      }
                      ?>
    sinon pour modif_mission certe elle est déclarée mais tu as fait un echo pour voir ce qu'elle contient ?

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 50
    Points : 56
    Points
    56
    Par défaut
    Salut,

    Le choix de l'élément à afficher dans la combo sera déterminé par la présence ou non de l'attribut "selected" (jusqu'ici tout va bien), as tu essayé de suivre la valeur de tes variables $selectXX en faisant des "echo" jusqu'a ton select?
    Si oui, à quel moment n'ont elle plus la bonne valeur?

  5. #5
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 70
    Points : 55
    Points
    55
    Par défaut
    ok merci je testerais avec un selected dans ma balise option
    pour les echo je sais pas mais en tout cas ma requete fonctionne

  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 : 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
    Salut

    En plus de tout ce qui vient d'être cité, je te conseille d'ajouter un print_r($_POST) en début de script, qui te permettra de connaitre toutes les valeurs passées par POST. Des fois, ça sert...

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php print_r($_POST); ?>

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 115
    Points : 104
    Points
    104
    Par défaut
    oui désolé j'ai parcouru trop vite effectivement les selected y sont, comme le dit Pysk0B0b essaie de suivre leurs valeurs

    sinon tu peux essayer à la place de echo <?=$selectAMO;?>

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 29
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par Pysk0B0b
    Salut,
    as tu essayé de suivre la valeur de tes variables $selectXX en faisant des "echo" jusqu'a ton select?
    Si oui, à quel moment n'ont elle plus la bonne valeur?
    J'avais déjà testé avec des echo mais le problème c'est que ne partant du principe ou modif_mission n'est pas déclaré, il ne rentre meme pas dans mon switch. D'ou mon problème puisque pour moi tout est déclaré, testé...
    Du coup j'ai testé avec d'autre listes déroulantes et le problème est le meme...
    La question que je me suis posée:
    Sachant que lorsque j'intègre dans ma BDD les valeurs de mes liste déroulantes, le nom de mon <option> n'est pas modif_mission mais mission
    Pourtant j'ai testé mais ça ne m'a rien changé et il me récupère bien mais autres variables sauf celle de la liste
    Je deviens vraiment a cours d'idées
    Meric de votre aide
    Melanie

  9. #9
    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
    Et mon print_r, tu l'as testé ?
    Normalement, ça donne une horrible série de trucs de la forme
    Array ([variable1] => valeur1 [variable2] => valeur2 )

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 29
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par Celira
    Et mon print_r, tu l'as testé ?
    Normalement, ça donne une horrible série de trucs de la forme
    Lol, oui j'ai testé et ça ne me donne pas du tout un truc bien moche mais tout a fait ce que je lui ai demandé c'est a dire:
    Array ( [modif_chantier] => 62 )
    de modifier le numéro de chantier = 62 tout semble bon
    Tous les renseignements de la BDD s'affichent convenablement sauf mes listes Mais si je les modifient elles sont bien prises en comptes c'est ça le plus horrible, bon principe, mais mauvais affichage

  11. #11
    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 croyais que ton index qui existe sans exister c'était modif_mission. As-tu ou non cet index là dans la liste ?

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 115
    Points : 104
    Points
    104
    Par défaut
    et modif_mission avec print_r ?

    sinon essaie de passer modif_mission avec GET ou place la variable dans une session, avec le code coupe je vois mal la structure mais modif_mission n'est affectée que lorsque tu fais envoyer

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 29
    Points : 15
    Points
    15
    Par défaut
    oui tout a fait.
    Ce qui se passe en fait c'est que je rentre l'ID d'un chantier et tous mes renseignements de la BDD s'affichent dans mon formulaire
    si je teste <?php print_r($_POST); ?> avant mon <select> il m'affiche le numero du chantier que je veux modifier, mais si je le test avant mes <option> il n'apparrait meme pas sur ma page

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 29
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par Odulo
    et modif_mission avec print_r ?

    sinon essaie de passer modif_mission avec GET ou place la variable dans une session, avec le code coupe je vois mal la structure mais modif_mission n'est affectée que lorsque tu fais envoyer
    Le code coupé fini mon formulaire avec pour finir un bouton reset et un bouton submit
    je lui dis que si envoyer existe alors il fait les modifications dans la BDD et la il n'y a pas de souci c'est vraiment à l'affichage quand il doit récupérer les variables de la base qui ne passent pas.
    En gros quand il affiche mon formulaire avec les champs de la BDD, ça donne un effet de formulaire pré-rempli, tu vois mon souci ?

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 115
    Points : 104
    Points
    104
    Par défaut
    quelque chose doit m'échapper dans le problème : le problème se situe bien au niveau de modif_mission ? si oui quel est le rapport avec l'id du chantier puisque modif_chantier n'intervient pas dans la liste déroulante, non ?

    ton switch se base sur modif_mission que tu n'attribues que sur Envoyer donc il me paraît normal que pour lui cette variable ne soit pas déclarée. Bref j'ai la puce à l'oreille à ce niveau.

  16. #16
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 70
    Points : 55
    Points
    55
    Par défaut
    sur ma liste déroulante j'ai bien vérifié le selected et je l'avais déjà mis......je vais essayer vos autre méthodes mais je ne comprends pas vraiment leur principe

  17. #17
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 29
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par Odulo
    quelque chose doit m'échapper dans le problème : le problème se situe bien au niveau de modif_mission ? si oui quel est le rapport avec l'id du chantier ?
    J'admet que je m'exprime mal, lol
    Sur une page tu choisis ce que tu veux faire par exemple modifier une chantier, un client.. Tu tapes donc l'ID de ce que tu veux modifier et tu envois.
    A partir de la tu tombes sur mon super formulaires qui récupères des variables déjà existantes dans la base et qui les affichent dans les champs correspondant
    Ex: chantier -->62
    description --> Chantier rénové en 2007 après les incidents du ....
    et la 3 listes déroulantes (l'exemple le plus concret est les continents, mais modif_mission est du meme principe)
    quand j'ai ajouté mon chantier je lui ai attribué un continent prenons ici l'Europe
    et bien en dessous de ma description je vais avoir
    continent --> Afrique
    car il n'arrive pas a m'afficher le véritable select="selected", il prend donc le 1er de la liste comme mes continents sont classés dans l'ordre alphabétique et bien il prend l'Afrique
    Le problème pour modif_mission est le meme: on a pu faire une expertise sur un pont et bien il me mettra que c'est une maitrise d'oeuvre hors que tous les autres champs (sauf listes déroulantes) sont convenablement remplis il a donc bien récupéré mes variables mais pas celles des listes

  18. #18
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 115
    Points : 104
    Points
    104
    Par défaut
    tu as du répondre au moment où j'ai édité mon message, j'ai ajouté ce point :

    ton switch se base sur modif_mission que tu n'attribues que sur Envoyer donc il me paraît normal que pour lui cette variable ne soit pas déclarée. Bref j'ai la puce à l'oreille à ce niveau.
    c'est pour ça que je demandais plus d'infos, en fait j'avais bien compris il y a une procédure envoyer et une modifier mais le modif_mission n'apparaît que dans envoyer donc je commençais à avoir des doutes sur le fait d'avoir compris le problème

    pour moi il manque un 'SELECT mission from trucmuche WHERE id_chantier="'.$_POST['modif_chantier'].'"'

  19. #19
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 29
    Points : 15
    Points
    15
    Par défaut
    Et la c'est bon ? je me suis mieux expliquée ?
    C'est pour ça qu'au début je pensais que la faute venais de mon premier formulaire, la ou je rentre les champs car dedans il ne s'appel pas modif_mission, mais simplement mission
    du coup j'ai testé mais ça ne fonctionne pas non plus
    Mais ce qui m'intrigue c'est que mes autres champs fonctionnent sans problème je recupère bien mes variables alors pourquoi mes listes déroulantes ne fonctionnent pas (car j'ai testé et il ne passe pas par mon switch)

  20. #20
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 115
    Points : 104
    Points
    104
    Par défaut
    oui je pense avoir bien compris mais peut être que je m'exprime mal aussi car vraiment ça me saute aux yeux que ta variable $modif_mission (selon moi) n'est pas attribuée.

    Déjà tu peux ajouter un default à ton switch et je pense que tu verras qu'il passe bien dedans.

    Ensuite je recherche dans ton code où $modif_mission est attribuée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if(isset($_POST['envoyer']))
             {
    $modif_mission=mysql_real_escape_string($_POST['modif_mission']);
    donc quand tu fais envoyer tu récupères ce que tu as entré via le formulaire et donc $modif_mission est définie

    Par contre dans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if(isset($_POST['modif_chantier']))
            {
                switch($modif_mission)
                {
    pour moi $modif_mission est vide donc soit tu testes en faisant $modif_mission=$_POST['modif_mission'] (ou @extract($_POST) même si j'aime moins) soit à partir de modif_chantier tu fais ta requête SQL pour donner une valeur à ta variable

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 02/11/2009, 13h01
  2. [MySQL] Récupérer variables d'une liste déroulante
    Par solaris13 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 14/11/2008, 20h04
  3. Réponses: 5
    Dernier message: 01/06/2007, 14h20
  4. [Conception] Récupèrer une variable dans une liste déroulante
    Par olivier94 dans le forum PHP & Base de données
    Réponses: 22
    Dernier message: 21/02/2007, 12h12
  5. [SQL] Récupérer des variables de formulaire dans une requête SQL
    Par psychoBob dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 22/11/2005, 18h44

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