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 :

Garder une saisie après sélection dans une liste déroulante [ODBC]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club Avatar de nawak.seb
    Profil pro
    Inscrit en
    Août 2008
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 106
    Points : 55
    Points
    55
    Par défaut Garder une saisie après sélection dans une liste déroulante
    Bonjour,
    Dans un formulaire PHP avec une base Access, je rempli des champs et je sélectionne dans une liste déroulante, un nom.
    A cette sélection, mes données où je viens de rentrée sont automatiquement effacées !
    Comment garder en mémoire toute les données saisies ?

    Merci
    Quand l'impossible devient possible

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    A cette sélection, mes données où je viens de rentrée sont automatiquement effacées !
    Lapin qu'on prit.
    Tu pourrais nous montrer ton code et nous expliquer un peu plus en détail ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre du Club Avatar de nawak.seb
    Profil pro
    Inscrit en
    Août 2008
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 106
    Points : 55
    Points
    55
    Par défaut
    Voici mon code simplifié :
    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
     
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    </head>
    <body>
    <table width="391" border="1">
      <tr>
        <td>    
        <form name="form1" method="POST"  action="">
    <?   
    	$odbc = odbc_connect( 'exemple_selection' , 'root' , '') or die ("Impossible de se connecter &agrave; la bas de donn&eacute;e") ;
        $sql="select * from nom order by nom";		
        $requete = odbc_do($odbc,$sql) or die( odbc_error());
     
    		echo '<select name="nom" onChange="form1.submit()">'; 
            echo '<option value="-1">Sélectionner un nom</option>'; 
                while ($resultat = odbc_fetch_array($requete))
                {$tx='';
                    if (isset($_POST['nom']))
                         {if ($_POST['nom']==$resultat['numero']){$tx=' selected ';}else{ echo $tx='';}}
                         echo '<option value="'.$resultat['numero'].'"'.$tx.'>'.$resultat['nom'].'</option>';
                }
            echo '</select>';
    ?>
    	</form> </td>
      </tr><form name="form5" method="POST"  action="TOTO.php"> 
      <tr>
        <td>
          <input type="text" name="textfield" id="textfield" />
          <input type="submit" name="button" value="Envoyer"/>
    	</td>
      </tr>
    </form>
    </table>
    </body>
    </html>
    Avec une base Access «exemple_selection »:
    Une table "nom" avec 2 champs « numero » en clé primaire et
    « nom »

    La manip est simple,
    En premier lieu, j’écris quelque chose dans le champ.
    En second, je sélectionne un nom dans la liste déroulante,

    Lors de la sélection, le champ s’efface, l’ordre du remplissage de la page est important,
    J’ai essayé d’inverser le champ avec la liste, et cela ne pose pas de problème.
    Quand l'impossible devient possible

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<select name="nom" onChange="form1.submit()">';
    Tu soumets le formulaire quand le champ select change, est-ce voulu ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre du Club Avatar de nawak.seb
    Profil pro
    Inscrit en
    Août 2008
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 106
    Points : 55
    Points
    55
    Par défaut
    Oui, c’est voulu !

    Je n’ai pas entièrement mis mon code car il y a long, seulement là ou je bloque.
    Pour info, quand je sélectionne un nom dans la liste, j’ai une autre liste qui apparait !
    Quand l'impossible devient possible

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    C'est normal que le champ texte ne soit pas "posté" puisqu'il n'est pas dans le meme formulaire.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre du Club Avatar de nawak.seb
    Profil pro
    Inscrit en
    Août 2008
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 106
    Points : 55
    Points
    55
    Par défaut
    Faux,
    Même si le champ est dans le formulaire, il est également effacé.
    Quand l'impossible devient possible

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Normal aussi puisqu'il n'a pas de "value".
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Membre du Club Avatar de nawak.seb
    Profil pro
    Inscrit en
    Août 2008
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 106
    Points : 55
    Points
    55
    Par défaut
    Peux-tu approfondir ? stp
    Tu met quoi dans value ?
    Quand l'impossible devient possible

  10. #10
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    La "value" reprend la valeur de ce qui a été "posté" precedemment.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<input type="text" name="textfield" id="textfield" value="' . $_POST['textfield'] . '" />
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  11. #11
    Membre du Club Avatar de nawak.seb
    Profil pro
    Inscrit en
    Août 2008
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 106
    Points : 55
    Points
    55
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<input type="text" name="textfield" id="textfield" value="' . $_POST['textfield'] . '" />

    J'ai un message d'erreur :

    Undefined index: textfield


    Pourquoi faire un echo ! , il n'y a pas besoin !
    Quand l'impossible devient possible

  12. #12
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Enleve le echo si tu trouves qu'il ne sert pas mais c'est toi qui prend la responsabilité.

    Sinon effectivement $_POST['textfield'] n'est défini qu'apres la soumission du formulaire, on peut faire un test pour eviter l'avertissement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    if (isset($_POST['textfield']) {
     $textfield = $_POST['textfield'];
    }
    else {
     $textfield = "";
    }
    echo '<input type="text" name="textfield" id="textfield" value="' . $textfield . '" />';
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  13. #13
    Membre du Club Avatar de nawak.seb
    Profil pro
    Inscrit en
    Août 2008
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 106
    Points : 55
    Points
    55
    Par défaut
    Si j’ai bien compris, mon champ doit être dans mon formulaire si je veux garder en mémoire !

    Donc il n’y a pas de solution, et avec du JavaScript ?
    Quand l'impossible devient possible

  14. #14
    Membre du Club Avatar de nawak.seb
    Profil pro
    Inscrit en
    Août 2008
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 106
    Points : 55
    Points
    55
    Par défaut
    J’ai essayé avec du JavaScript … sans succès.

    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
    <script language="javascript">
    function toto()
    {
    	var form1 = document.getElementById('form1');
    	var form5 = document.getElementById('form5');
     
    	var valuetext = document.getElementById('textfield').value;
     
     
    document.forms['form1'].submit(); 	
     
     
    document.getElementById('textfield2').value = valuetext;
     
     
     
     
    }
    </script>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="text" name="textfield" id="textfield" value="<? $_POST['textfield']; ?>"/>
    Quand l'impossible devient possible

  15. #15
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Salut!
    Citation Envoyé par nawak.seb Voir le message
    Donc il n’y a pas de solution, et avec du JavaScript ?
    Bien sûr que si. Tu peux utiliser les cookies en Javascript pour stocker les informations.
    Ensuite, il suffit de positionner le "selected" au bon endroit dans la liste des options...
    http://javascript.developpez.com/faq...=navig#cookies
    http://javascript.developpez.com/faq...amps#valSelect

    Sinon, tu as un exemple avec PHP dans ce sujet :
    http://www.developpez.net/forums/sho...d.php?t=594774
    De retour parmis vous après 10 ans!!

  16. #16
    Membre du Club Avatar de nawak.seb
    Profil pro
    Inscrit en
    Août 2008
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 106
    Points : 55
    Points
    55
    Par défaut
    Merci pour les liens, mais avec cette doc, je n’y arrive pas.
    Pouvez-vous me montrer avec un exemple concret ?
    Quand l'impossible devient possible

  17. #17
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Sauvegarde : Utilise l'evènement onchange du select et SetCookie pour enregistrer le choix de l'utilisateur.

    Restauration : Utilise l'evènement onload du body et GetCookie pour définir selectedIndex.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <body onload="document.getElementById('select').selectedIndex=GetCookie('liste');">
     
        <select id="select" onchange="SetCookie('liste',this.selectedIndex,7);">
     
          <option value="0">element 1</option>
          <option value="1">element 2</option>
          <option value="2">element 3</option>
          <option value="3">element 4</option>
          <option value="4">element 5</option>
     
        </select>
     
    </body>
    Dans cet exemple, le cookie sera valide pendant 7 jours.
    De retour parmis vous après 10 ans!!

  18. #18
    Membre du Club Avatar de nawak.seb
    Profil pro
    Inscrit en
    Août 2008
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 106
    Points : 55
    Points
    55
    Par défaut
    Finalement, j’ai trouvé

    Si ça peu servir, je mets mon code a dispo.
    J’ai utilisé du JavaScript, de plus, j’ai supprimé les notices.


    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
    <html>
    <head>
    <script language="javascript">
    function toto()
    {
    var form1 = document.getElementById('form1');
    var form5 = document.getElementById('form5');
    var valeurtext = document.getElementById('text').value;
    //document.write(valeurtext);
    document.getElementById('text2').value = valeurtext;
    //alert('lol');
    document.forms['form1'].submit();
    }
    </script>
     
    </head>
    <body>
    <table width="391" border="1">
      <tr>
        <td>    
        <form name="form1" method="POST"  action="">
    <?   
    	$odbc = odbc_connect( 'exemple_selection' , 'root' , '') or die ("Impossible de se connecter &agrave; la bas de donn&eacute;e") ;
        $sql="select * from nom order by nom";		
        $requete = odbc_do($odbc,$sql) or die( odbc_error());
     
    		echo '<select name="nom" onChange="toto()">'; 
            echo '<option value="-1">Sélectionner un nom</option>'; 
                while ($resultat = odbc_fetch_array($requete))
                {$tx='';
                    if (isset($_POST['nom']))
                         {if ($_POST['nom']==$resultat['numero']){$tx=' selected ';}else{ echo $tx='';}}
                         echo '<option value="'.$resultat['numero'].'"'.$tx.'>'.$resultat['nom'].'</option>';
                }
            echo '</select>';
    	 	echo '<input type="hidden" name="text2" />';
     
    ?>
    	</form> </td>
      </tr><form name="form5" method="POST"  action="TOTO.php"> 
      <tr>
        <td><input type="text" 	name="text" id="text"  value="<? echo $_POST['text2'];?>"/>
          <input type="submit" 	name="button" value="Envoyer"/>
    	</td>
      </tr>
    </form>
    </table>
    </body>
    </html>
    Quand l'impossible devient possible

  19. #19
    Membre du Club Avatar de nawak.seb
    Profil pro
    Inscrit en
    Août 2008
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 106
    Points : 55
    Points
    55
    Par défaut
    La même question, mais avec des boutons radio !!

    Comment je peu garder les cases déjà sélectionné?
    Quand l'impossible devient possible

  20. #20
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    http://www.developpez.net/forums/sho...php?t=223082#5

    C'est le même principe pour les boutons radio.
    De retour parmis vous après 10 ans!!

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

Discussions similaires

  1. Réponses: 12
    Dernier message: 19/06/2014, 11h28
  2. Réponses: 1
    Dernier message: 26/12/2010, 21h20
  3. Réponses: 4
    Dernier message: 22/06/2009, 12h12
  4. Réponses: 3
    Dernier message: 27/11/2008, 17h57
  5. Réponses: 16
    Dernier message: 04/07/2008, 08h07

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