Précédent   Forum des professionnels en informatique > PHP > Langage > Formulaires
Formulaires Forum d'entraide sur les formulaires avec PHP. Avant de poster -> FAQ formulaires, Cours de formulaires et Sources de formulaires
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 26/05/2008, 16h28   #1
Membre régulier
 
Inscription : octobre 2005
Messages : 151
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 151
Points : 79
Points : 79
Par défaut Enregistrer la valeur du select dans une variable de session

Bonjour à tous,

Je voudrais pouvoir mettre dans une variable de session la valeur de l'option sélectionnée par l'utilisateur avant de soumettre le formulaire. J'ai essayé de faire cela via le onchange du select ou des options mais cela me renvoie soit une valeur vide (sur le select) ou systématiquement le dernier choix quel que soit celui sélectionné par l'utilisateur (sur option).

Voici mon code (avec l'essai sur l'option) :

Code :
1
2
3
4
5
6
7
8
 
<select name="modif" size="1" class="demi">
<?php 
while($row = mysql_fetch_array($result)){
?>
     <option class="option" onchange="<?php $_SESSION['id_tb'] = $row['id_pages'] ?>" value="<?php echo $row["id_pages"] ?>"> <?php echo $row["position"] . " - " . $row["titre"] ; ?> </option>
<?php } ?>
</select>
Quelqu'un pourrait-il m'aider ?

En fait j'essaie cela pour pouvoir utiliser une Thickbox (script AJAX) depuis un formulaire, le problème étant que je n'arrive plus à récupérer la valeur POST du formulaire quand je l'implémente. C'est pour cette raison que je tente ma chance en voulant passer la valeur par une valeur de session mais si quelqu'un a une autre solution, je suis intéressé ;-)

Merci d'avance
dl_jarod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/05/2008, 16h35   #2
Inactif
 
Inscription : mai 2008
Messages : 179
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 179
Points : 179
Points : 179
PHP est exécuté côté serveur, HTML/JS côté client. Ce que tu cherches à faire ici est donc impossible.

Envoie ton formulaire normalement, récupère tes infos par $_POST, et stocke les en session.
sielfried est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/05/2008, 16h36   #3
Membre éclairé
 
Inscription : mai 2008
Messages : 359
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 359
Points : 397
Points : 397
Bonjour,

Tu ne peux pas sans soumission.
Maintenant, tu peux le faire de manière transparente par Ajax.

Edit : ouch, j'avais pas vu le post de Siegfried
Tsilefy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/05/2008, 16h37   #4
Membre habitué
 
Avatar de Couz02
 
Inscription : avril 2008
Messages : 232
Détails du profil
Informations personnelles :
Âge : 22
Localisation : France

Informations forums :
Inscription : avril 2008
Messages : 232
Points : 143
Points : 143
T'as essayé avec la méthode GET ?
Couz02 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/05/2008, 16h51   #5
Membre régulier
 
Inscription : octobre 2005
Messages : 151
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 151
Points : 79
Points : 79
Salut à tous,

A zut alors donc j'abandonne cette piste.

Le problème est que je perds les valeurs post ou get transmises via le formulaire si je veux utiliser Thickbox.

En effet, je dois mettre un alt à l'input pour appeler la Thickbox qui ne marche pas quand j'essaie de l'appeler via action dans le formulaire.

Voici le code complet du formulaire :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
<form id="vert" name="modifier" action="modif_pages.php?keepThis=true&TB_iframe=true&height=300&width=500" class="thickbox" title="Nice title" method="post">
<select name="modif" size="1" class="demi">
<?php 
while($row = mysql_fetch_array($result)){
?>
<option class="option" onchange="<?php $_SESSION['id_tb'] = $row['id_pages'] ?>" value="<?php echo $row["id_pages"] ?>"><?php echo $row["position"] . " - " . $row["titre"] ; ?></option>
<?php } ?>
</select>
 
<input alt="modif_pages.php?keepThis=true&TB_iframe=true&height=300&width=500" type="submit" value="Modifier" name="soumettre" class="thickbox" />
</form>
Mais là ça devient peut-être plus de l'AJAX...
dl_jarod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/05/2008, 17h21   #6
Membre régulier
 
Inscription : octobre 2005
Messages : 151
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 151
Points : 79
Points : 79
Je pense à quelque chose : n'y aurait-il pas moyen de faire la manipulation que je voulais faire avec la variable (enregistrer le select choisi par l'utilisateur et passer la valeur à la page suivante) en Javascript ?

Le problème étant que je ne suis pas doué en Javascript...
dl_jarod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/05/2008, 19h18   #7
Membre éclairé
 
Inscription : mai 2008
Messages : 359
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 359
Points : 397
Points : 397
Oui, avec un cookie.
Tu crées une fonction qui écrit dans un cookie, puis sur onchange, tu lances la fonction.
Seul hic: puisqu'il est stocké en local, l'utilisateur peut lire le contenu du cookie. A toi de voir si ça convient en termes de sécurité ou pas.
A la page suivante, tu récupères la valeur depuis le cookie.
Tu trouveras ci-dessous des exemples de fonction pour écrire, lire et effacer un cookie.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<script type="text/javascript" language="JavaScript">
<!--
function EcrireCookie(nom, valeur)
{
var argv=EcrireCookie.arguments;
var argc=EcrireCookie.arguments.length;
var expires=(argc > 2) ? argv[2] : null;
var path=(argc > 3) ? argv[3] : null;
var domain=(argc > 4) ? argv[4] : null;
var secure=(argc > 5) ? argv[5] : false;
document.cookie=nom+"="+escape(valeur)+
((expires==null) ? "" : ("; expires="+expires.toGMTString()))+
((path==null) ? "" : ("; path="+path))+
((domain==null) ? "" : ("; domain="+domain))+
((secure==true) ? "; secure" : "");
}
//-->
</script>
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
<script type="text/javascript" language="JavaScript">
<!--
function getCookieVal(offset)
{
var endstr=document.cookie.indexOf (";", offset);
if (endstr==-1) endstr=document.cookie.length;
return unescape(document.cookie.substring(offset, endstr));
}
function LireCookie(nom)
{
var arg=nom+"=";
var alen=arg.length;
var clen=document.cookie.length;
var i=0;
while (i<clen)
{
var j=i+alen;
if (document.cookie.substring(i, j)==arg) return getCookieVal(j);
i=document.cookie.indexOf(" ",i)+1;
if (i==0) break;
 
}
return null;
}
//-->
</script>
Code :
1
2
3
4
5
6
7
8
9
10
<script type="text/javascript" language="JavaScript">
<!--
function EffaceCookie(nom)
{
date=new Date;
date.setFullYear(date.getFullYear()-1);
EcrireCookie(nom,null,date);
}
//-->
</script>
Tsilefy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2008, 09h35   #8
Membre régulier
 
Inscription : octobre 2005
Messages : 151
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 151
Points : 79
Points : 79
Merci pour ces exemples Tsilefy, ça a l'air de fonctionner. En effet, quand sur la page concernée je lis le cookie et que je l'affiche via un document.write, je récupère la bonne valeur.

Mais j'ai une dernière question (stupide sans doute) : comment fais-je pour passer cette valeur au php ? Là j'ai ma variable id dans le javascript qui contient la bonne donnée mais il me faudrait cette valeur dans un $id php (j'en ai besoin pour mes requêtes SQL).

Voici mon code :

Code :
1
2
3
4
5
6
7
8
 
<script type="text/javascript" language="JavaScript">
<!--
id=LireCookie("page");
//-->
</script>
<?php
$id = ?????;
Merci d'avance, je suis proche du but grâce à vos conseils.
dl_jarod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2008, 10h45   #9
Membre régulier
 
Inscription : octobre 2005
Messages : 151
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 151
Points : 79
Points : 79
Voilà j'ai réussi !

Je récupère la valeur dans le cookie, je le vide et reloade la page en passant la valeur en paramètre pour la récupérer via get en php !

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<script type="text/javascript" language="JavaScript">
<!--
 
id=LireCookie("page");
if (id != null){
EffaceCookie("page");
location.href="modif_pages.php?id="+id;
}
//-->
</script>
<?php
 
if (!empty($_GET["id"])){
$id = $_GET["id"];
Merci pour votre aide
dl_jarod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2008, 13h44   #10
Membre éclairé
 
Inscription : mai 2008
Messages : 359
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 359
Points : 397
Points : 397
J'avais totalement oublié que tu as aussi la possibilité de gérer directement les cookies depuis php ! Il faut dire que je ne m'en sers jamais.
Tu écris le cookie avec javascript, et ensuite tu récupère la valeur dans les pages suivantes avec $_COOKIE. Tu peux maintenant l'utiliser avec php.
Tellement simple que j'ai honte de ne pas y avoir pensé auparavant !!
Tsilefy 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 20h41.


 
 
 
 
Partenaires

Hébergement Web