Test variable de session

Résolu/Fermé
t671 Messages postés 1419 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 26 février 2024 - Modifié par t671 le 6/05/2013 à 18:17
t671 Messages postés 1419 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 26 février 2024 - 7 mai 2013 à 18:18
Bonjour,

Dans mes scripts, je passe mes variables par sessions.
Le script de fin, là où je vais écrire mes données dans la base, si je test ma session, je vois ce qu'il doit y avoir. Mais après, certaines variables sont vides, mais pas toutes, pour l'inscription danqs la base !
<?php    
 session_start(); 

 $nom = $_SESSION['nom']; 
 $prenom = $_SESSION['prenom']; 
 $famille = $_SESSION['famille']; 
 $sexe = $_SESSION['sexe']; 
 $monfichier = $_SESSION['monfichier']; 
 $nais_expression1 = $_SESSION['expression1']; 
 $nais_jour1 = $_SESSION['jour1']; 
 $nais_mois1 = $_SESSION['mois1']; 
 $nais_an1 = $_SESSION['an1']; 
 $nais_expression2 = $_SESSION['expression2']; 
 $nais_jour2 = $_SESSION['jour2']; 
 $nais_mois2 = $_SESSION['mois2']; 
 $nais_an2 = $_SESSION['an2']; 
................................. 
echo '<pre>'; print_r($_SESSION); echo '</pre>'; // toutes les variables de session sont visibles 
echo $_SESSION['jour1'];   // l'echo est vide  
echo $nais_jour1; // l'echo est vide 
echo $nom;     // la variable est visible 

Les variables qui disparraissent sont :
$monfichier = $_SESSION['monfichier'];
$nais_expression1 = $_SESSION['expression1'];
$nais_jour1 = $_SESSION['jour1'];
$nais_mois1 = $_SESSION['mois1'];
$nais_an1 = $_SESSION['an1'];
$nais_expression2 = $_SESSION['expression2'];
$nais_jour2 = $_SESSION['jour2'];
$nais_mois2 = $_SESSION['mois2'];
$nais_an2 = $_SESSION['an2'];

Pourquoi certaines sont ok puis plus rien ?
Merci.

12 réponses

loupix57 Messages postés 316 Date d'inscription mercredi 20 mars 2013 Statut Membre Dernière intervention 1 juin 2015 14
6 mai 2013 à 18:38
Ben montre d'abord comment tu les enregistrent ?

ça doit être une erreur toute bête !
1
t671 Messages postés 1419 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 26 février 2024 11
Modifié par t671 le 6/05/2013 à 19:32
1° script (script de saisie):
<?php  
session_start(); 
 $nom = $_SESSION['nom']; 
 $prenom = $_SESSION['prenom']; 
 $famille = $_SESSION['famille']; 
    $sexe = $_SESSION['sexe']; 
    $monfichier = $_SESSION['monfichier']; 
    $nais_expression1 = $_SESSION['expression1']; 
    $nais_jour1 = $_SESSION['jour1']; 
    $nais_mois1 = $_SESSION['mois1']; 
    $nais_an1 = $_SESSION['an1']; 
................. 
?> 
<html> ................. 
<tr align="left"><td>Famille :</td> 
 <td width="765"><SELECT name="famille"> 
  <OPTION VALUE="HUMBERT">HUMBERT</OPTION> 
  <OPTION VALUE="DAMERON">DAMERON</OPTION> 
  <OPTION VALUE="DAQUIN">DAQUIN</OPTION> 
 </SELECT></td></tr> 
<tr align="left"><td><b>NOM :   </td><td width="765"><input name="nom" type="text" id="nom" size="55" maxlength="55"></td></tr> 
<tr align="left"><td>Prénom : </td><td width="765"><input name="prenom" type="text" id="prenom" size="55" maxlength="55"/></td></tr> 
<tr align="left"><td>Sexe :</td> 
 <td width="765"><SELECT name="sexe"> 
  <OPTION VALUE="M">M</OPTION> 
  <OPTION VALUE="F">F</OPTION> 
 </SELECT></td></tr> 
<tr><td><input type="hidden" name="MAX_FILE_SIZE" value="2000000" /> 
<input type="file" name="monfichier" size="51" /></td></tr><p> 
<td width="200">Date de naissance :</td> 
 <td width="800">  
  <SELECT name="expression1"> 
  <OPTION VALUE="Vers">Vers</OPTION> 
  <OPTION VALUE="Avant">Avant</OPTION> 
  <OPTION VALUE="Après">Après</OPTION> 
  <OPTION VALUE="Entre">Entre</OPTION> 
  </SELECT> 
  <SELECT name="jour1"> 
  <OPTION VALUE="1">1</OPTION> 
  <OPTION VALUE="2">2</OPTION> 
  <OPTION VALUE="3">3</OPTION> 
  <OPTION VALUE="4">4</OPTION> .................. 
  <SELECT name="mois1"> 
  <OPTION VALUE=""></OPTION> 
  <OPTION VALUE="JAN">JAN</OPTION> 
  <OPTION VALUE="FEB">FEB</OPTION>................. 
                               </SELECT> 
  <input name="an1" type="text" id="an1" size="3" maxlength="4"/>

2° script (script de test) :
<?php  
 session_start();   
 $_SESSION['nom']=$_POST['nom']; 
 $_SESSION['prenom']=$_POST['prenom']; 
 $_SESSION['famille']=$_POST['famille']; 
 $_SESSION['sexe']=$_POST['sexe']; 
 $_SESSION['monfichier']=$_POST['monfichier']; 
 $_SESSION['nais_expression1']=$_POST['expression1']; 
 $_SESSION['nais_jour1']=$_POST['jour1']; 
 $_SESSION['nais_mois1']=$_POST['mois1']; 
 $_SESSION['nais_an1']=$_POST['an1']; 

3° script (insertion dans la base) : ci-dessus 1° post.

Merci.
0
loupix57 Messages postés 316 Date d'inscription mercredi 20 mars 2013 Statut Membre Dernière intervention 1 juin 2015 14
Modifié par loupix57 le 6/05/2013 à 19:52
Alors, oui je crois avoir trouver ton problème ;

C'est l'upload de fichier :
notamment

<tr><td><input type="hidden" name="MAX_FILE_SIZE" value="2000000" />
<input type="file" name="monfichier" size="51" /></td></tr><p>

C'est pas très jolis ...

L'idéal c'est de faire un second formulaire avec l'upload de ton image.

Essaye d'abord de supprimer ces lignes d'upload de ficher ;
(Juste pour tester expression1, jour1, etc .. et tout ce qu'il suit qui n'a pas été enregistrer en $_SESSION).
0
jeremy.s Messages postés 1226 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
6 mai 2013 à 20:27
Salut !

Si le print_r a effectivement affiché toutes tes variables, le problème n'est pas dans la session comme l'a dit loupix

Alors peux tu copier/coller un résultat de print_r($_SESSION) et print_r($_POST) stp

Et sinon Loupix a juste pour le fichier, ce n'est pas comme ca que ca marche. Il y a pas mal de tuto sur le net pour l'upload de fichier, je te conseil donc d'en regardé quelque un :)
0

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

Posez votre question
t671 Messages postés 1419 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 26 février 2024 11
Modifié par t671 le 7/05/2013 à 16:29
Bonjour et merci.
J'ai testé vos idées, mais rien de mieux.
Par contre, j'ai testé en supprimant le 2° script.
Donc, 1° script, script de saisie :
<?php  session_start();  
 $nom = $_SESSION['nom'];  
 $prenom = $_SESSION['prenom'];  
 $famille = $_SESSION['famille'];  
 $sexe = $_SESSION['sexe'];  
 $monfichier = $_SESSION['monfichier'];  
 $nais_expression1 = $_SESSION['expression1'];  
 $nais_jour1 = $_SESSION['jour1'];  
 $nais_mois1 = $_SESSION['mois1'];  
 $nais_an1 = $_SESSION['an1'];  
.................  
?>  
<html> .................  
<form enctype="multipart/form-data" action="add_indiv.php" method="POST" value="envoyer" name="soumettre"> 
<tr align="left"><td>Famille :</td>  
 <td width="765"> 
<SELECT name="famille">  
  <OPTION VALUE="H ">H</OPTION>  
  <OPTION VALUE="D">D</OPTION>  
  <OPTION VALUE="DA">DA</OPTION>  
 </SELECT></td></tr>  
<tr align="left"><td><b>NOM :   </td><td width="765"><input name="nom" type="text" id="nom" size="55" maxlength="55"></td></tr>  
<tr align="left"><td>Prénom : </td><td width="765"><input name="prenom" type="text" id="prenom" size="55" maxlength="55"/></td></tr>  
<tr align="left"><td>Sexe :</td>  
 <td width="765"><SELECT name="sexe">  
  <OPTION VALUE="M">M</OPTION>  
  <OPTION VALUE="F">F</OPTION>  
 </SELECT></td></tr>  
<tr><td><input type="hidden" name="MAX_FILE_SIZE" value="2000000" />  
<input type="file" name="monfichier" size="51" /></td></tr><p>  
<td width="200">Date de naissance :</td>  
 <td width="800">   
  <SELECT name="expression1">  
  <OPTION VALUE="Vers">Vers</OPTION>  
  <OPTION VALUE="Avant">Avant</OPTION>  
  <OPTION VALUE="Après">Après</OPTION>  
  <OPTION VALUE="Entre">Entre</OPTION>  
  </SELECT>  
  <SELECT name="jour1">  
  <OPTION VALUE="1">1</OPTION>  
  <OPTION VALUE="2">2</OPTION>  
  <OPTION VALUE="3">3</OPTION>  
  <OPTION VALUE="4">4</OPTION> ..................  
  <SELECT name="mois1">  
  <OPTION VALUE=""></OPTION>  
  <OPTION VALUE="JAN">JAN</OPTION>  
  <OPTION VALUE="FEB">FEB</OPTION>.................  
                               </SELECT>  
  <input name="an1" type="text" id="an1" size="3" maxlength="4"/> 

Puis insertion dans la base :
<?php   session_start();  
  
    $nom=$_SESSION['nom']=$_POST['nom']; 
    $prenom=$_SESSION['prenom']=$_POST['prenom']; 
    $famille=$_SESSION['famille']=$_POST['famille']; 
    $sexe=$_SESSION['sexe']=$_POST['sexe']; 
    $monfichier=$_SESSION['monfichier']=$_POST['monfichier']; 
    $expression1=$_SESSION['expression1']=$_POST['expression1']; 
    $nais_jour1=$_SESSION['nais_jour1']=$_POST['jour1']; 
    $nais_mois1=$_SESSION['nais_mois1']=$_POST['mois1']; 
    $nais_an1=$_SESSION['nais_an1']=$_POST['an1']; .................. 

Là, tout fonctionne !!! Si j'écris "$nais_jour1=$_SESSION['nais_jour1']=$_POST['jour1'];", c'est que pour la suite, c'est plus simple de travailler avec un petit nom de variable ($nais_jour1).

Par contre, si je remet en place le 2° script (pour test) :
<?php   
 session_start();    
 $_SESSION['nom']=$_POST['nom'];  
 $_SESSION['prenom']=$_POST['prenom'];  
 $_SESSION['famille']=$_POST['famille'];  
 $_SESSION['sexe']=$_POST['sexe'];  
 $_SESSION['monfichier']=$_POST['monfichier'];  
 $_SESSION['nais_expression1']=$_POST['expression1'];  
 $_SESSION['nais_jour1']=$_POST['jour1'];  
 $_SESSION['nais_mois1']=$_POST['mois1'];  
 $_SESSION['nais_an1']=$_POST['an1'];  

<?php   

$host = 'localhost'; 
$user = ''; 
$pass = ''; 
$db = '; 
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() ); 
mysql_select_db($db) or die ('Erreur :'.mysql_error()); 

$nom = $_SESSION['nom']; 
$prenom = $_SESSION['prenom']; 

//*** Récupération des personnes pouvant être des doublons à la création *** 
$select = "SELECT * FROM individus WHERE nom = '%$nom%' AND prenom = '%$prenom%' ";  
$result = mysql_query ($select);  
$num_rows = mysql_num_rows($result); 
if ($num_rows > 0) 
{ 
.....................

Je perds toutes mes variables arrivé dans le 3° script !!!!!
0
jeremy.s Messages postés 1226 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
7 mai 2013 à 16:32
Est-ce que tu changes de page entre tes scripts ?
0
t671 Messages postés 1419 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 26 février 2024 11
7 mai 2013 à 16:38
oui ! Mon 1° script est creat_indiv.php, le 2° est choix_doublon.php, et le 3° est add_indiv.php.
0
jeremy.s Messages postés 1226 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
7 mai 2013 à 16:39
Bah voilà, les variables $_POST ne "passent" pas vers d'autres pages. Elles ne sont valables uniquement sur la page appelé par le action="page.php" du <form>
0
t671 Messages postés 1419 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 26 février 2024 11
7 mai 2013 à 16:43
OK !!!
Le plus simple est de mettre le 2° script (pas long) ds le 3° !?
0
t671 Messages postés 1419 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 26 février 2024 11
7 mai 2013 à 17:09
Encore une question ....................
Si dans mon 2° script(add_indiv.php) j'écris
$select ='SELECT nom,prenom FROM individus WHERE nom LIKE "%$nom%" AND prenom LIKE "%$prenom%" ';	
$result = mysql_query ($select); 
$num_rows = mysql_num_rows($result);
if ($num_rows != '0')
{..................

Le if ne s'exécute pas alors que $num_rows = 1.
???
0
loupix57 Messages postés 316 Date d'inscription mercredi 20 mars 2013 Statut Membre Dernière intervention 1 juin 2015 14
7 mai 2013 à 18:10
met plutot $num_rows != 0 sans les quotes
0
jeremy.s Messages postés 1226 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
7 mai 2013 à 18:01
Mmh surement que t'as requete n'a pas marché
0
t671 Messages postés 1419 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 26 février 2024 11
7 mai 2013 à 18:18
Merci à vous !
En fait j'ai inversé le test :
if ($num_rows == 0)
{ .................. }
else ...........

et là ça fonctionne !
A ++
0