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 :

Conserver valeur de liste après envoi de formulaire


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2008
    Messages : 42
    Points : 30
    Points
    30
    Par défaut Conserver valeur de liste après envoi de formulaire
    Bonsoir à tous,

    Petit problème en HTML / PHP.

    Je vous explique mon soucis :

    J'ai fait un formulaire qui me permet de cliquer sur modifier ou supprimer mes enregistrements. Si je clique sur modifier, une autre page PHP s'ouvre (avec un paramètre GET reçu, qui est l'id de l'enregistrement que je veux modifier).

    J'affiche donc les différents INPUT avec leurs valeurs actuelles en base ...

    Cependant, je n'arrive pas à afficher la valeur correcte dans une liste déroulante, il se place sur la valeur par défaut ... La valeur est stocké en base en tant que valeur numérique, je fais donc un SELECT pour chercher les noms correspondant afin de peupler ma liste.

    En résumé, j'aimerai afficher directement (lors de l'accès à la page) la valeur de l'enregistrement et non la valeur par défaut, excepté si il y a -1 stocké en base, ce qui signifie qu'il n'y a pas de valeur. Dans ce cas, logique, on affiche la valeur par défaut ...

    En espérant avoir été clair dans mon message.

    Merci d'avance pour vos réponses

    PS : J'ai trouvé ce code ici même sur développez.net, cependant le code ne positionne pas la liste sur la valeur stocké en base, mais sur une valeur écrit en dur dans le code.


    Voici le code utilisé pour la 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
     
     
    	echo '<br>Pays <select size=1 name="pays"> ';
     
    	$result = mysql_query("SELECT id, libelle FROM pays ORDER BY libelle" );
    	echo'<option value="">--- choisissez un pays</option>';
    	while($data =  mysql_fetch_array($result))
    	{
    		echo '<option value="'.$data['id'].'"';
     
    		 if(isset($_POST['pays']) && $_POST['pays'] == $data['id']) echo 'selected="selected"';
    		echo ">".$data['libelle']."</option>'";
    	}
     
    	echo '</select>'."\n";

  2. #2
    Membre averti

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 242
    Points : 354
    Points
    354
    Par défaut
    Ton code a l'air correct.
    Si ça ne fonctionne pas, c'est probablement que la valeur dans ton $_POST['pays'] ne vaut pas ce que tu crois.

    Dans ces cas là, pas 50 solutions : déboguer.

    Commence par ça :
    Et ensuite tu peux aussi regarder le code source de ta page...

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2008
    Messages : 42
    Points : 30
    Points
    30
    Par défaut
    Citation Envoyé par Climoo Voir le message
    Ton code a l'air correct.
    Si ça ne fonctionne pas, c'est probablement que la valeur dans ton $_POST['pays'] ne vaut pas ce que tu crois.

    Dans ces cas là, pas 50 solutions : déboguer.

    Commence par ça :
    Et ensuite tu peux aussi regarder le code source de ta page...
    Rien n'y fait

    Sinon voilà le code de la liste. Ce qui est bizarre c'est qu'il sélectionne la première valeur (donc mon choisissez un pays) mais il le note pas "selected"...

    Je me demande si j'ai pas un problème dans mon raisonnement, sachant que je veux afficher le bon dés le départ ? A noter que c'est pas une valeur obligatoire, l'utilisateur peut choisir de revenir à "Choisissez un pays" qui mettra -1 en base...

    Je commence à m'embrouiller avec tout ça!


    A noter qu'avant la boucle dans la variable $vPays (que j'aimerai mettre par défaut dansla liste) c'est nul, après la boucle --> elle contient la bonne valeur... mais donc, comment faire pour mettre la valeur par défaut après la boucle ? Avant c'est possible, mais après ca l'est aussi ?

    Merci en tout cas pour ta réponse d'avant



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Pays 
    <select size=1 name="pays"> 
    	<option value="-1">--- choisissez un pays</option>
    	<option value="3">Brazil</option>
    	<option value="7">Ecosse</option>
    	<option value="1">France</option>
    	<option value="2">Germany</option>
    	<option value="6">Irlande</option>
    	<option value="5">Jamaique</option>
    	<option value="4">Suisse</option>
    	<option value="8">USA</option>
    </select>

  4. #4
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Comme a dit Climoo, $_POST['pays'] vaut quoi dans ta boucle ???

    car dans la logique $_POST['pays'] pour moi contiendrait une chaine donnant le nom du pays non,
    Meuuh en AI à l'INRA
    Domaines: {java, php, js, jquery}{hibernate, doctrine}{MyLib, symfony, Zend}
    fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes (balise à cliquer en bas de l'écran)

  5. #5
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Points : 1 031
    Points
    1 031
    Par défaut
    Salam ; Bonosvox :
    aussi j'avais le même problème de modification dans mon formulaire avec la balise select.
    alors comment résoudre mon problème ??
    je suis tombé sur ton post , j'ai lu et relu mais helas ....
    a la base ma page de modification c'est la même que la page enregistrement ( formulaire) donc la même balise select dont le code :
    récupération des données a partir d'une table BDD dans la page enregistrement
    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
     
    .........
    <select name="com">
    <option >Sélectionnez ....</option>
    <?php
    foreach ($datacom as $com)  {
    // on affiche les informations de l'enregistrement en cours
    $att = '';
    if ( !empty($_POST['com']) && $_POST['com']==$com['cdc']) {
    $att = ' selected="selected"';
    }
    echo '<option value="'.$com['cdc'].'" '.$att.'>'.$com['com'].'</option>';
    }
    ?>
    </select>
     
    // code amélioré avec RunCodePhp si je ne me trompe pas
    le code dans la page modification est :
    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
     
    ...........
    <select name="com">
    <?php
    // partie pour garder la même valeur de l'enregistrement dans le select		
    if ( !empty($_POST['cdc']) ) {
    $att = ' selected="selected"';
    }
    echo '<option value="'.$_POST['cdc'].'" '.$att.'>'.$_POST['com'].'</option>';
    // fin partie 
     
    // partie pour alimenter la liste du select				
    foreach ($datacom as $com)  {
    // on affiche les informations de l'enregistrement en cours
    $att = '';
    if ( !empty($_POST['com']) && $_POST['com']==$com['cdc']) {
    $att = ' selected="selected"';
    }
    echo '<option value="'.$com['cdc'].'" '.$att.'>'.$com['com'].'</option>';
    }
    ?>
    </select>
    je viens juste de trouvé la solution donc sa reste a testé .

  6. #6
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Points : 1 031
    Points
    1 031
    Par défaut
    Re ; je viens de faire 15 teste ( selon mes enregistrements) sa marche impeccablement
    je suis preneur d'autre solution

Discussions similaires

  1. Réponses: 1
    Dernier message: 08/04/2014, 10h52
  2. Garder ces informations après envoi du formulaire
    Par mLk92 dans le forum Langage
    Réponses: 9
    Dernier message: 22/07/2007, 12h55
  3. pb de redirection de page après envoi de formulaire
    Par mariah201083 dans le forum Langage
    Réponses: 3
    Dernier message: 14/06/2007, 16h44
  4. Réponses: 1
    Dernier message: 24/07/2006, 18h28
  5. Réponses: 1
    Dernier message: 10/04/2006, 20h22

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