Histoire de SESSION et POST

Breub62 Messages postés 3452 Statut Membre -  
Breub62 Messages postés 3452 Statut Membre -
Bonjour,

Étant novice en sessions, je souhaite savoir à quel moment après l'envoie d'un formulaire il faut faire
 $_SESSION['abc'] = $_POST['abc']
.

Car je dois toujours envoyer 2 fois mon formulaire pour que $_SESSION=$_POST

C'est à dire qu'à chaque fois ma $_SESSION contient la valeur précédente...

Pénible. Si quelqu'un peu m'aider...

Merci d'avance

A voir également:

5 réponses

justoo76 Messages postés 203 Statut Membre 13
 
Bonjour,

Normalement, tu met $_SESSION['abc'] = $_POST['abc'] dans ta page de traitement de ton form et cela doit fonctionner.
0
Breub62 Messages postés 3452 Statut Membre 369
 
Oui c'est ce que je fais mais ma variable de session ne se met à la valeur du post qu'après rafraichissement ou relance(ce qui est pareil en fait).
0
justoo76 Messages postés 203 Statut Membre 13
 
Ah ok , peut être qu'avec le code je pourrai t'aider ! ;)
0
Breub62 Messages postés 3452 Statut Membre 369
 
MA LISTE DÉROULANTE :

<?php
		
	//gestion des types de logiciels via un menu déroulant

	$queryTypeLogiciel = "SELECT * FROM typelogiciel ORDER BY TypeLogiciel";
	$resTypeLogiciel = mysql_query($queryTypeLogiciel);

	echo "<form method='POST' action='index.php?action=GestionLicences' name='menuDeroul'>
	Selectionnez le type de logiciel : 
	<select name='typeLogiciel' onchange='document.menuDeroul.submit();'>";

	if($_SESSION['typeLogiciel'] != 'Autre' && $_POST['typeLogiciel'] != 'Autre')
	{
		
	
		while($dataTypeLogiciel = mysql_fetch_assoc($resTypeLogiciel))
		{
			if($dataTypeLogiciel['TypeLogiciel'] == $_POST['typeLogiciel'] && $dataTypeLogiciel['TypeLogiciel'] == $_SESSION['typeLogiciel'])//menu déroulant en adéquation avec la sélection faite
			{
				echo " <option value=\"".$dataTypeLogiciel['TypeLogiciel']."\" selected=selected>".$dataTypeLogiciel['TypeLogiciel']."</option>";
			}
			else
			{
				echo " <option value=\"".$dataTypeLogiciel['TypeLogiciel']."\">".$dataTypeLogiciel['TypeLogiciel']."</option>";
			}
		}	

		echo " <option value='Autre'>Autre</option>";
	}
	else // Si on a choisi "Autre" dans la liste déroulante
	{
		while($dataTypeLogiciel = mysql_fetch_assoc($resTypeLogiciel))
		{
			if($dataTypeLogiciel['TypeLogiciel'] == $_SESSION['typeLogiciel'] && $dataTypeLogiciel['TypeLogiciel'] == $_POST['typeLogiciel'])//menu déroulant en adéquation avec la sélection faite
			{
				echo " <option value=\"".$dataTypeLogiciel['TypeLogiciel']."\" selected=selected>".$dataTypeLogiciel['TypeLogiciel']."</option>";
			}
			else
			{
				echo " <option value=\"".$dataTypeLogiciel['TypeLogiciel']."\">".$dataTypeLogiciel['TypeLogiciel']."</option>";
			}
		}	

		echo " <option value='Autre' selected='selected'>Autre</option>";
	}
	
	echo "</select>
	<input type=submit value='OK' />
	</form>";

	echo stripslashes($_POST['typeLogiciel'])." ".stripslashes($_SESSION['typeLogiciel'])." ".$dataTypeLogiciel['TypeLogiciel'];
		
?>



MON TRAITEMENT :

<?php


	$_SESSION['typeLogiciel'] = $_POST['typeLogiciel'];
	
	if(isset($_SESSION['typeLogiciel']) || isset($_POST['typeLogiciel'])) //Si le type de logiciel a été choisi dans la liste déroulante on affiche les logiciels correspondants
	{
	
		
		if(mysql_real_escape_string($_SESSION['typeLogiciel']) == 'Autre') // Si on a choisi Autre
		{
			include('AjoutTypeLogiciel.inc.php');
		}
		else //selon le type choisi on affiche la liste des logiciels correspondants
		{
			$typeLogiciel = $_SESSION['typeLogiciel'];
			
			$queryListeLogiciel = "SELECT * FROM logiciel, typelogiciel
									WHERE logiciel.NumTypeLogiciel = typelogiciel.CodeTypeLogiciel 
									AND logiciel.NumTypeLogiciel = (SELECT CodeTypeLogiciel FROM typelogiciel
																		WHERE TypeLogiciel = '".$typeLogiciel."')";
			$resListeLogiciel = mysql_query($queryListeLogiciel);
			
			echo "<table border=1 width=100%><tr>
			<td><strong>Type de logiciel</strong></td>
			<td><strong>Nom du logiciel</strong></td>
			<td><strong>Nombre de licences achetées</strong></td>
			<td><strong>Nombre de licences installées</strong></td>
			<td><strong>Action</strong></td></tr>";
			
			while($dataListeLogiciel = mysql_fetch_assoc($resListeLogiciel))
			{
				echo "<tr><td>".$dataListeLogiciel['TypeLogiciel']."</td>
				<td><a href='index.php?action=ConsultLogiciel&NumLogiciel=".$dataListeLogiciel['NumLogiciel']."' title='Consultation des caractéristiques du logiciel'>".$dataListeLogiciel['NomLogiciel']."</a></td>
				<td>".$dataListeLogiciel['NbLicencesAchetees']."</td>
				<td>".$dataListeLogiciel['NbLicencesInstallees']."</td>
				<td><a href='index.php?action=ModifierLogiciel&NumLogiciel=".$dataListeLogiciel['NumLogiciel']."' title='Permet de modifier un logiciel'>Modifier</a>
				&nbsp;/&nbsp;<a href='index.php?action=InstallerLogiciel&NumLogiciel=".$dataListeLogiciel['NumLogiciel']."' title='Permet de signaler sur quelles machines le logiciel est installé'>Installer logiciel</a></td></tr>";		
			}
			
			echo "</table>";
			
			
			echo "<table width=100%><tr>";
				echo "<td align=left><a href=\"index.php?typeLogiciel=".$typeLogiciel."&action=NouveauLogiciel\" title='Ajoute un nouveau logiciel '>Ajouter nouveau : ".stripslashes($typeLogiciel)."</a></td>"; 
			echo "</tr></table>";
			
		}	
	}
	
?>
0
justoo76 Messages postés 203 Statut Membre 13
 
Bah tu as oublié de démarrer la session : session_start(); à chaque fois que tu veux utiliser des sessions dans un scipt.

Exemple:

<?php
session_start();

$_SESSION['abc'] = $_POST['abc']

.
.
.
?>
0

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

Posez votre question
Breub62 Messages postés 3452 Statut Membre 369
 
Non en fait je gère toute mon appli via un index.php qui appelle mes diverses pages selon les cas.

Donc mon session_start(); se trouve en haut de mon index qui est appelé à chaque action du client...
0
justoo76 Messages postés 203 Statut Membre 13
 
Bah normalement le session_start() se met sur chaque fichier php qui utilise des sessions. Si ce la créé une erreur "session already started" il suffit de l'ignorer avec @session_start();
0
Breub62 Messages postés 3452 Statut Membre 369
 
J'ai jamais eu ce type d'erreur par contre mon post n'est pris en compte qu'après coup...
0
justoo76 Messages postés 203 Statut Membre 13
 
Arf la je vois pas . Et si tu mettais une variable temporaire ?

$temp=$_POST['abc'] ;
$_SESSION['abc'] = $temp;
0
Breub62 Messages postés 3452 Statut Membre 369
 
Non toujours pas. Merci en tout cas pour ton aide.
0