Session en php

fati.zahra Messages postés 74 Date d'inscription   Statut Membre Dernière intervention   -  
fati.zahra Messages postés 74 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour tt le monde!!

je travaille actuellement sur une application dans laquelle je dois insérer dans ma base des données en provenance de plusieurs formulaires!!
je voulais le faire avec les sessions mais je n'ai pas encore réussi!! franchement j'arrive pas à bien comprendre leur fonctionnement!!

j'en ai besoin d'un exemple concret sur l'utilisation des sessions: comment les données d'un formulaire sont sauvegardées en passant par autres formulaires jusqu'à arriver à l'étape finale (le dernier formulaire) où on trouve un bouton ajouter pour envoyer la totalité des informations vers ma BD!!

merci d'avance et très bon week-end :-)
A voir également:

30 réponses

fati.zahra Messages postés 74 Date d'inscription   Statut Membre Dernière intervention   1
 
bonjour!!
en fait je vais ré-expliquer le cas que j'ai peut être je serai plus claire cette fois ci!!
l'utilisateur commence tt d'abord par remplir ses données personnelles une fois il termine il clisue sur un botuon suivant qui le mène vers un form2 là où il remplit les informations concernant ses experiences professionnelles!!
à ce niveau là il a le droit de remplir le form autant de fois qu'il voit! après chaque remplissage il tape sur un bouton ajouter pour sauvegarder les données qui viennent d'être insérées et les champs sont à nouveau vides pour lui permettre de taper autres experiences!! une fois il finit à ce moment là il passe au form qui suit à travers un bouton suivant !!

maintenant le prob c'est comment faire pour afficher la totalité des données concercant ses expériences que à ça soit sous forme d'un tableau ou autrement et cela au niveau de form apercu.php!!
en plus comment les envoyer après vers ma BD??
très bonne journée
-1
fati.zahra Messages postés 74 Date d'inscription   Statut Membre Dernière intervention   1
 
ok merci bien et je te serai reconnaissante si tu peux me l'envoyer aujourd'hui :-) je vais terminer mon sateg cette semaine et je dois résoudre ce prob avant de quitter!
merciiiiiii et très bonne journée
-1
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
Voilà: en fait j'ai essayé en utilisant les sessions

il ne te rest plus qu'a coder enregistrement.php

donnees_perso.php:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
	<html>
	<head>
	  <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">
	  <title>Donn&eacute;es personelles<?php echo $page; ?></title>
	</head>
	<body>
	<br>
	<form name="form" method="post" action="enregistrements.php" >
		<table style="text-align: left; width: 200px;" border="0" cellpadding="2" cellspacing="2">
	    <tbody>
			<tr>
				<td>Nom:</td>
				<td><input name="nom" id="nom" value="" type="text"></td>
			</tr>
			<tr>
				<td>Prenom:</td>
				<td><input name="prenom" id="prenom" value="" type="text"></td>
			</tr>
			<tr>
				<td>Adresse:</td>
				<td><input name="adresse" id="adresse" value="" type="text"></td>
			</tr>
			<tr>
				<td>Ville:</td>
				<td><input name="ville" id="ville" value="" type="text"></td>
			</tr>
			<tr>
				<td>Code_postal:</td>
				<td><input name="cp" id="cp" value="" type="text"></td>
			</tr>
				<td colspan="2">&nbsp;</td>
			</tr>
			<tr>
				<td colspan="2" align="center"><input type="submit"name="continuer" value="Continuer"></td>
			</tr>
	    </tbody>
		</table>
	  <br>
	  <input type="hidden" name="page" value="0">
	</form>
	</body>
	</html>


et enregistrements.php


<?php
session_start();
//page en cours
if(isset($_POST['page']) AND $_POST['page']!=""){
	$page=$_POST['page'];
}
//index_arrays des array
if(isset($_POST['index_arrays']) AND $_POST['index_arrays']!=""){
	$index_arrays=$_POST['index_arrays'];
}else{
	$index_arrays=$page-1;
}


//init des variables de session en fonction première page (si pas définie) ou mémorisation dans des  array si pages suivantes
if(!isset($_SESSION['champ1'])){$_SESSION['champ1']=array();}else{if(isset($_POST['champ1'])){$_SESSION['champ1'][$index_arrays]=$_POST['champ1'];}}
if(!isset($_SESSION['champ2'])){$_SESSION['champ2']=array();}else{if(isset($_POST['champ2'])){$_SESSION['champ2'][$index_arrays]=$_POST['champ2'];}}
if(!isset($_SESSION['champ3'])){$_SESSION['champ3']=array();}else{if(isset($_POST['champ3'])){$_SESSION['champ3'][$index_arrays]=$_POST['champ3'];}}
if(!isset($_SESSION['champ4'])){$_SESSION['champ4']=array();}else{if(isset($_POST['champ4'])){$_SESSION['champ4'][$index_arrays]=$_POST['champ4'];}}
if(!isset($_SESSION['champ5'])){$_SESSION['champ5']=array();}else{if(isset($_POST['champ5'])){$_SESSION['champ5'][$index_arrays]=$_POST['champ5'];}}
if(!isset($_SESSION['champ6'])){$_SESSION['champ6']=array();}else{if(isset($_POST['champ6'])){$_SESSION['champ6'][$index_arrays]=$_POST['champ6'];}}
if(!isset($_SESSION['champ7'])){$_SESSION['champ7']=array();}else{if(isset($_POST['champ7'])){$_SESSION['champ7'][$index_arrays]=$_POST['champ7'];}}

//on increment le numero de page pour la suivante
	
	$page=$page+1;
	$index_arrays=$index_arrays+1;

//recup données perso postées
if(isset($_POST['nom'])){$nom=$_POST['nom'];}
if(isset($_POST['prenom'])){$prenom=$_POST['prenom'];}
if(isset($_POST['adresse'])){$adresse=$_POST['adresse'];}
if(isset($_POST['ville'])){$ville=$_POST['ville'];}
if(isset($_POST['cp'])){$cp=$_POST['cp'];}

//si première page ou si click sur suivant
if($page == 1 OR (isset($_POST['suivant']) AND $_POST['suivant'] !="")){
	
	//affichage de la page formulaire
?>
	<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
	<html>
	<head>
	  <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">
	  <title>Enregistrements n°<?php echo $page; ?></title>
	</head>
	<body>
	<span style="font-weight: bold;">Vous remplissez l'enregegistrement numéro <?php echo $page; ?></span><br>
	<br>
	<form name="form" method="post" action="enregistrements.php" >
		<table style="text-align: left; width: 200px;" border="0" cellpadding="2" cellspacing="2">
	    <tbody>
			<tr>
				<td>Champ1:</td>
				<td><input name="champ1" id="champ1" value="" type="text"></td>
			</tr>
			<tr>
				<td>Champ2:</td>
				<td><input name="champ2" id="champ2" value="" type="text"></td>
			</tr>
			<tr>
				<td>Champ3:</td>
				<td><input name="champ3" id="champ3" value="" type="text"></td>
			</tr>
			<tr>
				<td>Champ4:</td>
				<td><input name="champ4" id="champ4" value="" type="text"></td>
			</tr>
			<tr>
				<td>Champ5:</td>
				<td><input name="champ5" id="champ5" value="" type="text"></td>
			</tr>
			<tr>
				<td>Champ6:</td>
				<td><input name="champ6" id="champ6" value="" type="text"></td>
			</tr>
			<tr>
				<td>Champ7:</td>
				<td><input name="champ7" id="champ7" value="" type="text"></td>
			</tr>
				<tr>
				<td colspan="2">&nbsp;</td>
			</tr>
			<tr>
				<td colspan="2" align="center"><input type="submit"name="suivant" value="Autre enregistrement"></td>
			</tr>
			<tr>
				<td colspan="2">&nbsp;</td>
			</tr>
			<tr>
				<td colspan="2" align="center"><input type="submit" name="terminer" value="Terminer" ></td>
			</tr>
	    </tbody>
		</table>
	  <br>
<?php
	
	
?>
	<!-- champs caches pour la suite-->
	  <input type="hidden" name="page" value="<?php echo $page; ?>">
	  <input type="hidden" name="index_arrays" value="<?php echo $index_arrays; ?>">
	  <!-- champs caches des donnees perso -->
	  <input type="hidden" name="nom" value="<?php echo $nom; ?>">
	  
	  <input type="hidden" name="prenom" value="<?php echo $prenom; ?>">
	  
	  <input type="hidden" name="adresse" value="<?php echo $adresse; ?>">
	  
	  <input type="hidden" name="ville" value="<?php echo $ville ?>">
	  
	  <input type="hidden" name="cp" value="<?php echo $cp; ?>">
	</form>
	</body>
	</html>
<?php

}

// si click sur Terminer
if(isset($_POST['terminer']) AND $_POST['terminer'] !=""){
	//affichage page recapitulatif
	?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
	<html>
	<head>
	  <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">
	  <title>Terminer</title>
	</head>
	<body>
<?php
$derniere_page=$_POST['page'];
$dernier_index_arrays=$_POST['index_arrays'];
//recup données perso postées
if(isset($_POST['nom'])){$nom=$_POST['nom'];}
if(isset($_POST['prenom'])){$prenom=$_POST['prenom'];}
if(isset($_POST['adresse'])){$adresse=$_POST['adresse'];}
if(isset($_POST['ville'])){$ville=$_POST['ville'];}
if(isset($_POST['cp'])){$cp=$_POST['cp'];}

?>	
	<form name="form_recap" method="post" action="enregistrement.php">
	<b>Recapitulatif de vos saisies:</b><br><br>
		<table style="text-align: left; width: 200px;" border="0" cellpadding="2" cellspacing="2">
	    <tbody>
		
		<tr><td colspan="2" align="center"><b>Vos donn&eacute;es personelles:</b></td>
		</tr>
		<tr><td>Nom:</td><td><?php echo $nom; ?></td>
		<tr><td>Prenom:</td><td><?php echo $prenom; ?></td>
		<tr><td>Adresse:</td><td><?php echo $adresse; ?></td>
		<tr><td>Ville:</td><td><?php echo $ville; ?></td>
		<tr><td>Code Postal:</td><td><?php echo $cp; ?></td>
		</tr><tr><td colspan="2" align="center">&nbsp;</td>
		</tr>
<?php		
		for ($p=1;$p<=$derniere_page;$p++){
			$i=$p-1;//index arrays
			echo "<tr>
					<td colspan=\"2\" align=\"center\"><b>Enregistrement n° ".$p."</b></td>
					</tr>";
				echo "<tr>
				<td>Champ1:</td>
				<td>".$_SESSION['champ1'][$i]."</td>
				</tr>";
				echo "<tr>
				<td>Champ2:</td>
				<td>".$_SESSION['champ2'][$i]."</td>
				</tr>";
				echo "<tr>
				<td>Champ3:</td>
				<td>".$_SESSION['champ3'][$i]."</td>
				</tr>";
				echo "<tr>
				<td>Champ4:</td>
				<td>".$_SESSION['champ4'][$i]."</td>
				</tr>";
				echo "<tr>
				<td>Champ5:</td>
				<td>".$_SESSION['champ5'][$i]."</td>
				</tr>";
				echo "<tr>
				<td>Champ6:</td>
				<td>".$_SESSION['champ6'][$i]."</td>
				</tr>";
				echo "<tr>
				<td>Champ7:</td>
				<td>".$_SESSION['champ7'][$i]."</td>
				</tr>";
				//un petit espace
				echo "<tr>
					<td colspan=\"2\" align=\"center\"><b>-----------------------------------</b></td>
					</tr>";
			
		
		}
?>		
			
			<tr>
				<td colspan="2">&nbsp;</td>
			</tr>
			<tr>
				<td colspan="2" align="center"><input type="submit" name="enregistrer" value="Enregistrer" ></td>
			</tr>
	    </tbody>
		</table>
	  <br>
	<form name="form_recap" method="post" action="enregistrement.php">
		<!-- champs caches pour la suite-->
	  <input type="hidden" name="page" value="<?php echo $page; ?>">
	  <input type="hidden" name="index_arrays" value="<?php echo $index_arrays; ?>">
	  <!-- champs caches des donnees perso -->
	  <input type="hidden" name="nom" value="<?php echo $nom; ?>">
	  
	  <input type="hidden" name="prenom" value="<?php echo $prenom; ?>">
	  
	  <input type="hidden" name="adresse" value="<?php echo $adresse; ?>">
	  
	  <input type="hidden" name="ville" value="<?php echo $ville ?>">
	  
	  <input type="hidden" name="cp" value="<?php echo $cp; ?>">
	</form>
	</body>
	</html>


<?php
}
?>
-1
fati.zahra Messages postés 74 Date d'inscription   Statut Membre Dernière intervention   1
 
bonsoir Alain_42!!

ben je sais pas quoi dire mais vraiment merci infiniment pour ton intérêt !!!
je vais voir ton script et j'essayerai de l'adapter à mes besoins!!

passe une très bonne soirée
-1
fati.zahra Messages postés 74 Date d'inscription   Statut Membre Dernière intervention   1
 
bonsoir Alain42!!
c'est encore moi! en fait je veux bien savoir si le principe des sessions nécessitent obligatoirment que l'utilisateur utilise un mot de passe et un login !!

je suis entrain de voir le code que tu m'as donné ci-dessus et voir comment l'adapter à mon cas pour résoudre le prob d'ajout d'expérience qui est devenu vraiment insuportable :-(

en fait j'ai pensé à faire les insertions au niveau de chaque form qui suit:
par exemple pour le form1 j'ai mis dans l'action du form action=form2.php et au niveau de celui la j'ai mis le code php qui permet de faire l'enregistrelent vers la BD tt en haut de la page (c'est une chose que tu m'as proposé la dernière fois) !! j'ai fait la même chose pour les autres form mais en fait ca na pas marché quand j'ai consulté ma BD j'ai trouvé que seules les données du premier form qui ont été transmises à la base de données :-(!!!



j'ai pensé alors à faire autre chose c'est pour cela que j'ai decidé de faire 2 boutons qur chaque form un bouton Ajouter pour envoyer les données du form1 à la BD avant de passer au form2 et l'autre suivant pour naviguer vers les autres form!!

le proooooooooooooob qu'il y a c'est moi je veux que le champs id-utilisateur qui est saisi au niveau de form 1 soit récupérable dans les autres champs!! cela est possible sauf si on met dans l'action du form1 action=form2.php alors que moi je veux faire action=form1.php et quand je clique sur suivant le id-utilisateur se transfert tjrs !!
est il possible de faire cela!!

je me coince sur ce prob ça fait des jours alors que je vais bientôt rendre mon travail :-(

merci et très bonne soirée
-1
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
Non pour les sessions il n'est pas necessaire de taper un login et mot de pass ,le preuve si tu essayes les deux codes que je t'ai fait ils fonctionnent.
-1
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
En fait je suis parti sur le principe du stockage des valeurs des différents form par les sessions parce que c'est la solution la plus adaptée à ton cas de formulaire dont le nombre est variable (l'utilisateur peut en remplir autant qu'il veut)

qd je te proposait d'enregistrer les données au début du form suivant, c'était avec un nombre de form bien défini à l'avance

regarde si ça te convient avec les sessions et on verra ensuite pour la partie enr dans la BDD par le bouton de la page récapitulatif

@lain
-1

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

Posez votre question
fati.zahra Messages postés 74 Date d'inscription   Statut Membre Dernière intervention   1
 
bonsoir Alain_42!!
oui en fait j'ai déja ommencé à travailler selon le modèle de code que tu m'as donné afin de l'adapter à mon cas!!
puisque je serai peut être obligée de travailler avec les sessions je te serai reconnaissante si tu m'expliques quelques points concernant les sessions:

1. comment peut on savoir que les données entrées appartiennent à un utilisateur bien défini?? est ce que le fait de déclarer au début de chaque page session_start() est largement suffisant ou bien il faut récuperer une variable pour la faire transferer après tt aux autres formulaires!!!

2. est ce que les sessions vont me permettre d'afficher l'ensemble de données concernant les experiences d'un utilisateur avant ou après leurs enregistrements dans la base!!

merci infiniment et bonne soirée
-1
fati.zahra Messages postés 74 Date d'inscription   Statut Membre Dernière intervention   1
 
bonjour Alian _42!

j'ai bien testé le code que tu m'ad donnée ca marche mais j'ai tjrs cette erreur qui s'affiche "Duplicata du champ 'c12' pour la clef 1" et elle me bloque pour passer à ajouter un nouvel enregistrement dans le form experiences!!

bonne journée
-1
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
Oui une sesion est propre à un utilisateur ( plus précisement à un micro)

Le principe:

session_start() va aller voir sur le PC si le cookie qui memeorise le code de session est présent si pas présent il en cree un avec un code généré aléatoirement, ainsi ce code sera conservé dans le cookie tout le temps que l'utilisateur travaille sur le pc et tant qu'il ne ferme pas le navigateur. et en même temps il enregistre ce code sur le serveur

page suivante il vient lire le code dans le cookie et compare avec celui qu'il a dans le serveur et si tu as stocké des valeurs dans les variables de session elles sont propres à cet utilisateur.

Donc à la dernière page pour enregistrer dans ta BDD tu dispose de toutes tes valeurs stockées dans les $_SESSION

concernat l'erreur que tu as "Duplicata du champ 'c12' pour la clef 1" quel code utilise tu ?
peux tu m'en donne copie ?
0
fati.zahra Messages postés 74 Date d'inscription   Statut Membre Dernière intervention   1
 
Bonjour!!
merci pour l'explication c'est très gentil de ta part!

en fait j'ai testé le code des sessions que tu m'as donné!! et k'ai essayé de l'adapter avec mes besoins!! dans mon cas et dans le formulaire données personnelles l'utilisateur est sesnsé fournir son code d'identité nationale comme ça je peux le distinguer par rapport aux autres utilisateurs!!

le problème que se pose c'est quand je fais entrer les enregistrements concernant les experiences!! une fois je termine une et je passe à ajouter une autre j'ai ce message d'erreur sur ma page et tt est coincé!!

concernant le code je sais pas quoi te donner au juste!!!
merci et bonne journée
-1
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
Si tu as ce message d'erreur c'est que tu essaye d'enregistrer dans ta BDD à chaque page.

il faut le faire seulement à dernière.

donnes moi le code de la page enregistrements.php

et quels champs as tu prévus dans ta BDD comment l'as tu structuré, notamment pour enregistrer toutes les expériences

si tu ne veux pas le mettre sur le forum envoie les moi en MP, en fichier joint
0
fati.zahra Messages postés 74 Date d'inscription   Statut Membre Dernière intervention   1
 
re bonjour!!

en fait en ce qui concerne le code des sessions!! est ce que c'est possible de me donenr plus de commentaires la dessus!!

j'ai fait entrer ce code danc mon formulaire et j'ai une erreur de undefined variable pour les variables page et idex_arrays alors que tu as déja traité ce cas avec les isset!!

encore une fois merci
-1
fati.zahra Messages postés 74 Date d'inscription   Statut Membre Dernière intervention   1
 
re!! en fait pour l'enregistrement je n'ai pas encore pensé comment je vais traiter ce cas!! pour le moment j'essaie d'adapter ton code à mon cas pour voir si toutes les données sont là!!

pour l'enregistrement je crois quand testant j'avais introduit à la fin de la page enregistrement.php mon code php de connexion et d'insertion vers la base et j'ai trouvé dans ma bd que les données concerant les experiences sont la ave une simple requete d'insertion!!

pour le code ok je vais te l'envoyer on MP!!
-1
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
Comme j'ai la vague impression que le principe d'utiliser des sessions te gène un peu, je t'ai fait les formulaires en utilisant les champs cachés.

Si tu m'envoie un MP je te fait passer ça en pièces jointes

@lain
-1
fati.zahra Messages postés 74 Date d'inscription   Statut Membre Dernière intervention   1 > Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention  
 
re!!

wi c'est vrai tu as tt à fait raison!! j'ai cherché assez de doc sur internet et j'ai essayé de trouver des exemples concrets afin de les comprendre mais j'avoue que je n'ai pas encore réussi!! :-(

en ce qui conecren le MP je t'ai déja envoyé un tt à lheure!! tu ne l'as pas reçu???

et merciiiiiiiii pour tt
bonne journée
-1
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894 > fati.zahra Messages postés 74 Date d'inscription   Statut Membre Dernière intervention  
 
je n'ai rien reçu dans ma boite mail ni dans les indesirables.
-1
fati.zahra Messages postés 74 Date d'inscription   Statut Membre Dernière intervention   1 > Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention  
 
ok je vais te l'nvoyer à nouveau
-1
fati.zahra Messages postés 74 Date d'inscription   Statut Membre Dernière intervention   1
 
re-re salut!!
je viens de t'envoyer un autre MP j'éspère que cette fois-ci il arrivera!! sinon je vais te donner mon mail
-1