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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 29
    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 confirmé
    Profil pro
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 70
    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 confirmé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 115
    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 confirmé
    Profil pro
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 70
    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

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

    Informations forums :
    Inscription : Mars 2003
    Messages : 50
    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?

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 115
    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;?>

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 29
    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

  8. #8
    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
    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 )
    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]

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 29
    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

  10. #10
    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
    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); ?>
    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]

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

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