Histoire de SESSION et POST

Fermé
Breub62 Messages postés 2989 Date d'inscription lundi 7 juin 2010 Statut Membre Dernière intervention 17 avril 2014 - Modifié par Breub62 le 10/06/2010 à 11:38
Breub62 Messages postés 2989 Date d'inscription lundi 7 juin 2010 Statut Membre Dernière intervention 17 avril 2014 - 10 juin 2010 à 12:21
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

5 réponses

justoo76 Messages postés 186 Date d'inscription mardi 13 avril 2010 Statut Membre Dernière intervention 23 mars 2016 13
10 juin 2010 à 11:45
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 2989 Date d'inscription lundi 7 juin 2010 Statut Membre Dernière intervention 17 avril 2014 369
10 juin 2010 à 11:47
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 186 Date d'inscription mardi 13 avril 2010 Statut Membre Dernière intervention 23 mars 2016 13
10 juin 2010 à 11:48
Ah ok , peut être qu'avec le code je pourrai t'aider ! ;)
0
Breub62 Messages postés 2989 Date d'inscription lundi 7 juin 2010 Statut Membre Dernière intervention 17 avril 2014 369
10 juin 2010 à 11:50
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 186 Date d'inscription mardi 13 avril 2010 Statut Membre Dernière intervention 23 mars 2016 13
10 juin 2010 à 11:58
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 2989 Date d'inscription lundi 7 juin 2010 Statut Membre Dernière intervention 17 avril 2014 369
10 juin 2010 à 12:03
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 186 Date d'inscription mardi 13 avril 2010 Statut Membre Dernière intervention 23 mars 2016 13
10 juin 2010 à 12:11
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 2989 Date d'inscription lundi 7 juin 2010 Statut Membre Dernière intervention 17 avril 2014 369
10 juin 2010 à 12:13
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 186 Date d'inscription mardi 13 avril 2010 Statut Membre Dernière intervention 23 mars 2016 13
10 juin 2010 à 12:17
Arf la je vois pas . Et si tu mettais une variable temporaire ?

$temp=$_POST['abc'] ;
$_SESSION['abc'] = $temp;
0
Breub62 Messages postés 2989 Date d'inscription lundi 7 juin 2010 Statut Membre Dernière intervention 17 avril 2014 369
10 juin 2010 à 12:21
Non toujours pas. Merci en tout cas pour ton aide.
0