Garder une saisie apres selection liste PHP

Résolu
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
Configuration: Windows XP
Internet Explorer 7.0

6 réponses

  1. Après longue réflection , j'ai trouvé une solution:
    dans mon script javascript:

    <script language="javascript">
    function toto()
    {
    
    var valeurradio1 = document.getElementById('bradio1').checked;
    var valeurradio2 = document.getElementById('bradio2').checked;
    var valeurradio3 = document.getElementById('bradio3').checked;
    var valeurradio4 = document.getElementById('bradio4').checked;
    
    document.getElementById('radio2').checked = valeurradio1;
    document.getElementById('radio3').checked = valeurradio2;
    document.getElementById('radio4').checked = valeurradio3;
    document.getElementById('radio5').checked = valeurradio4;
    
    document.forms['form1'].submit();
    }
    
    </script>
    


    dans mon select :

    	
    
    echo '<input type="radio" name="radio2" style="display:none" />';
    echo '<input type="radio" name="radio3" style="display:none"/>';
    echo '<input type="radio" name="radio4" style="display:none"/>';
    echo '<input type="radio" name="radio5" style="display:none"/>';


    et sur les bouton radio :

    <input <? if ($_POST['radio2']){echo "checked='checked'";} else {echo "";}?> type="radio" id="bradio1"  name="bradio"  value="">
    <input <? if ($_POST['radio3']){echo "checked='checked'";} else {echo "";}?> type="radio" id="bradio2"  name="bradio"  value="">
    <input <? if ($_POST['radio4']){echo "checked='checked'";} else {echo "";}?> type="radio" id="bradio3"  name="bradio"  value="" >
    <input <? if ($_POST['radio5']){echo "checked='checked'";} else {echo "";}?> type="radio" id="bradio4"  name="bradio"  value="">   


    Ce n'est pas jolie, mais ça fonctionne.
    1. Salut,
      pouvez-vous donner une adresse pour voir la page en action.
      1. <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>


        J'utilise une base Access «exemple_selection »:
        Une table "nom" avec 2 champs « numero » en clé primaire et
        « nom »

        La manip est simple,
        En premier , 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 texte s’efface.
        1. Dans la ligne :
          echo '<select name="nom" onChange="form1.submit()">'; 

          Le contenu du formulaire est envoyé et la page est réinitialisée.
      2. J'ai remplacé onChange="form1.submit()" par onChange="toto()"
        echo '<select name="nom" onChange="ap_selection()">'; 


        et dans le head je lui ai ajouté du javascript

        
        <head>
        <script language="javascript">
        function ap_selection()
        {
        document.forms['form1'].submit();
        }
        </script>
        </head>


        Mais je ne sais quoi mettre dans la fonction !
        1. 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.

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

          1. Pouvez m'éclaircir svp :
            1- Avec l'événement Onchange, avec le choix d'un élément dans la liste déroulante, le formulaire 1 sera valider (même si le form5 est vide)
            2- Pourquoi vous utilisez deux formulaire ?
            3- D'après le code, vous devez avoir un fichier toto.php pour taraiter les données du form5
          2. @amjahedPour répondre a amjahed, j’utilise 2 formulaires
            1 pour la sélection dans la liste déroulante et l’autre au moment du bouton envoyer.

          3. Et sinon, j’ai la même question, mais avec des boutons radio !!

            Comment je peu garder les cases déjà sélectionné?