Question sur les sessions

cresus18 Messages postés 35 Date d'inscription dimanche 20 juillet 2003 Statut Membre Dernière intervention 13 février 2008 - 15 avril 2004 à 21:24
cresus18 Messages postés 35 Date d'inscription dimanche 20 juillet 2003 Statut Membre Dernière intervention 13 février 2008 - 18 avril 2004 à 16:17
Bonjour à tous !

J'ai un formulaire de ce type : <form method='POST' action='$PHP_SELF'>
Chaque élément remplit un tableau $form de cette façon :

La façon dont je le traite m'oblige à utiliser les sessions (ou à passer les variables par l'url, ce que je ne souhaite pas car il y en aurait trop). Tout se passe sur une seule et unique page (qui se nomme "form_client.php").

voila le début de mon code (il n'ya rien d'autre avant) :

<?php
session_start() ;
session_register("form") ;
?>

Une fois que je clique sur mon bouton de type 'submit ', il y a un test, puis une page récapitulative des informations saisies. A partir de là j'ai le choix entre 3 actions : "retour", "imprimer", "accepter". Avec le bouton "retour", une ligne de javascript me renvoie à la page précédente (celle du formulaire). Je peux donc modifier les valeurs saisies, mais lorsque je valide à nouveau mon formulaire, je remarque que la page récapitulative garde les anciennes valeurs, elles ne sont pas réactualisées.

Avez-vous une idée de ce qui se passe ? Ma session est-elle mal créée ? Je nage complètement... Merci d'avance

11 réponses

yafuka Messages postés 236 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 18 juillet 2006 1
15 avril 2004 à 23:37
p-e que le code aiderai a mieux comprendre ;)

++

Le meilleur langage de programmation est un étudiant diplomé.. 8-)
0
cresus18 Messages postés 35 Date d'inscription dimanche 20 juillet 2003 Statut Membre Dernière intervention 13 février 2008 1
16 avril 2004 à 08:55
Merci de m'avoir répondu Yafuka

Je te post donc mon code "allégé".
Il n'y a d'ailleurs pas de ligne de javascript associée à mon bouton "retour" dans cette version, je n'en ai finalement plus besoin. Mais le problème réside encore...

<?php
session_start() ;
session_register("form") ;
?>

<html>
<head>

<?php
function test_formulaire() // test du formulaire
{
    global $prenom, $nom, ..., $form ;
    extract($form) ;
    if(!$prenom) return false ;
    /* ... */
    return true ;
}
?>

</head>

<?php
if(is_array($form)) extract($form) ;

if($essai == 0 || ! test_formulaire()) // affiche le formulaire
{
    echo "
    <form method='POST' action='$PHP_SELF'>
      
      Prénom :

      Nom :

      /* ... */
      
    </form> " ;
}
else // récapitulatif
{
    $essai = 0 ;
    echo "
    Prénom : " . $prenom . "

    Nom : " . $nom . "

    /* ... */
    <form method='POST' action='$PHP_SELF></form> " ;
}
?>

</html>
0
cresus18 Messages postés 35 Date d'inscription dimanche 20 juillet 2003 Statut Membre Dernière intervention 13 février 2008 1
16 avril 2004 à 08:58
mon bouton "retour" s'appele en fait "Modifier" ...
0
cresus18 Messages postés 35 Date d'inscription dimanche 20 juillet 2003 Statut Membre Dernière intervention 13 février 2008 1
16 avril 2004 à 12:09
Jai du nouveau !

En fait le fait de remplir mon tableau "$form" directement par mon formulaire avec comme attribut name='form[prenom]' provoque mon probleme, j'explique :

j'ai "bypassé" mon formulaire directement par ceci :
$form[prenom] .= "jean" ;
$form[nom] .= "bon" ;

donc quand je passe pour la 1ere fois, mon tableau contient "jean" et "bon". A la page recapitulative, je clique sur "modifier", il fait donc un 2eme passage et à la page recapitulative suivante, il contient bien "jeanjean" et "bonbon". et ainsi de suite...

maintenant, j'aimerai savoir pourquoi les valeurs entrées dans mon formulaire ne modifient elles pas mon tableau $form qui fonctionne pourtant bien lorsqu'il est seul.

merci de votre aide

sinon je pense que je vais arreter cette histoire de tableau et enregistrer toutes les variables de mon formulaire séparement, ce qui ne m'arrange pas trop, mais au moins cela fonctionne car en désespoir de cause je'ai testé cette solution... Mais rien que pour ne pas rester bloquer sur cette idée qui me torture l'esprit depuis trop longtemps, expliquez moi pleazzz...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
yafuka Messages postés 236 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 18 juillet 2006 1
16 avril 2004 à 16:05
que veux tu essayer de faire tt de suite.. !!
car je ne comprends pas vraiment ton code...

si form est un tableau et bien tu devrais le declarer comme tableau et evites de le register a chaque chargement de la page

<?php 
session_start();
//si le tebleau est pas encore register
if( !session_is_registered("form") )
{
$form = array();
session_register("form");
}



pour ajouter kk chose au tableau, fais $form[] = $tavariable;

++
si je suis HS, reexplique alors ;)

Le meilleur langage de programmation est un étudiant diplomé.. 8-)
0
yafuka Messages postés 236 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 18 juillet 2006 1
16 avril 2004 à 16:07
que veux tu essayer de faire tt de suite.. !!
car je ne comprends pas vraiment ton code...

si form est un tableau et bien tu devrais le declarer comme tableau et evites de le register a chaque chargement de la page

<?php 
session_start();
//si le tebleau est pas encore register
if( !session_is_registered("form") )
{
$form = array();
session_register("form");
}



pour ajouter kk chose au tableau, fais $form[] = $tavariable;

++
si je suis HS, reexplique alors ;)

Le meilleur langage de programmation est un étudiant diplomé.. 8-)
0
yafuka Messages postés 236 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 18 juillet 2006 1
16 avril 2004 à 16:07
que veux tu essayer de faire tt de suite.. !!
car je ne comprends pas vraiment ton code...

si form est un tableau et bien tu devrais le declarer comme tableau et evites de le register a chaque chargement de la page

<?php 
session_start();
//si le tebleau est pas encore register
if( !session_is_registered("form") )
{
$form = array();
session_register("form");
}



pour ajouter kk chose au tableau, fais $form[] = $tavariable;

++
si je suis HS, reexplique alors ;)

Le meilleur langage de programmation est un étudiant diplomé.. 8-)
0
yafuka Messages postés 236 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 18 juillet 2006 1
16 avril 2004 à 16:08
oups desole pour le FLOOD!!

la page semblait pas se charger.... :sad)

Le meilleur langage de programmation est un étudiant diplomé.. 8-)
0
cresus18 Messages postés 35 Date d'inscription dimanche 20 juillet 2003 Statut Membre Dernière intervention 13 février 2008 1
16 avril 2004 à 19:18
Hello

ok, pour la declaration de mon tableau, je ne savais pas (les sessions c'est assez nouveau pour moi), je ne le déclare donc qu'une seule fois après avoir vérifier qu'il n'est pas déja enregistré.

Ensuite mon problème est que je n'arrive pas à modifier les valeurs de ce tableau via mon formulaire, de cette façon :

il arrive pourtant à les enregistrer au 1er passage, mais losqu'il s'agit de les modifier, il ne le fait pas, il garde toujours la 1ère valeur. Le fait de ne déclarer mon tableau qu'une seule fois n'a pas résolu le binz ?-)

Mais bon merci quand même d'avoir essayé de suivre mon problème, je vais me débrouiller en enregistrant toutes les valeurs de mon tableau dans la session, c'est pas si grave. Si tu as la solution n'hésite pas, et merci encore ;)
0
yafuka Messages postés 236 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 18 juillet 2006 1
16 avril 2004 à 20:05
si c'est en faisant que tu ajoute kk chose au tableau.. eh bien oui ca marchera pas.. ce n est pas ainsi qu' ajoute des variables au tableau.

comme je l'avais mentionné, pour ajouter par exemple ne nom et le prenom dans le tableau,

dans ton formulaire, fais

ensuite le code en haut de la page devient

<?php 
session_start();
//si le tebleau est pas encore register
if( !session_is_registered("form") )
{
$form = array();
session_register("form");
}else 
if($essai)
{
$form[] = $_POST['nom'];
$form[] = $_POST['prenom'];
}


ainsi si ton tableau etait vide , nom serait à la position $form[0] et prenom à $form[1]

++

Le meilleur langage de programmation est un étudiant diplomé.. 8-)
0
cresus18 Messages postés 35 Date d'inscription dimanche 20 juillet 2003 Statut Membre Dernière intervention 13 février 2008 1
18 avril 2004 à 16:17
Et voila, ça fonctionne parfaitement.
Je suis bien content de moi, car j'aurai trouvé la vraie réponse tout seul ! Et puis il est tout à fait possible d'ajouter qq chose dans un tableau via un formulaire.

La preuve, voila le code final avec mon tableau, enregistré dans ma session, et créé par mon formulaire :

<?php
session_start() ;
if(! session_is_registered("form")) session_register("form") ;
?>

<html>
<head></head>

<?php

if(is_array($form))extract($form) ;

if($essai == 0)
{
echo "
<form method='POST' action='$PHP_SELF'>

Prénom : 

Nom : 

</form> " ;

session_destroy() ; // IMPERATIF
}
else
{
echo "
Prénom : " . $prenom . "

Nom : " . $nom . "

<form action='$PHP_SELF'>

</form>" ;
}

?>

</html>


Je te remercie quand même de m'avoir aidé, tu m'auras quand même appris qu'il ne faut pas enregistrer les variables sans arrêt à chaque session_start().

Au final j'ai oublié ce tableau, je trouve que ca me simplifie bien la vie sans celui là, mais il faut quand même garder le session_destroy() pour que ca fonctionne même sans tableau !!!
0
Rejoignez-nous