PHP Problème $_SESSION

TRUNCKS Messages postés 1066 Statut Membre -  
TRUNCKS Messages postés 1066 Statut Membre -
Bonjour à vous,

J'ai un problème assez étrange que je n'arrive pas à résoudre.

J'ai une page où j'affiche des images au moyen d'une requête sur un session.
Seulement voilà, si tout se passe bien et que les images s'affichent, si jamais il y a un champ vide dans ma bdd, la session saute à la fin de la boucle.

Super bizarre:

//Images
$sql_image = "SELECT * FROM images_simple WHERE categorie_id = '".mysql_real_escape_string($_SESSION['type_base'])."'";
$requete_image = mysql_query($sql_image) or die( mysql_error());

echo '<table align="center" border="1">'; //tableau
echo '<tr><th>&nbsp;Images&nbsp;</th></tr>'; 
	while ($result_image = mysql_fetch_array($requete_image)){
	$image = $result_image['url_image_mini'];
		echo '<tr>'; //ligne
		echo '<td align="center" valign="middle"><img src="../../'.$image.'"</img></td>';?>
		      <td align="center" valign="middle">&nbsp;<input type="button" name="Supprimer" value="Supprimer" onclick="supprimer(<?php echo $result_image['ID_image']; ?>)"/>&nbsp;</td> 

<?php 

echo '</tr>'; //fin ligne
	}
echo '</table>';


En gros, si dans [url_image_mini'], il y a un moment où il rencontre un champ vide, la session saute. Si tous les champs sont remplis, pas de soucis.
A voir également:

17 réponses

Mihawk Messages postés 4753 Statut Contributeur 846
 
Hello,

Qu'entends-tu par "la session saute" ? Tu sors du while ?
0
TRUNCKS Messages postés 1066 Statut Membre 7
 
Ben en fait il me perd l'array de session qui tombe à 0 alors qu'il eszt sensé garder la catégorie en mémoire.

J'ai un peu cherché, cela vient de cette ligne:

echo '<td align="center" valign="middle"><img src="../../'.$image.'"</img></td>';?>


C'est ../.. qui fait merder.
Si j'enlève ça, plus de soucis.

Mais j'ai besoin de garder mon dossier image à cet endroit, je capte pas le rapport avec le session :(
0
Mihawk Messages postés 4753 Statut Contributeur 846
 
Euh tu parles du $_SESSION['type_base'] ?
Je ne vois pas où tu t'en sers après la requête ; ni où il pourrait être modifié...
0
TRUNCKS Messages postés 1066 Statut Membre 7
 
Ben ici:

$sql_image = "SELECT * FROM images_simple WHERE categorie_id = '".mysql_real_escape_string($_SESSION['type_base'])."'";

Je fais le fetch array dessus.
0

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

Posez votre question
Mihawk Messages postés 4753 Statut Contributeur 846
 
Oui enfin tu lis seulement la session afin de l'insérer dans la requête ; ça ne devrait en rien la modifier !
0
TRUNCKS Messages postés 1066 Statut Membre 7
 
Je viens un peu de regarder avec firebug, en fait c'est le fait que cela retourne

../../ si il n'y a pas d'image qui fait merder.
0
Mihawk Messages postés 4753 Statut Contributeur 846
 
Balise mal fermée. Remplace :

echo '<td align="center" valign="middle"><img src="../../'.$image.'"</img></td>';?>

par

echo '<td align="center" valign="middle"><img src="../../'.$image.'"/></td>';?>


Mihawk
"Tant qu'on ne fait pas, on ne sait pas."
0
TRUNCKS Messages postés 1066 Statut Membre 7
 
Même chose malheureusement.
0
TRUNCKS Messages postés 1066 Statut Membre 7
 
En fait je viens de comprendre.
J'ai l'impression que la session se perd parce que je le demande de se rendre dans un dossier qui se trouve à deux niveau au dessus.J'ai déplacé le dossier image pour tester, je peux parfaitement me rendre dans un sous dossier inférieur, mais pas remonter sans perdre la session.--
0
arthezius Messages postés 3756 Statut Membre 475
 
Je vois pas en quoi ça peut agir sur la variable de session.
Le PHP est excuté côté serveur et le HTML interprété côté client (navigateur).
"../../" est donc lu par le navigateur étant dans une balise HTML.
Hormis un problème de chemin, ça ne va pas agir sur la variable de session qui est "invisible" au navigateur.
Le problème est donc ailleurs.

Tu peux toutefois faire une chose.
echo '<td align="center" valign="middle">';
if(!empty($image)) echo'<img src="../../'.$image.'" alt="" />';
echo'</td>';

Tu peux même ajouter un else pour afficher une image de remplacement dans le cas ou le champ serait vide.
0
Mihawk Messages postés 4753 Statut Contributeur 846
 
Des questions bêtes : tu n'as pas mis ton navigateur en mode privé ?
Et tu as bien créé le dossier "sessions" à la racine de ton site ?

Et si tu mets un :

echo $_SESSION['type_base'] ;

dans ton while, tu vois la valeur apparaitre jusqu'à une certaine ligne, donc ?
0
TRUNCKS Messages postés 1066 Statut Membre 7
 
Désolé je vais paraître idiot, mais ne n'ai jamais entenu parler d'un dossier "sessions".

J'ai juste ouvert la session dans une page, et elle est sensé se poursuivre non ?
0
Mihawk Messages postés 4753 Statut Contributeur 846
 
Alors lors de l'utilisation des session il faut 2 choses :

1- un dossier de sessions pour que celles-ci soient bien stockées quelque part.
2- un session_start() avant tout code HTML et tout code PHP utilisant les session.

https://openclassrooms.com/fr/courses/918836-concevez-votre-site-web-avec-php-et-mysql/913348-variables-superglobales#ss_part_2
0
TRUNCKS Messages postés 1066 Statut Membre 7
 
Ah oui ! Mais ce n'est pas pour Free seulement ?
0
Mihawk Messages postés 4753 Statut Contributeur 846
 
Ah si c'est possible en effet, au temps pour moi. Cela ne coute rien de le mettre pour tester...
Le session_start() est-il bien placé avant toute chose ?
0
TRUNCKS Messages postés 1066 Statut Membre 7
 
Ben oui tout baigne c'est vraiment bizarre.

Après si je met mon dossier image dans le même dossier, où même à un niveau inférieur, cela marche bien.
C'est vraiment le fait de remonter dans l'arborescence qui merde :(

root/admin/images ----> dossier où sont mes images.

root/admin/categorie ----> dossier des scripts en question
0
TRUNCKS Messages postés 1066 Statut Membre 7
 
J'aimerai essayé de mettre le lien en root comme cela:

$uploaddir = $_SERVER['DOCUMENT_ROOT'];

echo '<td align="center" valign="middle"><img src="'.$uploaddir.'"/admin"'.$image.'"/></td>';?>

Comment je peux écrire le uploaddir ?
Cela ne marche pas, il me revoie www/
0