[ Debutant ] pb avec une class et un array

Résolu
shockwave77 Messages postés 5 Date d'inscription mercredi 16 juin 2004 Statut Membre Dernière intervention 7 avril 2009 - 6 avril 2009 à 09:41
nautilus99 Messages postés 661 Date d'inscription vendredi 26 septembre 2008 Statut Membre Dernière intervention 18 septembre 2009 - 13 mai 2009 à 18:26
Bonjour à tous,

voila je debute dans les class, et je rencontre un petit problème avec une mise en array()...

Le but de ma class est de recupérer des messages d'alerte tout au long d'un script et de les réafficher à la fin dans un DIV mis en forme.

voici ma class :

class msgsys{

    var $info;
    var $title = 'Information système';
   
    function ajoutinfo($message){
        $this->info = $message;
        //$info[] = $message;
        print_r($info);
    }
   
    function show(){
        echo '

        <fieldset>
        <legend>'.$this->title.'</legend>';
        foreach($info as $valeur)
            {
                echo $valeur.'
';
            }   
        echo '</fieldset>
       
';
    }
}

et voici ma page de test.php

$alert = new msgsys();
$alert->ajoutinfo($DirectAccessNotAllowed);
$alert->ajoutinfo($AccessViolation);
$alert->ajoutinfo($AuthentificationFailed);
$alert->show();

Jusque là rien d'extraordinaire... sauf que ça ne me retourne rien....
Etant debutant j'ai du mal à comprendre où j'ai merdé...

Bien entendu, les includes sont corrects, donc les variables sont bien remplis.
Dans la class, j'ai essayer plusieurs choses... mais arrivé dans la fonction show(), pas moyen de visualiser le contenu de l'array... quelque soit la méthode... et PHP me renvoie :

Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\class\test.class.php on line 51

forcement puisque arrivé dans cette fonction l'array est vide/inexistant.

et c'est là que je comprend pas...

Merci de votre aide.

Jérôme.

quand on sait pas... faut pas rester dans l'igorance, faut demander

4 réponses

shockwave77 Messages postés 5 Date d'inscription mercredi 16 juin 2004 Statut Membre Dernière intervention 7 avril 2009
6 avril 2009 à 09:49
Bon...

je viens de tilté ...

class msgsys{

    var $info;
    var $title = 'Information système';
   
    function ajoutinfo($message)
        {
            $this->info[] = $message;
        }
   
    function show(){
        echo '

        <fieldset>
        <legend>'.$this->title.'</legend>';
        foreach($this->info as $valeur)
            {
                echo $valeur;
            }
        echo '</fieldset>
       
';
    }
   
}

ça marche mieux comme ça

Dans ajoutinfo()

le fait de declarer $this->info = $message ne me mettait pas la variable en array mais ecrasait la précédente....

du coup $this->info[] = $message me met bien tous les messages en array()

desolé pour le message

Jérôme.

quand on sait pas... faut pas rester dans l'igorance, faut demander
3
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
6 avril 2009 à 20:35
"quand on sait pas... faut pas rester dans l'igorance, faut demander "
...ou trouver par soi-même, comme tu l'as fait. Félicitations :-)
0
shockwave77 Messages postés 5 Date d'inscription mercredi 16 juin 2004 Statut Membre Dernière intervention 7 avril 2009
7 avril 2009 à 09:00
Merci malalam, ça me fait plaisir :)
et pi après près de 2 ans en autodidacte :) il serait temps ^_^ ....

(je sais .... je comprend vite mais faut m'expliquer longtemp  )

@+

quand on sait pas... faut pas rester dans l'igorance, faut demander
0
nautilus99 Messages postés 661 Date d'inscription vendredi 26 septembre 2008 Statut Membre Dernière intervention 18 septembre 2009 1
13 mai 2009 à 18:26
une version en pur PHP 5...

<?php
class msgsys
{
    public $info = null ;
    public $title = 'Information système';

    public function __construct()
    {
        $this->info = array() ;
    }

    public function ajoutinfo( $message )
    {
        array_push( $this->info, $message ) ;
    }

    public function show(){
        echo '

        <fieldset>
        <legend>'.$this->title.'</legend>';
        echo implode( '
', $this->info ) ;
        echo '</fieldset>
       
';
        }
}

// test class
$alert = new msgsys();
$alert->ajoutinfo('DirectAccessNotAllowed');
$alert->ajoutinfo('AccessViolation');
$alert->ajoutinfo('AuthentificationFailed');
$alert->show();
0
Rejoignez-nous