Session et formulaire sans Login

Résolu/Fermé
arnaudvh62 Messages postés 17 Date d'inscription mercredi 14 février 2007 Statut Membre Dernière intervention 20 juin 2008 - 14 févr. 2007 à 14:59
arnaudvh62 Messages postés 17 Date d'inscription mercredi 14 février 2007 Statut Membre Dernière intervention 20 juin 2008 - 6 mars 2007 à 20:52
Bonjour,

je cherche la bonne façon de faire pour transmettre des données de formulaires d'une page à une autre.

Sur mon site, j'ai X pages et sur ces pages, j'ai 3 formulaies, placés sur 3 pages différentes. On passe d'un formulaire à un autre par un simple lien 'page suivante' jusqu'au formukaire final avec le bouton 'Envoyé' Mais les infos des formulaires précédent ne sont pas transmisent.
Pour chaque page, j'utilise la fonction suivantes:

<?php
session_start();
?>

Ceci devrait conserver toute données sur le serveur?
Peut-être ai-je omis certaines choses!!

Placé en tête de script avant toute instruction ou code.

Merci de votre aide

14 réponses

Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
14 févr. 2007 à 15:07
Bonjour, commencer la session ne suffit pas.
Il faut aussi y sauvegarder les informations.

Par exemple, si ton 1er formulaire possède les champs Nom et Prénom, alors dans la page définie dans le "action" du formulaire (si j'ai bien compris, ça doit être ton 2e formulaire), il faut rajouter les lignes :

$_SESSION["Nom"] = $_POST["Nom"];
$_SESSION["Prénom"] = $_POST["Prénom"];
2
arnaudvh62 Messages postés 17 Date d'inscription mercredi 14 février 2007 Statut Membre Dernière intervention 20 juin 2008 1
14 févr. 2007 à 15:20
D'accord,

donc dans chaque page contenant un formulaire, j'initialise $_SESSION["CHAMPS"] = $_POST["ValeurChamps"];

En fait, sur ce site, j'ai 10 pages. A partir de la 6 éme, là j'ai un premier formulaire avec des cases à cocher, puis à la suivante, un formulaire avec des boutons radio puis le formulaire suivant, tout un ensemble de champs -Nom adresse...) et le bouton d'envoi.

Voilà la configuration de mes pages, le principe reste donc le même?

Merci
1
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
14 févr. 2007 à 15:26
Ce n'est pas sur les pages qui contiennent le formulaire qu'il faut faire ça.
Sur chaque formulaire, tu as une balise <form> avec l'attribut action="nomDePage.php". C'est sur cette page-là, que j'ai appelée "nomDePage.php", qu'il faut mettre ces quelques lignes. Si c'est la même page qu'un formulaire, c'est un "hasard", en quelques sortes (même si c'est fort possible).
1
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
14 févr. 2007 à 15:45
Euh, oula, je n'avais pas bien compris...
Non, pour valider un formulaire, il faut le soumettre, et ce n'est pas par un simple lien qu'on peut le faire !

Si tu veux garder ton lien, voilà ce que je te propose.
Dans ton formulaire avec la balise <form>, tu mets :
<form action="xxx" name="formulaire">
Ici, tous tes <input>
Et bien sûr à la fin, il faut fermer </form>

A la place de xxx , mets la même page que ce que tu avais mis dans ton lien.

Enfin, modifie ton lien :
<a href="document.formulaire.submit()">Page suivante</a>
1

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

Posez votre question
ekra Messages postés 1870 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 24 juillet 2014 342
14 févr. 2007 à 15:11
Cela fait longtemps que je n'ai pas fait de PHP, mais je crois qu'il faut affecter des variables du type $_SESSION['variable'] qui sont valables tout au long de la session.
A toi de récuperer les var du formulaires et de les mettre dans les variables de session
0
arnaudvh62 Messages postés 17 Date d'inscription mercredi 14 février 2007 Statut Membre Dernière intervention 20 juin 2008 1
14 févr. 2007 à 15:38
Ok
donc chaque page de formulaire doit conteniir la ligne <form name...

Le fait que je passe d'une page à une autre avec un lien de base (Page suivante) n'est pas un soucis?

Je pensai qu'il ne serait pas pris en compte!
0
arnaudvh62 Messages postés 17 Date d'inscription mercredi 14 février 2007 Statut Membre Dernière intervention 20 juin 2008 1
14 févr. 2007 à 16:31
Ok,

je vais tenter de faire des test et ne pas manquer de tenir informer de la suite des évennements.

Merci bien

PS; Je laisse toujours la foction de session?
0
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
14 févr. 2007 à 16:47
Pour ton PS : oui, obligatoirement !
D'ailleurs, il faut la mettre avant tout autre chose dans le fichier. (Y compris avant un éventuel retour à la ligne en dehors des balises php <? et ?>)
0
arnaudvh62 Messages postés 17 Date d'inscription mercredi 14 février 2007 Statut Membre Dernière intervention 20 juin 2008 1
15 févr. 2007 à 11:47
Oui, bien évidemment, formulaire correspond au NAME...

Mais dans le lien via le navigateur j'ai donc:

...opportunite/document.form1.submit() que se soit avec ou sans "", cela signifie donc que l'action n'est pas prise en compte?

MERCI
0
arnaudvh62 Messages postés 17 Date d'inscription mercredi 14 février 2007 Statut Membre Dernière intervention 20 juin 2008 1
15 févr. 2007 à 11:05
Bonjour,

je m'excuse, mais je n'arrive pas à syntaxer correctement l'écriture des liens!!

Je me permet de vous donner plus d'informations sur les pages.
Le formulaire1 se nome ETAPE4.php, le Formulaire 2 ETAPE5.php et le dérnier qui co,tirnt le bouton transmettre le formulaire ETAPE6.php.

Partant de là, la syntaxe actuelle du lien pour la page suivante du formulaire nomé ETAPE4.php est le suivant:

<a href="../etape5.php"><img src="Fleche_d.jpg" width="400" height="81" border="0" /></a>

Dans la barre d'adresse du navigateur, dans cette syntaxe, j'ai donc:

opportunite/etape4.php?step=1

Mais bien sûre, je n'ai plus le ?etapeX lorsque je suis à la page suivante...

Donc, la syntaxe doit comprendre dans le lien:

document.formulaire.submit()">

Mais formulaire est ce une expression ou un exemple?

Mrci de votre aide et de vos bons conseils
0
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
15 févr. 2007 à 11:42
"formulaire" est un exemple, mais doit être identique dans cette ligne :
<form action="xxx" name="formulaire">

et dans cette ligne :
<a href="document.formulaire.submit()">Page suivante</a>

Voilà, au final, ce que je te propose.
Dans ta page etape4.php
Avant tes champs de saisie, par exemple, juste après ton <body>, mets une ligne de définition d'un formulaire
<form action="../etape5.php" name="formulaire" method="post">
Là, tu laisses tous tes champs comme ils étaient.
Enfin, après tous tes champs (par exemple, juste avant </body>), tu mets la balise de cloture du formulaire : </form>

Ton lien <a href="../etape5.php"><img src="Fleche_d.jpg" width="400" height="81" border="0" /></a>
doit devenir
<a href="javascript:document.formulaire.submit();"><img src="Fleche_d.jpg" width="400" height="81" border="0" /></a>

Ensuite, dans la page etape5.php, tu mets :
<?php
session_start();
$_SESSION["Nom"] = $_POST["Nom"];
$_SESSION["Prénom"] = $_POST["Prénom"];
// (enfin, on se comprend, tu adaptes ça au nom de tes champs de saisie)
?>
Puis tu fais pareil que pour Etape4.php en replaçant etape5 par etape6.

Pareil pour etape6.php.

Attention à ne pas écraser des variables de session du tableau $_SESSION[] , si des champs ont le même nom entre deux formulaires, faudra les changer.

Et enfin, dans ta page finale, qui traite l'ensemble (celle appelée par ton bouton de soumission de etape6.php), tu n'oublies pas de mettre le session_start() pour pouvoir récupérer tous tes champs des étapes 4 et 5.

Voilà... Je ne sais pas à quoi devait te servir ta variable step=1, mais je ne pense pas que tu en aies besoin avec cette façon de faire.

Xavier
0
arnaudvh62 Messages postés 17 Date d'inscription mercredi 14 février 2007 Statut Membre Dernière intervention 20 juin 2008 1 > Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021
22 févr. 2007 à 13:36
RE bonjour,

je me permet à nouveau de vous écrire pour vous tenir au courant de l'évolution.

J'ai fait quelques tests pour le passage des données de page en page. En fait, il est possible de les afficher dans la page suivante mais pas dans celle d'après. Ce qui veut dire que les données sont perdues après un passagede page.
La session est sensée conserver les données dans un fichier sur le serveur, cela doit-il être paramètrer? Comment faire appel à ce fichier? Y a t-il une histoire id ou autre?

Merci encore de votre aise.

Arnaud
0
arnaudvh62 Messages postés 17 Date d'inscription mercredi 14 février 2007 Statut Membre Dernière intervention 20 juin 2008 1
23 févr. 2007 à 09:31
Bonjour,

je me permet à nouveau de vous écrire sur ce sujet.
Pourquoi je n'arrive pas à passer mes données de formulaires sur + d'une page? Suis-je obligé de oasser par une base de données?
J'ai essayé de passer les données des champs dans la page suivante dans des champs cachés, cela fonctionne, mais je n'arrive pas à les récuoérer pour les renvoyer de nouveau dans la page suivante accompagnés des champs de cette page. Il doit y avoir une concaténation à écrire mais je ne sais pas m'y prendre correctement!

Merci de votre aide.

Arnaud
0
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011 > arnaudvh62 Messages postés 17 Date d'inscription mercredi 14 février 2007 Statut Membre Dernière intervention 20 juin 2008
23 févr. 2007 à 09:54
Bonjour,

Je vois deux possibilités.

1 - est-ce que tu n'écrases pas tes variables de session à chaque fois ? le $_SESSION["truc"] = $_POST["truc"] doit n'apparaitre que sur la page qui suit l'endroit où le champ "truc" a été rempli.

2 - le paramètre session.auto_start est activé dans php.ini. Conséquence, le session_start() que tu fais en haut de chaque page écrase la session courante.
Pour que cela marche quelle que soit la valeur de session.auto_start, remplace tous tes session_start() par des
if (session_id() == "") session_start();

En espérant que ce soit bien la cause de tes problèmes,

Xavier
0
arnaudvh62 Messages postés 17 Date d'inscription mercredi 14 février 2007 Statut Membre Dernière intervention 20 juin 2008 1
15 févr. 2007 à 11:57
Merci bien,

Je met tout cela en oeuvre et je vous tiens au courant:

Etape1 doit venir du fait que dès ka première page la session start est indiquée?

Merci

Aenaud
0
arnaudvh62 Messages postés 17 Date d'inscription mercredi 14 février 2007 Statut Membre Dernière intervention 20 juin 2008 1
15 févr. 2007 à 20:41
Merci de ces bons conseils!

Alors mon resultat est le suivant:

Les données sont bien visible dans la barre d'adresse sauf pour l'etape4 qui contient que des cases à cocher... Bon peut être rien à voir!

Le formulaire est bien transmis, reçu, mais sans les données des etape4 et etape5.
Voici ce que j'ai en tête de fichier sur le formulaire final:

session_start();
$_SESSION["implication"] = $_POST["implication"];
$_SESSION["autre"] = $_POST["autre"];
$_SESSION["motivation"] = $_POST["motivation"];

?>


Les lignes 1 et 2 -> Formulaire etape4 et la 3 -> etape5


Est-ce que le fait que la transmission des données par mail ne se fait pas avec l'instruction $_POST ?

Merci du temps consacré!

Arnaud
0
arnaudvh62 Messages postés 17 Date d'inscription mercredi 14 février 2007 Statut Membre Dernière intervention 20 juin 2008 1
16 févr. 2007 à 11:25
Bonjour,

ce jour, les données des champs des formulaires sont bien visible dzns la barre d'adresse. Cela après la suppression de l'instruction 'methode = "POST"

Suis-je sur la bonne boie? La methode get est moins flexible donc ce ne doit pas être une piste judicieuse!



Merci

Arnaud
0
arnaudvh62 Messages postés 17 Date d'inscription mercredi 14 février 2007 Statut Membre Dernière intervention 20 juin 2008 1
23 févr. 2007 à 10:47
Bonjour,

Super et merci car ça marche bien, effectivement la session etait écrasé à chaque fois.

Encore merci de vos conseils

@° au besoin
0
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
23 févr. 2007 à 10:57
Tu as de la chance, j'avais lu par hasard sur le site php.net cette histoire de session écrasées, pas plus tard qu'hier !!
0
arnaudvh62 Messages postés 17 Date d'inscription mercredi 14 février 2007 Statut Membre Dernière intervention 20 juin 2008 1 > Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021
6 mars 2007 à 20:52
Bonjour à vous, c'est de nouveau moi, arnaud!

Je me repermet donc de vous écrire pour obtenir quelques aides suplémentaires sur les mêmes scripts.

Tout d'abord, une petite question. Peut on user de javascript dans des fichiers en .php? Pour ma part, j'ai tenté mais cela ne marche pas.
Pour précision, cela est pour vérifier les formulaires.

Dois-je donc passer par le PHP?

Mes deux vrais gros obstacles sont les cases à cocher et radio bouton... J'ai entre autre 2 pages avec 1 type sur chaque.

Le fait que l'onutilise la fonction 'document.name.submit() pour passer à la page suivante, est ce qui cause soucis?

Merci d'avance pour cette aide

Arnaud
0
arnaudvh62 Messages postés 17 Date d'inscription mercredi 14 février 2007 Statut Membre Dernière intervention 20 juin 2008 1
23 févr. 2007 à 11:11
Oui, comme quoi le hasard fait parfois bien les choses!!! J'y suis passé brièvement hier sans succès, mais merci à vous de l'avoir bu!

0 bientôt ...prut-être...


Arnaud
0