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 :

probleme recuperation des donnees de la classe


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : Indonésie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 47
    Points : 35
    Points
    35
    Par défaut probleme recuperation des donnees de la classe
    Bonjour tout le monde, j'ai un prob. pour afficher les donnees de variable de ma classe à partir d'un autre script.
    Example: J'ai 3 script que j'ai les nommés clsClient.php, fich01 & fich02.
    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
      require_once('clsParent.php');
    ?>
    <head>
    <title>clsClient.php</title>
    </head>
     
    <body>
    <?php
      class Client extends Mother
      {
         /* DECLARATION DES DATA MEMBRES */
         public $prenom;
         public $nom;
     
         /* DECLARATION DES METHODES */
         public function setConstructeur($prenom,$nom)
         {
           $this->prenom = trim(ucfirst(strtolower($prenom)), ' ');
           $this->nom	  = trim(strtoupper(strtolower($nom)), ' ');
          }
     
          /*************************/
          public function getListeClient()
          {
            $requete = "SELECT * FROM tclients";
            $idcon = parent::connex();
            $result	= @mysql_query($requete,$idcon);
     
             if($result)
             {
    	return($result);
             }
             else
             {
    	$message  = 'Requete invalide : ' . mysql_error() . "\n";
    	$message .= 'Requete complete : ' . $requete;
    	die($message);
              }
            }
      }//Fin de Classe
    ?>
    </body>
    </html>
    dans fich1.php
    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
     
    <?php
       require "classes/clsClient.php";
    ?>
    <head>
    <title>fich01.php</title>
    </head>
     
    <body>
    <?php
      //DECLARATION DES OBJETS
      $objClient = new Client();
     
      $resultat = $objClient->getListeClient();
      $tValDB = mysql_fetch_array($resultat);
     
      $objClient->setConstructeur($tValDB[0],$tValDB[1]);
      echo $objClient->prenom." ".$objClient->nom;
    ?>
    <input type="submit" value="Test02" onclick="document.location.href='fich02.php'" />
    </body>
    </html>
    dans fich02.php
    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
     
    <?php
       require "classes/clsClient.php";
    ?>
    <head>
    <title>fich02.php</title>
    </head>
     
    <body>
    <?php
      //DECLARATION DES OBJETS
      $objClient = new Client();
     
      echo $objClient->prenom." ".$objClient->nom;
    ?>
    <input type="submit" value="Test 01" onclick="document.location.href='fich01.php'" />
    </body>
    </html>
    Mon prob. pourquoi je n'arrive pas à afficher les donnees qui se trouve dans les varibles de la classe à partir fich02.php, pourtant j'ai reussi à afficher à partir fich01.php. Auriez-vous aimabilite de resoudre ce probleme? Merci d'avance.

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Bon alors,

    Dans ton fichier classe clsClient, il faut enlever toute balise Html, cela n'a absolument rien à faire là.

    dans tes fichiers fich1.php et fich2.php, tu instancie deux objets différents, ce n'est pas parce que ils portent le même qu'il sont identique.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    //nouvel objet
    $obj = new classe();
    //on met une valeur dans une méthode
    $obj->toto = "Caramel";
    //affiche Caramel
    echo $obj->toto;
     
    //nouvel objet
    $obj = new classe();
     
    echo $obj->toto // n'affiche rien, puisque rien n'est dedans
    C'est identique avec tes deux instanciations d'objet.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : Indonésie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 47
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par MaitrePylos Voir le message
    Bon alors,

    Dans ton fichier classe clsClient, il faut enlever toute balise Html, cela n'a absolument rien à faire là.

    dans tes fichiers fich1.php et fich2.php, tu instancie deux objets différents, ce n'est pas parce que ils portent le même qu'il sont identique.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    //nouvel objet
    $obj = new classe();
    //on met une valeur dans une méthode
    $obj->toto = "Caramel";
    //affiche Caramel
    echo $obj->toto;
     
    //nouvel objet
    $obj = new classe();
     
    echo $obj->toto // n'affiche rien, puisque rien n'est dedans
    C'est identique avec tes deux instanciations d'objet.
    Tout d'abord je vous merci pour votre explication, mais
    je n'arrive pas à comprendre comment recuperer la valeur qui se trouve dans ma classe à partir du fich02.php ? Parce que je ne sais pas comment passer l'objet du fich01.php vers fich02.php. Si vous voulez bien m'aider car je suis novice pour ce langage. Merci

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 36
    Points : 44
    Points
    44
    Par défaut
    Pour passer ton objet d'une page a l'autre il faut que tu le fasses grâce aux sessions.

    Sur ta page 1 tu instancie ta session et sur la page 2 tu la récupère.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : Indonésie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 47
    Points : 35
    Points
    35
    Par défaut La reponse
    Merci beaucoup à tous qui participe à resoudre mon prob. finalement j'ai trouve la solution qui me semble très facile & plus professionel

    Voici comment:
    Tout d'abord j'ai transforme mon objet en chaine grace la fonction et puis je l'envoie par methode GET vers fich02.php.
    Dans fich02.php je le recuper la valeur GET et je le transforme par la fonction .

    Dans fich01.php
    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
     
    <?php
      //DECLARATION DES OBJETS
      $objClient = new Client();
     
      $resultat = $objClient->getListeClient();
      $tValDB = mysql_fetch_array($resultat);
     
     
      $objClient->setConstructeur($tValDB[0],$tValDB[1],$tValDB[2],$tValDB[3],$tValDB[4],$tValDB[5],$tValDB[6],$tValDB[7],$tValDB[8],$tValDB[9],$tValDB[10],$tValDB[11]);
      echo $objClient->prenom." ".$objClient->nom;
     
      $objChar = serialize($objClient);
     
      echo "<br><br><a href='test02.php?obj=".$objChar."'>Verst fich02</a><br>";
    ?>
    dans fich02.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?php
      //DECLARATION DES OBJETS
      $objChar = $_GET['obj'];
     
      $obj = unserialize($objChar);
     
      echo $obj->prenom." ".$obj->nom."<br><br>";
    ?>
    J'ai essaye de l'envoyer objet à partir du fich01.php par SESSION mais je l'ai rencontre un prob. dans le fich02.php, on dirait qu'il ne trouve pas la valeur de l'objet.

    Remarque:
    La fonction serialize ne sauvegarde en aucun cas les fonctions membres d'un objet. Ainsi, lors de l'appel à la fonction unserialize, la classe correspondante doit être déclarée.

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

Discussions similaires

  1. recuperation des donnees snmp sur un autre poste en java
    Par maire106 dans le forum Développement
    Réponses: 4
    Dernier message: 17/04/2011, 13h17
  2. probleme de recuperation des donnees
    Par brahimde dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 22/12/2009, 10h35
  3. [C] Probleme Recuperation des donnee de ressource
    Par abderrahim_05 dans le forum Windows
    Réponses: 1
    Dernier message: 28/01/2008, 09h38
  4. Problème afin de récupérer des données au chargement
    Par LeLapinVengeur dans le forum Struts 1
    Réponses: 10
    Dernier message: 07/12/2006, 08h33
  5. Réponses: 12
    Dernier message: 03/11/2005, 12h26

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