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 :

[POO] Problème avec les classes


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2006
    Messages : 6
    Par défaut [POO] Problème avec les classes
    Bonjour a tous j'ai un souci avec la portion de code suivante:

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
     
    <?php
     
    class languages_module
    {
     
    var $languages;
     
    function languages_module ()
    {
     
        $this->languages = array();
     
        }
     
     
     
     
        function call01 ()
        {
            $sql = "SELECT id, code FROM languages";
            $sgbd->query($query, $sql);
     
                while( $sgbd->fetch_row( $query, $row ) )
                {
                array_push($this->languages, array('id'=>$row['id'],'code'=>$row['code']) );         
                }
     
        }
     
     
        function call02 ()
        {
        }
     
        function getLanguages ()
        {
        return $this->languages;
        }
     
     
    }
     
    ?>

    voici ce qu'il se passe:

    je crée une classe $classe = new languages_module();

    ensuite j'apelle $classe->call01(); pour lire tous les languages dispos dans la base, les langues sont stockées dans un tableau var$languages

    puis plus tard j'utilise $class->getLanguages(); pour qu'il me donne les langues insérées.

    hors quelque chose de bizarre arrive:

    dans le constructeur mon tableau est déclaré vide "$this->lanaguages=array()..."

    dans call01() j'ai vérifié les langues sont bien insérées, en faisant un print_r j'ai pu voir que tout etait ok

    mais en apellant getLanguages() il ne me retourne rien, seulement un tableau vide ( comme dans le constructeur )

    j'ai testé en initialisant un tableau non vide dans le constructeur et la getLanguages() me retourne ce que j'ai déclaré comme ci call01() n'avait rien modifé !!!

    si vous avez des idées pour résoudre cela merci

  2. #2
    Rédacteur

    Homme Profil pro
    Geek entrepreneur
    Inscrit en
    Novembre 2004
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Geek entrepreneur

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 224
    Par défaut
    Je suppose que tu ne montres pas tout ton code (sinon $sgbd ne serait jamais initialisé)
    Dans ton cas, j'aurais d'ailleurs plutot utilisé la notation
    $array[] = $var;

    Ce qui pourrait nous intéresser c'est aussi le bout de code ou t'appelles tout ca.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Si tu est en PHP 5, le contructeur est __construct() et non le nom de la classe comme en java par exemple.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2006
    Messages : 6
    Par défaut
    en effet la notation languages[] = $var est celle que j'utilisais avant mais ca ne fonctionnait pas non plus.

    $sgbd est une autre classe mais elle fonctionne bien.

    note: j'ai remarqué que sous PHP 5 ca marchait...

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2006
    Messages : 6
    Par défaut
    je suis en php 4 donc pas besoin de __construct

  6. #6
    Rédacteur

    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 695
    Par défaut
    $row n'est pas initialisé
    de plus il faut mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function call01 ()
        {
    global $sgbd;        
     
    $sql = "SELECT id, code FROM languages";
            $sgbd->query($query, $sql);
     
                while( $sgbd->fetch_row( $query, $row ) )
                {
                array_push($this->languages, array('id'=>$row['id'],'code'=>$row['code']) );         
                }
     
        }
    Articles sur developpez.com
    - Gestion des exceptions avec PHP5
    - Chiffrement et hash en PHP contre l'attaque Man in the middle
    - Aedituus - Espace membre sécurisé en PHP5

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2006
    Messages : 6
    Par défaut
    merci wamania mais $row et $sgbd fonctionnent très bien.
    j'ai testé je récupère bien toutes les valeurs.

    $this->languages est bien remplit !

  8. #8
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par défaut
    Citation Envoyé par hugo123
    Ce qui pourrait nous intéresser c'est aussi le bout de code ou t'appelles tout ca.
    Pour moi la véritée est ici. Encore une histoire de référence...

Discussions similaires

  1. [POO] Problème de langue avec la classe phpmailer
    Par sansouna24 dans le forum Langage
    Réponses: 10
    Dernier message: 05/01/2012, 16h14
  2. [POO] PHP5 : Problème avec les classes
    Par fleur_de_rose dans le forum Langage
    Réponses: 9
    Dernier message: 06/05/2006, 19h09
  3. Réponses: 3
    Dernier message: 18/04/2006, 22h49
  4. [Eclipse] [VE] Créer des menus avec les classes SWT de VE
    Par jbcorens dans le forum SWT/JFace
    Réponses: 3
    Dernier message: 30/08/2005, 12h25
  5. Réponses: 7
    Dernier message: 05/10/2004, 13h44

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