PHP Problème $_SESSION

Fermé
TRUNCKS Messages postés 1017 Date d'inscription vendredi 10 août 2007 Statut Membre Dernière intervention 8 novembre 2024 - 10 nov. 2011 à 08:34
TRUNCKS Messages postés 1017 Date d'inscription vendredi 10 août 2007 Statut Membre Dernière intervention 8 novembre 2024 - 10 nov. 2011 à 16:50
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 4315 Date d'inscription mercredi 29 mars 2006 Statut Contributeur Dernière intervention 6 janvier 2015 846
10 nov. 2011 à 09:38
Hello,

Qu'entends-tu par "la session saute" ? Tu sors du while ?
0
TRUNCKS Messages postés 1017 Date d'inscription vendredi 10 août 2007 Statut Membre Dernière intervention 8 novembre 2024 7
10 nov. 2011 à 09:52
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 4315 Date d'inscription mercredi 29 mars 2006 Statut Contributeur Dernière intervention 6 janvier 2015 846
10 nov. 2011 à 09:59
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 1017 Date d'inscription vendredi 10 août 2007 Statut Membre Dernière intervention 8 novembre 2024 7
10 nov. 2011 à 10:01
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 4315 Date d'inscription mercredi 29 mars 2006 Statut Contributeur Dernière intervention 6 janvier 2015 846
10 nov. 2011 à 10:05
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 1017 Date d'inscription vendredi 10 août 2007 Statut Membre Dernière intervention 8 novembre 2024 7
10 nov. 2011 à 10:07
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 4315 Date d'inscription mercredi 29 mars 2006 Statut Contributeur Dernière intervention 6 janvier 2015 846
Modifié par Mihawk le 10/11/2011 à 11:09
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 1017 Date d'inscription vendredi 10 août 2007 Statut Membre Dernière intervention 8 novembre 2024 7
10 nov. 2011 à 12:08
Même chose malheureusement.
0
TRUNCKS Messages postés 1017 Date d'inscription vendredi 10 août 2007 Statut Membre Dernière intervention 8 novembre 2024 7
10 nov. 2011 à 12:16
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 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 475
10 nov. 2011 à 12:36
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 4315 Date d'inscription mercredi 29 mars 2006 Statut Contributeur Dernière intervention 6 janvier 2015 846
10 nov. 2011 à 13:33
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 1017 Date d'inscription vendredi 10 août 2007 Statut Membre Dernière intervention 8 novembre 2024 7
10 nov. 2011 à 16:06
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 4315 Date d'inscription mercredi 29 mars 2006 Statut Contributeur Dernière intervention 6 janvier 2015 846
10 nov. 2011 à 16:14
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 1017 Date d'inscription vendredi 10 août 2007 Statut Membre Dernière intervention 8 novembre 2024 7
10 nov. 2011 à 16:21
Ah oui ! Mais ce n'est pas pour Free seulement ?
0
Mihawk Messages postés 4315 Date d'inscription mercredi 29 mars 2006 Statut Contributeur Dernière intervention 6 janvier 2015 846
10 nov. 2011 à 16:22
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 1017 Date d'inscription vendredi 10 août 2007 Statut Membre Dernière intervention 8 novembre 2024 7
10 nov. 2011 à 16:26
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 1017 Date d'inscription vendredi 10 août 2007 Statut Membre Dernière intervention 8 novembre 2024 7
10 nov. 2011 à 16:50
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