Page 1 sur 2
Problème $_SESSION
Posté : 08 nov. 2011, 22:11
par TRUNCKS
Bonjour à vous,
Je ne sais pas pourquoi, quand je change de page, je n'arrive pas à récupèrer.
$categorie = $_SESSION['type_base'];
J'ai bien session_start au début de chacune de mes pages.
Je passe d'une page à l'autre avec ça, si jamais c'est ça qui pose soucis:
<input type="button" name="nouveau" value="Nouvelle image" onclick="self.location.href='addimage.php'"/>
Elle est bien sur la page d'où je veux repartir, puisque je m'en sers pour une requête.
Merci à vous si vous avez une petite idée

Re: Problème $_SESSION
Posté : 09 nov. 2011, 00:17
par moogli
Salut,
Que donne un var_dump($_SESSION); ?
Sinon passe le sid dans l'url.
@+
Re: Problème $_SESSION
Posté : 09 nov. 2011, 12:49
par TRUNCKS
Je viens de vérifier un peu avec des echo $_session.
Je remarque que je perd SESSION quand je passe sur la supression par exemple:
<td align="center" valign="middle"> <input type="button" name="Supprimer" value="Supprimer" onclick="supprimer(<?php echo $result['ID_image']; ?>)"/> </td>
Code : Tout sélectionner
<script type="text/javascript">
function supprimer(id)
{
if(confirm('Voulez vous vraiment supprimer ?'))
{
window.open("?Supprimer=Supprimer&id="+id,"_self");
}
}
</script>
Re: Problème $_SESSION
Posté : 09 nov. 2011, 12:53
par moogli
Je viens de vérifier un peu avec des echo $_session.
heu la si tu n'a pas un message d'erreur c'est qu'il y au n gros problème !!!!!!
c'est vard_ump(
$_SESSION); qui faut utiliser la casse (différence minuscule et majuscule) est importante car il s'agit la de deux variables différentes !
et y a quoi dans la page de suppression ?
@+
Re: Problème $_SESSION
Posté : 09 nov. 2011, 14:30
par TRUNCKS
array(1) { ["type_base"]=> string(1) "1" }
J'ai bien ça qui correspond bien à l'id.
Je m'en sert de nouveau sur une page pour afficher des images:
$type = $_SESSION['type_base'];
//Images
$sql_image = "SELECT * FROM images_simple WHERE categorie_id = '$type'";
Mais quand je veux revenir sur la page précédant, avec:
Code : Tout sélectionner
<input type="button" name="categories" value="Revenir aux articles" onclick="self.location.href='images.php'"/>
Le var_dump affiche array(0) { }
Pour la suppression, c'est une autre page, mais le problème est le même.
Quand je clique sur le bouton supprimer, j'ai la même erreur ( la suppression est sur la même page que l'affichage, elle appelle un js )
Re: Problème $_SESSION
Posté : 09 nov. 2011, 15:52
par moogli
tu veux nous montrer le code de la page cela sera plus simple
s'il s'agit de la même page, est ce que le session_start() est valable pour tous les cas utilisant les sessions (genre un session_start() mis dans if mais on va dans le else ?).
est ce que tu n'aurais pas une variable qui se nomme $type_base (avec l'auto déclaration des variables et une affectation dessus et c'est la loose

)
est ce que ton niveau de rapport d'erreur est bien à E_ALL|E_STRICIT ? (voir error_reporting dans la doc

)
@+
Re: Problème $_SESSION
Posté : 09 nov. 2011, 16:10
par TRUNCKS
Oui normalement pas de soucis avec les session.
J'ai une question avant de passer à la suite de mon post, c'est quelque chose qui se fait de faire passer une variable dans une session quand on a besoin de savoir
sur quoi on travaille ( dans mon cas, il me faut l'ID de la catégorie ) où c'est complètement farfelu ?
Je viens de fouiller un petit peu, et si, par exemple, il n'y a pas d'image à afficher, la session ne foire pas.
J'ai l'impression que cela vient de ma boucle qui affiche les 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> Images </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>';?>
Re: Problème $_SESSION
Posté : 09 nov. 2011, 17:07
par moogli
pour la question, non pas forcément ça dépend de ce que tu attend.
Par contre tu perd la possibilité de garde un marque page sur la galerie choisie (vu que la navigation ce fait via les sessions).
c'est un choix de conception
quand a ton code celui où tu gère la session serait plus intéressant.
et si avant cette requête le var_dump() indique que le tableau est vide c'est qu'il est vidé avant ou qu'il n'y a pas de session_start() pour ce cas. (les super globales sont toujours déclarées).
y a pas beaucoup de solution, soit la session contient quelque chose en haut de page et la tu fait un truc qui merde, soit y a jamais rien et la y a pas d'insertion dans le tableau de session ?
debug aussi l'insertion dans tableau de cette info (le $_SESSION['type_base'] = $truc).
@+
Re: Problème $_SESSION
Posté : 09 nov. 2011, 18:03
par TRUNCKS
Je sais que c'est un peu hors sujet mais j'ai réussis après plusieurs test à préciser un peu plus.
Ce soucis ne se produit que si il y a un champ url_mini de ma base image vide.
De cette ligne:
while ($result_image = mysql_fetch_array($requete_image)){
$image = $result_image['url_image_mini'];
En gros, si on upload pas d'image et qu'on se retrouve avec un champ vide à cet affichage.
Si il y a une image à chaque fois, pas de soucis.
Je sais que je pourrais mettre un truc qui refuse l'enregistrement s'il n'y a pas d'upload, mais j'aimerai bien comprendre pourquoi cela fait sauter la session

Re: Problème $_SESSION
Posté : 09 nov. 2011, 18:08
par moogli
sans le code je ne peux t'aider. il n'y a pas 10000 possibilités la plus part sont listée ci dessus.
Re: Problème $_SESSION
Posté : 09 nov. 2011, 18:18
par TRUNCKS
Voici ce que je vais passer en session:
( J'ai besoin de savoir le type de catégorie pour envoyer sur une page diffèrente )
$requete_type = "SELECT ID_categorie, type
FROM categories
WHERE ID_categorie = '$id'";
//exécution de la requête:
$query_type = mysql_query($requete_type) or die( mysql_error());
$result_type = mysql_fetch_array ($query_type);
$result_categorie = $result_type['ID_categorie'];
if ($result_type['type'] == 'Classique'){
$type = "simple/images.php";
}
if ($result_type['type'] == "Expert"){
$type = "images.php";
}
$_SESSION['type_base'] = $result_categorie;
header ("Location: $type");
}
Et le code de ma page qui affiche les images:
<?php session_start(); ?>
<?php require_once('../../connexion/localhost.php');
$conn = mysql_connect($hostname_localhost, $username_localhost, $password_localhost) or trigger_error(mysql_error(),E_USER_ERROR);
mysql_query("SET CHARACTER SET 'utf8';")or die(mysql_error());
mysql_select_db($database_localhost, $conn); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Liste des articles</title>
<link href="../../style.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<script type="text/javascript">
function supprimer(id)
{
if(confirm('Voulez vous vraiment supprimer ?'))
{
window.open("?Supprimer=Supprimer&id="+id,"_self");
}
}
</script>
<center>
<?php
if(isset($_GET['id'])){
$id = $_GET['id'];
$requete_supp = "SELECT *
FROM images_simple
WHERE ID_image = '$id'";
//exécution de la requête:
$requete_query_supp = mysql_query($requete_supp) or die( mysql_error());
$result_supp_array = mysql_fetch_array ($requete_query_supp);
$supp_image = $result_supp_array['url_image'];
$supp_image_mini = $result_supp_array['url_image_mini'];
//nom de ton fichier ici.
$filename = "../../$supp_image";
$filename2 = "../../$supp_image_mini";
unlink($filename);
unlink($filename2);
mysql_query("DELETE FROM images_simple WHERE ID_image='$id'")or die(mysql_error());
echo '<br/><br/>'.'<p style="color:#ff0000;font-weight:bold;">Image correctement supprimée</p>'."<br/><br/><a href=\"addimage.php\">Ajouter une nouvelle image</a>"."<br/><br/><a href=\"images.php\">Revenir à l'accueil</a>";
}
else{
?>
<br />
<p style="text-align: center;"><input type="button" name="nouveau" value="Nouvelle image" onclick="self.location.href='addimage.php'"/> <input type="button" name="categories" value="Revenir aux articles" onclick="self.location.href='images.php'"/> <input type="button" name="utilisateurs" value="Gestion des utilisateurs" onclick="self.location.href='../../utilisateurs.php'"/>
<a href="../../index.php">Se déconnecter</a>
<?php
echo '<br/><br/>';
//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> Images </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"> <input type="button" name="Supprimer" value="Supprimer" onclick="supprimer(<?php echo $result_image['ID_image']; ?>)"/> </td>
<?php
echo '</tr>'; //fin ligne
}
echo '</table>';
}
var_dump($_SESSION);
?>
</center>
</body>
</html>
Re: Problème $_SESSION
Posté : 09 nov. 2011, 18:53
par xTG
Et tu as un session_start() dans le premier code montré ?
Re: Problème $_SESSION
Posté : 09 nov. 2011, 18:56
par TRUNCKS
Yep, j'ai enlevé le début car c'est toujours pareil, connexion etc...
Re: Problème $_SESSION
Posté : 09 nov. 2011, 19:39
par xTG
Les cookies sont-ils activés sur ton navigateur ? Car sans cookie il se peut qu'une nouvelle session débute.
Que donne un var_dump() sur la page de destination juste après le session_start() ? (et non pas à la fin comme tu le fais, ça sert à rien)
Re: Problème $_SESSION
Posté : 09 nov. 2011, 19:58
par TRUNCKS
La même chose:
Un array(1) { ["type_base"]=> string(1) "3" } si toutes mes tables contiennent un image.
Et array array(0) { } si il y a une entrée du champ url_image_mini est vide.