JeuWeb - Crée ton jeu par navigateur
[OK]formulaire d'inscription en deux parties. - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [OK]formulaire d'inscription en deux parties. (/showthread.php?tid=566)

Pages : 1 2


[OK]formulaire d'inscription en deux parties. - blackduty - 23-12-2006

Salut,

Je vous explique donc la raison du post.

J'ai actuellement deux formulaires pour les inscriptions qui sont sur deux pages différentes.
Pour le moment, le premier formulaire est traité par une page qui renvoit ensuite a coup de header vers l'autre formulaire qui est traité par une autre page et qui enregistre les données sur la bdd.

Je refait en gros le schéma:

1er formulaire => traitement formulaire (controle des champs, inscriptions sur bdd, header vers deuxieme formulaire).
2eme formulaire => traiter par une autre page de traitement (controle les champs, inscription sur bdd, header vers page d'accueil).

Mon probleme est comme vous l'aurez surement constaté assez rapidement, si quelqu'un s'arrete au milieu, j'ai un début de compte enregistré sur la bdd. Ce qui est pas pratique car j'ai beaucoup de chose qui s'auto-incremente et j'aurais donc une différence sur le tableau. Je recherche donc a optimiser tout ça !

Je souhaiterais donc que tout soit traité en même temps.
J'ai bien pensé faire une unique page de traitement pour les deux, mais je me suis retrouvé avec quelques problèmes pour renvoyer la personne vers le deuxieme formulaire... et donc quand ça veut inscrire des données sur la bdd, ils ne comprend pas les variables du deuxieme formulaires.

Il faudrait donc que je puisse garder en mémoire les variables du premier formulaire mais garder les controles de champs vide des formulaires, puis passer sur le deuxieme formulaire. Une fois, le deuxieme rempli, ça traite toute les données et les envois dans la BDD.

Une idée du comment faire ?

Si je ne suis pas très clair, je peux tenter de reexpliquer Wink


RE: formulaire d'inscription en deux parties. - Archange - 23-12-2006

Voila comment je ferais ,

$_SESSION['tonchamp'] = '$_POST['autre champ']';

Pour garder donc tes variable POST en memoire de ta premiere page, et ensuite tu arrive sur ta seconde page tu inscrit les variable POST des champs de tes pages, et c'est a ce moment ci que tu inscritles POST de ta premiere page dans ta bdd grace au variable SESSION .

Jspr que ta compris mon expliquation, et jspr avoir compris ton probleme aussi Smile


RE: formulaire d'inscription en deux parties. - carlou - 24-12-2006

tout a fait, 2 possibilites s'offre a toi.

La premiere, mettre tes variables du premier formulaire en session que tu recupere sur le deuxieme

l'autre possibilité et de faire une requette pour recuperer les variables deja enregistrées en Bdd du premier form pour les reafficher dans le 2eme mais du coup tu fais une requette supplementaire.

Les sessions me semblent le mieux adapté


RE: formulaire d'inscription en deux parties. - joshua - 24-12-2006

en ajax tu peux peut etre voir a tout faire sur une page, non?


RE: formulaire d'inscription en deux parties. - Loetheri - 24-12-2006

Et mettre les données dans un input type="hidden" ?


RE: formulaire d'inscription en deux parties. - Plume - 24-12-2006

La méthode avec le type 'hidden' ça risque d'être plus chiant à coder qu'avec les sessions.


RE: formulaire d'inscription en deux parties. - Loetheri - 24-12-2006

Mais tu obliges d'activer les cookies Smile
Cela dit, je ne vois pas en quoi, c'est nettement plus ennuyant.


RE: formulaire d'inscription en deux parties. - blackduty - 24-12-2006

ça donnerait quoi en gros avec le 'input type="hidden"' ?

Imaginons que j'ai deux formulaires avec un champ a chaque fois.

Formulaire 1:
Code PHP :
<?php 
<form method="post" action="traitement/traitement_inscription.php">

<
fieldset>
<
legend>Vos coordonnées</legend>
<
p>
<
label>Nom de compte <input type="text" name="compte" size="20" maxlength="20" tabindex="10" /></label>
</
p>
</
fieldset>
<
p>
<
input type="submit" value="Etape 2" />
</
p>
</
form>

Formulaire 2:
Code PHP :
<?php 
<form method="post" action="traitement/traitement_competence.php">

<
fieldset>
<
legend>Vos coordonnées</legend>
<
p>
<
label>Mot de passe<input type="text" name="password" size="15" maxlength="15" tabindex="20" /></label>
</
p>
</
fieldset>
<
p>
<
input type="submit" value="Valider" />
</
p>
</
form>

Mes pages de traitements pour le moment. Page: traitement_inscription.php
Code PHP :
<?php

// ouverture de la base de donnée

include("../../admin/dbconnect.inc.php");

// récupération des variables en provenance du formulaire

$compte = htmlentities($_POST['compte'], ENT_QUOTES);

// Vérification du remplissage des champs

if(empty($compte))
{
echo
"Vous n'avez pas rempli votre nom de compte !<br />";
exit();
}

// si tout va bien, je rempli la Base de données

mysql_query("INSERT INTO joueur VALUES('','$compte','')");
header("location: ../competence.php");
mysql_close(); //fermeture base de donnée
?>

Page: Traitement_competence.php
Code PHP :
<?php

// ouverture de la base de donnée

include("../../admin/dbconnect.inc.php");

// récupération des variables en provenance du formulaire compétence

$mot_de_passe = htmlentities($_POST['mot_de_passe'], ENT_QUOTES);

//cryptage du mot de passe
include ("../../admin/maison.inc.php");
$mot_de_passe_crypte = crypt($mot_de_passe, $cle_cryptage);

//vérification du remplissage des champs

if(empty($mot_de_passe))
{
echo
"Vous n'avez pas écrit de mot de passe !<br />";
exit();
}

// si tout va bien, je rempli la Base de données

mysql_query("INSERT INTO joueur VALUES('','','$mot_de_passe_crypte')");
mysql_close(); //fermeture base de donnée
header("location: ../../index.php");

Bon c'est un petit peu tiré par les cheveux car mon formulaire ne ressemble pas du tout a ça Wink


RE: formulaire d'inscription en deux parties. - Plume - 24-12-2006

Je vois pas du tout où t'as vu que l'utilisation des sessions nécessite l'activation des cookies ...


RE: formulaire d'inscription en deux parties. - Loetheri - 24-12-2006

Dans la documentation Smile au chapitre 142 "Sessions"
Doc PHP a écrit :Il y a deux méthodes de propagation de l'identifiant de session :
* Cookies
* Par URL
Et généralement, l'identifiant se passe par Cookies Smile Car on n'aime pas les variables dans les URL.

Cela dit, pour utiliser les entrées du type hidden. Dans ton second formulaire, tu mets quelque chose du type :
Code :
<input type="hidden" name="nom" value="<?php echo $_POST['blop'];?>" />