Les variables globales($_SESSION[''])

Fermé
stevyal Messages postés 25 Date d'inscription mardi 11 mars 2008 Statut Membre Dernière intervention 19 mai 2023 - Modifié par stevyal le 27/05/2011 à 03:08
arthezius Messages postés 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 - 27 mai 2011 à 05:55
Salut à tous les développeurs de la planète php. Je sais pas si c'est moi qui me trompe mais je trouve que le php peut s'avéré être un langage casse tête. Cela fait plus d'un an que je suis fiancé avec ce langage et je croyais le connaître mais je me trompais. J'aimerais vraiment que quelqu'un m'arrange le coup. Voici mon problème :

J'ai un formulaire sur lequel je fais de vérification grâce au PCRE, vérifications après lesquelles je fais une redirection avec la fonction header(). Sur la page cible je récupère mes variables en session ($_SESSION['non_de_variable']). Il y a donc une variable de session que je définis par le résultat que retourne une fonction. Pour être clair voici le code :

Code html:
<html>
<head>
<title> Mon mariage avec php est douteux</title>
</head>
<body>
<form method="post">
<fieldset>
<legend> Ecole primaire</legend>
<label> Choisissez votre classe : <Label>
<select id="classe_primaire " name="primaire">
<option value="Sélectionner" selected="Sélectionner">SIL</option>
<option value="valeur1" >SIL</option>
<option value="valeur2">Cours préparatoire</option>
<option value="valeur3">Cour élémentaire2</option>
<option value="valeur3">Cour moyen1</option>
<option value="valeur3">Cour moyen2</option>
</select>
</fieldset>
<br />
<fieldset>
<legend> Collège</legend>
<label> Choisissez votre classe : <Label>
<select id="college " name="college">
<option value="Sélectionner" selected="Sélectionner">SIL</option>
<option value="valeur1" >6ème</option>
<option value="valeur2">5ème</option>
<option value="valeur3">4ème</option>
<option value="valeur3">3ème</option>
<option value="valeur3">2nd</option>
<option value="valeur3">première</option>
<option value="valeur3">Terminale</option>
</select>
</fieldset>
<br />
<fieldset>
<legend>enseignement Supérieur</legend>
<label> Choisissez votre niveau : <Label>
<select id="superieur " name="superieur">
<option value="Sélectionner" selected="Sélectionner">SIL</option>
<option value="valeur1" >1ére année</option>
<option value="valeur2">2ème année</option>
<option value="valeur3">3ème année</option>
<option value="valeur3">4ème année</option>
</select>
</fieldset>
<br />

<input type="submit" value="Valider"/>
</body>
</html>

Code php: voici les deux fonctions que j'ai utilisées pour créer la variable $Classe.

<?php
function affiche_option($chaine1, $chaine2, $chaine2)
{
if( $chaine2 == 'Sélectionner' && $chaine3 == 'Sélectionner')
{
echo $chaine1;
}

elseif( $chaine1 == 'Sélectionner' && $chaine3 == 'Sélectionner')
{
echo $chaine2;
}
else//(Si la variable $chaine1 et $chaine2 valent 'Sélectionner'
{
echo $chaine3;
}
}

//la 2ème fonction
function affiche_classe($chaine1, $chaine2, $chaine3)
{
$liste_classe = array('$chaine1', 'chaine2', 'chaine3');

foreach($liste_classe as $valeur)
{
if( strlen($valeur) < 12 )
{
echo $valeur;
}
}
}

//Enfin je définis ma variable de session :
$Classe_prim = $_POST['primaire'] ;
$Classe_col = $_POST['college'] ;
$Classe_sup = $_POST['superieur'] ;

$_SESSION['Classe'] = affiche_classe($Classe_prim, $Classe_col, $Classe_sup);

//ou alors l'autre fonction pas les deux à la fois !

$_SESSION['Classe'] = affiche_option($Classe_prim, $Classe_col, $Classe_sup);
?>

< ?php

// dans la page cible je voudrais faire un swich () en utilisant la variable session pour faire un <select> ravitailler par la base de données de cette manière :

$user="root";
$host="localhost";
$password="";
$database="ma_base";

$connexion = mysql_connect($host,$user,$password) or die ("Connexion au serveur impossible");
mysql_select_db($database,$connexion);

$Classe = $_SESSION['Classe'] ;

swich ($Classe)
{
case 'Sil' : $req = mysql_query("SELECT DISTINCT E.Nom , E.Prenom, I.Matricule FROM eleves As E, Classe_Sil_a As I WHERE E.Matricule = I.Matricule ORDER BY E.Nom") or die(print_r($base->errorInfo()));;
break;

case 'terminale': $req = mysql_query("SELECT DISTINCT E.Nom , E.Prenom, I.Matricule FROM eleves2 As E, Classe_terminale_a As I WHERE E.Matricule = I.Matricule ORDER BY E.Nom") or die(print_r($base->errorInfo()));;
break;
}

?>
Malheureusement ma variable $_SESSION['Classe'] n'existe pas. J'ai même fait un

if(!empty($_SESSION['Classe']))
{
$Classe = $_SESSION['Classe'];
echo $Classe;
}
else {echo 'La variable Classe n\'existe pas';} ça affiche : 'La variable Classe n'existe pas'
S'il vous plait aidez-moi ! Sauvez ma relation avec php.




1 réponse

arthezius Messages postés 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 475
27 mai 2011 à 05:55
Les pages dans lesquelles tu utilises les variables de session doivent commencer par le code suivante:
<?php
session_start();
?>

Il ne doit rien y avoir qui soit envoyé au navigateur avant ce code (pas de code html, pas d'echo en PHP).
0