[RESOLU] Passage par URL d'une variable

Eléphanteau du PHP | 45 Messages

04 mai 2015, 11:31

Bonjour ,
J'ai un problème dans une page qui doit me permettre de faire des recherche sur les missions par le nom de la mission ou par des filtres de recherches.Mon problème est avec la variable " miss" passé par url qui dans la page suivante me permet d'identifier la mission choisi.Ca marche seulement quand je change de page et je reviens la variable disparaît et je perd les données de la mission choisie. voici mon code et merci d'avance pour votre aide .
<?php
include("connexion.php");
if(isset($_POST["Rechercher"]))
{
$nom_mission=$_POST["nom_mission"];
$type=$_POST["Type"];
$etat=$_POST["etat"];

if ($nom_mission && $etat && $type)
{	$req="select * from mission where nom_mission='$nom_mission' AND etat='$etat' AND type_mission='$type'";
	$rs=mysql_query($req);
}
if($nom_mission && $etat && $type=="t_miss")
{
	$req="select * from mission where nom_mission='$nom_mission' AND etat='$etat'";
	$rs=mysql_query($req);
}	
if($nom_mission && $etat=="et_mis"  && $type)
{
	$req="select * from mission where nom_mission='$nom_mission'";
	$rs=mysql_query($req);
}	
if($nom_mission && $etat=="et_mis"  && $type=="t_miss")
{
	$req="select * from mission where nom_mission='$nom_mission'";
	$rs=mysql_query($req);
}
if(empty($nom_mission) && $etat && $type=="t_miss")
{
	$req="select * from mission where etat='$etat' ORDER by avancement_mission DESC";
	$rs=mysql_query($req);
}		
if(empty($nom_mission) && $etat=="et_mis" && $type)
{
	$req="select * from mission where type_mission='$type' ORDER by avancement_mission DESC";
	$rs=mysql_query($req);
}	
if(empty($nom_mission) && $etat=="et_mis"  && $type=="t_miss")
{
	$req="select * from mission ORDER by avancement_mission DESC";
	$rs=mysql_query($req);
}	

		while ($ligne=mysql_fetch_array($rs))
	{
		$nom_mission1=$ligne[0];
		$_SESSION['nom_mission']= $nom_mission1;
		$client=$ligne[3];
		$type1=$ligne[4];
		$etat1=$ligne[8];
		$avancement=$ligne[9];
		
		echo'<div class="container">
		<div class="row">';
		echo '<tr>
				<td><a href=acc_miss.php?[color=#FF0000]miss[/color]='.$ligne[0].'>'.$_SESSION['nom_mission'].'</a></td>
				<td>'.$client.'</td>
				<td>'.$type1.'</td>
				<td>'.$etat1.'</td>
				<div class="container">
				<div class="col-lg-3">
				<td>
				<div class="progress">
				<div class="progress-bar" role="progressbar" aria-valuenow="60" aria-valuemin="10" aria-valuemax="100" style="width: '.$avancement.'">
					'.$avancement.'</td>
				</div>
				</div>
				
				
			</tr>	
			</div>
				</div>
		</table>';				
	}

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

04 mai 2015, 12:06

Bonjour,

Si tu passes des paramètres à une page, lorsque tu en changes et que tu reviens dessus, il faut renvoyer les paramètres à cette page :)
Tu peux éventuellement utiliser les sessions pour conserver un paramètre en mémoire, mais c'est peut être un peu lourd dans ton cas. Il suffirait simplement dans ton lien retour ou dans ta redirection, de renseigner à nouveau le paramètre "miss" pour ré-afficher ta page correctement :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 45 Messages

04 mai 2015, 13:01

Bonjour Ryle ;
merci pour votre réponse, mais j'ai pas trouver comment passer une variable passé par url dans une variable de session

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

04 mai 2015, 15:36

Les données en session sont enregistrées en mémoire sur le serveur pour chaque utilisateur pendant le temps de sa connexion. Tu peux donc ainsi décider de mettre certaines informations en session et les retrouver ultérieurement, quel que soit la page qui les sollicite.

Pour pouvoir utiliser les sessions, il faut pour chacune des pages qui doit accéder à celle-ci (que ce soit en lecture ou en écriture) démarrer une session avec un appel à session_start() (plus d'infos sur cette fonction sur php.net).

Les variables passées par l'url peuvent être récupérées en utilisant la variable $_GET ($_GET['nom_variable']), les variables transmises par un formulaire et la méthode post se récupèrent de la même manière avec $_POST. C'est la même chose pour les sessions où tu utiliseras la variable $_SESSION ($_SESSION['nom_variable']). A toi ensuite de décider des données que tu mets en session.

Par exemple :
if (isSet($_GET['miss']) { // si une valeur est passée dans l'url
   $miss = $_GET['miss']; // on utilise la valeur passée dans l'url
   $_SESSION['miss'] = $_GET['miss']; // et on l'enregistre en session
}
elseif (isSet($_SESSION['miss'])) { // si aucune valeur passée dans l'url, mais une info en session
   $miss = $_SESSION['miss']; // on utilise la valeur en session
}
else // si la valeur n'est passée ni en session, ni dans l'url 
    $miss = 'valeur par défaut';  // on utilise une valeur par défaut
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 45 Messages

04 mai 2015, 22:42

@ryle un grand merci efficace et rapide comme toujours merci encore une autre fois et à la prochaine