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 :

ma classe ne reagit pas


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Inscrit en
    Août 2010
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 77
    Points : 32
    Points
    32
    Par défaut ma classe ne reagit pas
    Bonjour tlm,
    je suis entrain de coder un petit script (Gestion de stock) en POO (niveau:debutant) .La premiere class que j'ai fait c fournisseurs qui contient tout les corrdoonées de ces derniers.

    J'ai déja terminé la class sauf que le probleme ici qu'elle ne reagit pas:
    voila ma classe Founisseurs:

    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    <?php
     
              class FOURNISSEURS {
     
                        private $id;
                        private $nom;
                        private $addresse;
                        private $tel;
                        private $situation;
     
                        public function __construct(){
     
                              $this->id=null;
                              $this->nom='';
                              $this->addresse='';
                              $this->tel=null;
                              $this->situation='';
     
                        }
     
                        public function __destruct(){
     
                        }
     
                        public function  create(){                          
                        }
     
                        public function  load($id){
                            $id=mysql_real_escape_string($id);
                            $query=DATABASE::request('SELECT id_fournisseur,nom,addresse,tel,situation FROM fournisseurs WHERE id_fournisseur="$id" LIMIT 1');
                            $Data=mysql_fetch_array($query);
                            $this->id=$Data['id_fournisseur'];
                            $this->nom=$Data['nom'];
                            $this->addresse=$Data['addresse'];
                            $this->tel=$Data['tel'];
                            $this->situation=$Data['situation'];
     
                        }
     
                        public function  update(){
     
                              DATABASE::request('UPDATE  fournisseurs SET id_fournisseur=$this->id,nom=$this->nom,addresse=$this->addresse,tel=$this->tel,situation=$this->situation WHERE id_fournisseur ="$id"');
     
                        }
     
                        public function  delete(){
     
                              DATABASE::request('DELETE FROM fournisseurs WHERE id_fournisseur ="$id"');
     
                        }
     
                        public  function getId(){                      
                            return $this->id;
                        }
                        public   function setId($id){                      
                            return $this->id=$id;
                        }
                        public  function getNom(){                      
                            return $this->nom;
                        }
                        public  function setNom($nom){                      
                            return $this->nom=$nom;
                        }
                        public  function getAddresse(){                      
                            return $this->addresse;
                        }
                        public  function setAddresse($addresse){                      
                            return $this->addresse=$addresse;
                        }
                        public  function getTel(){                      
                            return $this->tel;
                        }
                        public  function setTel($tel){                      
                            return $this->tel=$tel;
                        }
                        public  function getSituation(){                      
                            return $this->situation;
                        }
                        public  function setSituation($situation){                      
                            return $this->situation=$situation;
                        }
     
     
               }
    et pour la tester j'ai mis dans l'index :
    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
    <?php
    require('classes/classes.php');
     
     
    ?>
    <!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" lang="fr">
        <head>
            <title>::Quick-Soft v1.0</title>
        </head>
     
        <body>
            <?php
             $f=new FOURNISSEURS;
             $f->load(1);
             $f->getNom();
     
            ?>
     
     
        </body>
     
    </html>
    mais ca m'affiche pas toujours le nom.
    Quelqu'un peut m'aider svp!!!!! (j'espere que j'étais claire)

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Maroc

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

    Informations forums :
    Inscription : Mai 2009
    Messages : 736
    Points : 1 101
    Points
    1 101
    Par défaut
    Essai avec $this->nom=$Data[0]['nom'];

  3. #3
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Maroc

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

    Informations forums :
    Inscription : Mai 2009
    Messages : 736
    Points : 1 101
    Points
    1 101
    Par défaut
    je les testé est ça marche j'ai ajouté echo $f->getNom(); pour qu'il me l'affiche

  4. #4
    Nouveau membre du Club
    Inscrit en
    Août 2010
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 77
    Points : 32
    Points
    32
    Par défaut
    Citation Envoyé par m4riachi Voir le message
    Essai avec $this->nom=$Data[0]['nom'];
    non pas de changement,toujours une page blanche

  5. #5
    Nouveau membre du Club
    Inscrit en
    Août 2010
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 77
    Points : 32
    Points
    32
    Par défaut
    Citation Envoyé par m4riachi Voir le message
    je les testé est ça marche j'ai ajouté echo $f->getNom(); pour qu'il me l'affiche
    comment ça ? j'i mis aussi echo et ça m'afiche rien du tout

  6. #6
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Maroc

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

    Informations forums :
    Inscription : Mai 2009
    Messages : 736
    Points : 1 101
    Points
    1 101
    Par défaut
    Voila ce que j'ai fait et ça marche bien
    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
     
    <?php
    mysql_connect("localhost", "root", "");
    mysql_select_db("test");
     
    class FOURNISSEURS{
     
    private $id;
    private $nom;
    private $addresse;
    private $tel;
    private $situation;
     
    public function __construct(){
     
    $this->id=null;
    $this->nom='';
    $this->addresse='';
    $this->tel=null;
    $this->situation='';
     
    }
     
    public function __destruct(){
     
    }
     
    public function create(){ 
    }
     
    public function load($id){
     
    $sql = "select * from fournisseurs where id_fournisseur='" . $id . "'";
     
    $result = mysql_query($sql);
    $Data = mysql_fetch_assoc($result);
    $this->id = $Data['id_fournisseur'];
    $this->nom=$Data['nom'];
    $this->addresse=$Data['addresse'];
    $this->tel=$Data['tel'];
    $this->situation=$Data['situation'];
    }
    public function getId(){ 
    return $this->id;
    }
    public function setId($id){ 
    return $this->id=$id;
    }
    public function getNom(){ 
    return $this->nom;
    }
    public function setNom($nom){ 
    return $this->nom=$nom;
    }
    public function getAddresse(){ 
    return $this->addresse;
    }
    public function setAddresse($addresse){ 
    return $this->addresse=$addresse;
    }
    public function getTel(){ 
    return $this->tel;
    }
    public function setTel($tel){ 
    return $this->tel=$tel;
    }
    public function getSituation(){ 
    return $this->situation;
    }
    public function setSituation($situation){ 
    return $this->situation=$situation;
    }
     
     
    }
     
    ?>
     
     
    <!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" lang="fr">
    <head>
    <title>::Quick-Soft v1.0</title>
    </head>
     
    <body>
    <?php
    $f=new FOURNISSEURS;
    $f->load(1);
    echo $f->getNom();
     
    ?>
     
     
    </body>
     
    </html>

  7. #7
    Nouveau membre du Club
    Inscrit en
    Août 2010
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 77
    Points : 32
    Points
    32
    Par défaut
    Citation Envoyé par m4riachi Voir le message
    Voila ce que j'ai fait et ça marche bien
    Oui ça fonctionne aussi chez moi,mais question stupide c quoi donc le soui ici pour ma classe database n'est pas reconnu?

  8. #8
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Maroc

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

    Informations forums :
    Inscription : Mai 2009
    Messages : 736
    Points : 1 101
    Points
    1 101
    Par défaut
    Affiche ton code de ta classe DATABASE

  9. #9
    Membre confirmé Avatar de llaffont
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2007
    Messages
    701
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2007
    Messages : 701
    Points : 597
    Points
    597
    Par défaut
    Citation Envoyé par molo1987 Voir le message
    Oui ça fonctionne aussi chez moi,mais question stupide c quoi donc le soui ici pour ma classe database n'est pas reconnu?
    Tu fais appel à la classe database, mais à quel moment tu indiques où la trouver ?


    Citation Envoyé par molo1987
    J'ai fais une page classes.php (Je l'ai appelé dans index) qui appel toutes les autres class : fournisseurs,clients...
    Oky j'avais pas vu...

  10. #10
    Nouveau membre du Club
    Inscrit en
    Août 2010
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 77
    Points : 32
    Points
    32
    Par défaut
    Citation Envoyé par m4riachi Voir le message
    Affiche ton code de ta classe DATABASE
    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
    <?php
     
           class DATABASE {
     
             private $host;
             private $user;
             private $password;
             private $base;
     
     
                   public function __construct(){
     
                        $this->host='localhost';
                        $this->user='momo';
                        $this->password='momo09';
                        $this->base='stock';
                    }
     
                    public function __destruct(){                
     
     
                    }
     
                    public function connect(){                
     
                            mysql_connect($this->host,$this->user,$this->password) or die ('Un probleme est survenue : '.mysql_error());
                            mysql_select_db($this->base);
     
                    }
     
                    public static function request($req){                
     
                            $query=mysql_query($req) or die ('Un probleme est survenue : '.mysql_error());
                            return $query;
     
                    }
           }

  11. #11
    Nouveau membre du Club
    Inscrit en
    Août 2010
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 77
    Points : 32
    Points
    32
    Par défaut
    Citation Envoyé par molo1987 Voir le message
    Oui ça fonctionne aussi chez moi,mais question stupide c quoi donc le soui ici pour ma classe database n'est pas reconnu?
    dans une page classes qui appel tout les classes

  12. #12
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    Oui ça fonctionne aussi chez moi,mais question stupide c quoi donc le soui ici pour ma classe database n'est pas reconnu?
    J'en sais trop rien, mais ça se peu que dans la classe Fournisseur, lors de l'appel à Database::::request() la connexion à la Bdd n'est pas effectuée.
    Théoriquement, il faudrait au moins une connexion de faite avant de faire un request().

    Ou alors, peut être qu'il y aurait un problème de portée, mais normalement non, car c'est l'une des spécificités des fonctions mysql_*, dès qu'on effectue une connexion à MySQL, un lien est conservé en mémoire, ce qui évite de renseigner le lien de cette ressource (le 2ème paramètre de la fonction mysql_query($requete, $link).

    Ceci dit, et pour faire les choses proprement, normalement il faudrait affecter une variable avec la valeur que renvoie la fonction mysql_connect(), c'est une ressource ($link).
    Ensuite, exploiter cette variable dans les fonctions qui attend celle ci en argument (comme mysql_query).
    Voir la doc sur la fonction : mysql_connect()


    Dans la classe Database par exemple :
    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
     
    class Database {
        // Lien de la ressource MySQL
        public static $linkDB;
     
        private static $host;
        private static $user;
        private static $password;
        private static $base;
     
        public function __construct() {
            $this->host = 'localhost';
            $this->user = 'momo';
            $this->password = 'momo09';
            $this->base = 'stock';
        }
     
        public static function connect() {
            self::$linkDB = mysql_connect(self::$host, self::$user, self::$password) or die ('Un probleme est survenue : '.mysql_error());
            $db_selected = mysql_select_db(self::$base, self::$linkDB);
            if (!$db_selected) exit('Impossible de sélectionner la base de données : '.mysql_error());
        }
     
        public static function request($req) {
            // En cas d'appel à cette méthode sans avoir effectuée de connexion
            if (empty(self::$linkDB)) self::connect();
            //
            $res_query = mysql_query($req, self::$linkDB) or die ('Un probleme est survenue : '.mysql_error());
            return $res_query;
        }
    }
    Ce n'est qu'un exemple, de plus pas testé.
    Théoriquement, et avec la vérif dans request() la connexion devrait se faire même si Database n'est pas instancié.
    Cependant, il serait mieux d'instancier cette classe Database d'office, très tôt dans ton code, dans toutes les page avant la moindre requête.

    Question à tout hasard. Est ce que l'affichage des messages d'erreurs de Php est activé (display_errors) ?


    Autre petite question comme ça, pourquoi ne pas utiliser PDO ?

  13. #13
    Nouveau membre du Club
    Inscrit en
    Août 2010
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 77
    Points : 32
    Points
    32
    Par défaut
    Non ça fonctionne pas toujours avec votre code mais normalement pour plus d'explication tout fonctionne normalement la class fournisseurs fonctionne tout seul,database aussi ,le probleme ici c que la class founiseurs n'arrive pas a se connecter sur ma base de données; mais normalement ça doit fonctionner ;j'ai instancier connect
    <?php
    require('Database.class.php');
    require('fournisseurs.class.php');
    $db = new DATABASE();
    $db->connect();
    ?>

    et la fonctionne request déja c static donc tout est bon,mais l'erreur qui cloche c koi?

    jai passé toute la nuit a la recherche d'autre exemple mais aucune resultat positive.

  14. #14
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    le probleme ici c que la class founiseurs n'arrive pas a se connecter sur ma base de données; mais normalement ça doit fonctionner ;
    C'est donc ton code contiendrait une erreur.

    Est ce que tu est certain de visualiser tous les messages de Php ?
    Quitte à aller voir du coté du php_errors.log (faut commencer par là).


    Ensuite, le code que je t'ai mis était là pour que le Database se connecte, mais surtout conserve la même ressource MySQL.
    Je soupçonne en faite que lorsque tu appel Database::request() dans la classe Fournisseur, MySQL ne conserverait pas le lien (la ressource) vers le serveur (Mais j'en suis pas sûr).
    Normalement tu devrais avoir un message d'erreur à cause de ça, c'est ce qui m'étonne d'ailleurs, d'où ma question sur l'affichage des erreurs (que tu n'as pas répondu ).

  15. #15
    Nouveau membre du Club
    Inscrit en
    Août 2010
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 77
    Points : 32
    Points
    32
    Par défaut
    Pour les erreurs j'ai mis tout en 'ON' ,Donc pour l'affichage des erreur c bon,lorsque j'ai mis dans getNom() (fournissurs) un valeur par defaut, ç fonctionné ,aussi dans index lorsque j'ai mis DATABASE:: request() ça fonctionné ,le code que t'a mis j l'ai testé pour database mais navré pas de changement

  16. #16
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    J'étais en train de me dire que l'erreur serait bien plus simple que ça.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <?php
    $f=new FOURNISSEURS;
    $f->load(1);
    $f->getNom();   
    ?>
    Ne manquerait il pas juste un echo au $f->getNom(); par hasard ?

Discussions similaires

  1. Allocation dynamique de classe qui marche pas
    Par Guillaume602 dans le forum C++
    Réponses: 8
    Dernier message: 11/07/2006, 10h55
  2. Erreur composant TImage : "la classe n'existe pas"
    Par jeroe dans le forum Composants VCL
    Réponses: 2
    Dernier message: 05/03/2006, 16h46
  3. Erreur : La classe n'est pas enregistrée
    Par Le Pharaon dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 11/08/2005, 12h04
  4. Erreur : La classe ne gère pas Automation..
    Par Invité dans le forum VBA Access
    Réponses: 1
    Dernier message: 09/09/2004, 10h24
  5. Réponses: 4
    Dernier message: 15/01/2004, 22h53

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