IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Impossible de lire un tableau d'objets stocké dans $_SESSION [PHP 5.4]


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 33
    Points : 26
    Points
    26
    Par défaut Impossible de lire un tableau d'objets stocké dans $_SESSION
    Bonjour,

    j'essaye d'afficher toutes les occurrences d'une table MySql qui s'appelle "billets" pour les mettre dans $_SESSION["billets"].
    Je fais donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    session_start();
    if(!isset($_SESSION["billets"]))					
    {
    	$_SESSION["billets"] = getAll();					
    }
    /*getAll c'est une fonction qui va se connecter à la base, faire ma requête SELECT et me renvoyer le resultat sous la forme d'un array d'objets Billet().*/
     
    foreach($_SESSION["billets"] as $b)	
    {  
       echo $b->getTitre().' : '.$b->getText();
    }
    ça fonctionne seulement à la 1ere exécution du script. Quand je recharge la page ça plante avec cette erreur :
    Fatal error: main(): The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition "Billet" of the object you are trying to operate on was loaded _before_ unserialize() gets called or provide a __autoload() function to load the class definition...

    Visiblement mon tableau $_SESSION["billets"] ne contient plus des objets de type Billet() après la 1ere exécution mais je ne vois pas pourquoi...

    Merci de votre aide.

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 382
    Points : 10 410
    Points
    10 410
    Par défaut
    Visiblement la réponse est dans le message d'erreur de php. Faut apprendre à traduire en français
    Pour donner un exemple j'obtiens la même erreur lors du rafraichissement de ce script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    <?php
    session_start();
     
    if (!isset($_SESSION['test']))
    {
    	class test {
    		public function toto()
    		{
    			return 'toto';
    		}
    	}
     
    	 $_SESSION['test'] = new test();
    	 echo $_SESSION['test']->toto();
    }
    else
    {
    	echo $_SESSION['test']->toto();
    }
    ?>
    ... alors que je n'ai aucun problème avec celui-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    <?php
    session_start();
     
    class test {
    	public function toto()
    	{
    		return 'toto';
    	}
    }
     
    if (!isset($_SESSION['test']))
    {
     
    	 $_SESSION['test'] = new test();
    	 echo $_SESSION['test']->toto();
    }
    else
    {
    	echo $_SESSION['test']->toto();
    }
    ?>

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 33
    Points : 26
    Points
    26
    Par défaut
    Merci pour ta réponse. Je ne définis pas ma classe dans mon test, je n'y fais que des instanciations. J'ai déclaré la classe dans un fichier à part et je faisais un include après le session_start() et avant le test.
    J'ai cependant résolu le problème en faisant le include avant le session_start(). Je n'ai pas encore compris pourquoi ça marche mais je planche dessus

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 09/01/2011, 13h11
  2. Impossible de lire un tableau public
    Par mustang-ffw02 dans le forum Général Dotnet
    Réponses: 5
    Dernier message: 28/09/2008, 12h38
  3. [POO] Lire un tableau d'objets
    Par Invité dans le forum Langage
    Réponses: 4
    Dernier message: 23/05/2008, 16h49
  4. Réponses: 2
    Dernier message: 06/02/2008, 17h20
  5. [POO] Tableau d'objets B dans une instance de class A
    Par Invité dans le forum Langage
    Réponses: 4
    Dernier message: 24/05/2006, 09h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo