Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & ODBC
PHP & ODBC Forum d'entraide sur ODBC avec PHP. Avant de poster -> FAQ ODBC
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/08/2008, 14h39   #1
Membre à l'essai
 
Avatar de nawak.seb
 
Inscription : août 2008
Messages : 106
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 106
Points : 24
Points : 24
Envoyer un message via Skype™ à nawak.seb
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
nawak.seb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2008, 15h07   #2
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 383
Points : 16 383
Citation:
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 ?
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2008, 16h16   #3
Membre à l'essai
 
Avatar de nawak.seb
 
Inscription : août 2008
Messages : 106
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 106
Points : 24
Points : 24
Envoyer un message via Skype™ à nawak.seb
Voici mon code simplifié :
Code :
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.
nawak.seb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2008, 16h31   #4
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 383
Points : 16 383
Code :
echo '<select name="nom" onChange="form1.submit()">';
Tu soumets le formulaire quand le champ select change, est-ce voulu ?
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2008, 16h41   #5
Membre à l'essai
 
Avatar de nawak.seb
 
Inscription : août 2008
Messages : 106
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 106
Points : 24
Points : 24
Envoyer un message via Skype™ à nawak.seb
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 !
nawak.seb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2008, 16h52   #6
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 383
Points : 16 383
C'est normal que le champ texte ne soit pas "posté" puisqu'il n'est pas dans le meme formulaire.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2008, 16h59   #7
Membre à l'essai
 
Avatar de nawak.seb
 
Inscription : août 2008
Messages : 106
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 106
Points : 24
Points : 24
Envoyer un message via Skype™ à nawak.seb
Faux,
Même si le champ est dans le formulaire, il est également effacé.
nawak.seb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2008, 17h12   #8
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 383
Points : 16 383
Normal aussi puisqu'il n'a pas de "value".
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2008, 17h20   #9
Membre à l'essai
 
Avatar de nawak.seb
 
Inscription : août 2008
Messages : 106
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 106
Points : 24
Points : 24
Envoyer un message via Skype™ à nawak.seb
Peux-tu approfondir ? stp
Tu met quoi dans value ?
nawak.seb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2008, 21h11   #10
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 383
Points : 16 383
La "value" reprend la valeur de ce qui a été "posté" precedemment.
Code :
echo '<input type="text" name="textfield" id="textfield" value="' . $_POST['textfield'] . '" />
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/08/2008, 09h44   #11
Membre à l'essai
 
Avatar de nawak.seb
 
Inscription : août 2008
Messages : 106
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 106
Points : 24
Points : 24
Envoyer un message via Skype™ à nawak.seb
Citation:
Code :
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 !
nawak.seb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/08/2008, 09h59   #12
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 383
Points : 16 383
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 :
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 . '" />';
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/08/2008, 11h52   #13
Membre à l'essai
 
Avatar de nawak.seb
 
Inscription : août 2008
Messages : 106
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 106
Points : 24
Points : 24
Envoyer un message via Skype™ à nawak.seb
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 ?
nawak.seb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/08/2008, 12h18   #14
Membre à l'essai
 
Avatar de nawak.seb
 
Inscription : août 2008
Messages : 106
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 106
Points : 24
Points : 24
Envoyer un message via Skype™ à nawak.seb
J’ai essayé avec du JavaScript … sans succès.

Code :
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 :
<input type="text" name="textfield" id="textfield" value="<? $_POST['textfield']; ?>"/>
nawak.seb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/08/2008, 12h53   #15
Expert Confirmé
 
Avatar de Sub0
 
Homme
Inscription : décembre 2002
Messages : 3 468
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 39

Informations forums :
Inscription : décembre 2002
Messages : 3 468
Points : 3 115
Points : 3 115
Envoyer un message via MSN à Sub0 Envoyer un message via Skype™ à Sub0
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
Sub0 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/08/2008, 14h40   #16
Membre à l'essai
 
Avatar de nawak.seb
 
Inscription : août 2008
Messages : 106
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 106
Points : 24
Points : 24
Envoyer un message via Skype™ à nawak.seb
Merci pour les liens, mais avec cette doc, je n’y arrive pas.
Pouvez-vous me montrer avec un exemple concret ?
nawak.seb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/08/2008, 15h41   #17
Expert Confirmé
 
Avatar de Sub0
 
Homme
Inscription : décembre 2002
Messages : 3 468
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 39

Informations forums :
Inscription : décembre 2002
Messages : 3 468
Points : 3 115
Points : 3 115
Envoyer un message via MSN à Sub0 Envoyer un message via Skype™ à Sub0
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 :
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.
Sub0 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/08/2008, 09h48   #18
Membre à l'essai
 
Avatar de nawak.seb
 
Inscription : août 2008
Messages : 106
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 106
Points : 24
Points : 24
Envoyer un message via Skype™ à nawak.seb
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 :
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>
nawak.seb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/08/2008, 16h15   #19
Membre à l'essai
 
Avatar de nawak.seb
 
Inscription : août 2008
Messages : 106
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 106
Points : 24
Points : 24
Envoyer un message via Skype™ à nawak.seb
La même question, mais avec des boutons radio !!

Comment je peu garder les cases déjà sélectionné?
nawak.seb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/08/2008, 16h52   #20
Expert Confirmé
 
Avatar de Sub0
 
Homme
Inscription : décembre 2002
Messages : 3 468
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 39

Informations forums :
Inscription : décembre 2002
Messages : 3 468
Points : 3 115
Points : 3 115
Envoyer un message via MSN à Sub0 Envoyer un message via Skype™ à Sub0
http://www.developpez.net/forums/sho...php?t=223082#5

C'est le même principe pour les boutons radio.
Sub0 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h55.


 
 
 
 
Partenaires

Hébergement Web