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] Comment est-ce que je pourrais extraire mes données ? :(


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 240
    Points : 104
    Points
    104
    Par défaut [POO] Comment est-ce que je pourrais extraire mes données ? :(
    Bonjour,

    J'ai des données qui ressortent d'une variable (Object id #22) objet sous cette forme là, comme est-ce que je pourrais récupérer les nombreuses valeurs :/

    Est-ce la méthode des tableau ou est-ce qu'il existe quelques chose de propre à l'object ?

    Auriez-vous une idée ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    	O:4:"ville":16:{s:14:"vlle_session";
    O:7:"session":5:{s:17:"session_ville";
    s:4:"ville";
    s:20:"session_user_agent";
    s:74:"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)";
    s:17:"session_ip";
    s:13:"192.68.12.194";
    s:14:"session_time";i:1154285430;
    s:17:"session_chktime";b:0;
    }s:15:"ville_pdc";a:1:{i:1;O:6:"
    object":1:{s:19:
    D'avance merci
    @+
    M.

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    D'où vient cet objet ? Quelle est la classe ?

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 240
    Points : 104
    Points
    104
    Par défaut
    Citation Envoyé par vg33
    D'où vient cet objet ? Quelle est la classe ?
    Bonjour,

    c'est une variable extraite d'une base de donnée sous une forme codé...
    '$ville' renvoie: Object id#22... $recville-> ville étant la valeur récupérer de la base de donnée...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ville= unserialize(base64_decode($recville->ville));
    D'avance merci
    @++

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    En fait, tu as sérializé un objet avant de l'insérer en base de donnée. Il faut donc connaitre la classe qui a permis de générer cet objet avant stockage, et voir s'il existe des accesseurs.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 240
    Points : 104
    Points
    104
    Par défaut
    Je suis entrain de remonter la chaine....
    Les commandes sont stockés dans $product, un objet est apellé et il semble qu'il remplisse un tableau par la suite...

    cdata est ensuite récupéré sur une autre page et la valeur seras stocké dans la base...


    Code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    cart::display_product_buyform($product);
    $data = new object('data', 'type');
    $data->type = 'buyform';
    $data->data = $product;
     
    (...)
     
    <input type="hidden" name="cdata" value="<?php echo base64_encode(serialize($data)); ?>" />

    Class :


    Code :

    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
    class object {
     
            private $_attributes = array();
     
            function __construct() {
                    $args = func_get_args();
     
                    foreach($args as $arg) {
                            if (is_string($arg)) {
                                    $this->_attributes[$arg] = null;
                            }
                            if (is_array($arg)) {
                                    foreach($arg as $a) {
                                            if (is_string($a)) {
                                                    $this->_attributes[$a] = null;
                                            }
                                    }
                            }
                    }
            }

    Ma question reste "intact" comment est-ce que je peux récupérer mes données ? :/

    D'avance merci
    @++
    M.

  6. #6
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Avec cette classe précise tu ne peux pas, le tableau des arguments est défini en private donc tu n'y as pas accès en dehors de l'instance de la classe, et tu n'as aucune méthode pour y accéder.

    Il faut donc créer une méthode qui va te renvoyer tes valeurs depuis la classe (une nouvelle méthode de la classe donc). Peux-tu la modifier?

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 240
    Points : 104
    Points
    104
    Par défaut
    Citation Envoyé par koopajah
    Avec cette classe précise tu ne peux pas, le tableau des arguments est défini en private donc tu n'y as pas accès en dehors de l'instance de la classe, et tu n'as aucune méthode pour y accéder.

    Il faut donc créer une méthode qui va te renvoyer tes valeurs depuis la classe (une nouvelle méthode de la classe donc). Peux-tu la modifier?

    J'ai essayer d'utiliser : $return_str = get_object_vars($obj);
    J'ai quelques chose mais j'ai l'impression de récupérer qu'une partie des valeur en faites...

    Je suis pas convaincu que ça "fonctionne" ! :/


    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
    (
        [user_lang] => fr
        [user_civil] => Mr
        [user_surname] => devellopez
        [user_firstname] => forum
        [user_email] => forum@devellopez.com
        [user_phone] => xxxxxxxxx
        [user_street] => 4 allée des champs
        [user_zipcode] => 75000
        [user_town] => Paris
        [user_country] => FR
        [user_ncountry] => France
        [user_comments] => 
        [user_mdpay] => 
        [price_parts] => object Object
            (
                [_attributes:private] => Array
                    (
                        [auto] => 340
                        [manual] => 0
                    )
     
            )
     
    )

    Pour ce qui est de créer une méthode je vais voir si je peux le faire, en rajouter une dans la classe en question...

    Je vous tiens au courant !
    D'avancer merci
    @++
    M.

  8. #8
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Citation Envoyé par koopajah
    Avec cette classe précise tu ne peux pas, le tableau des arguments est défini en private donc tu n'y as pas accès en dehors de l'instance de la classe, et tu n'as aucune méthode pour y accéder.

    Il faut donc créer une méthode qui va te renvoyer tes valeurs depuis la classe (une nouvelle méthode de la classe donc). Peux-tu la modifier?
    +1
    Il faudrait que tu puisses rajouter un code de ce style à la classe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public function getAttributes($attribute) {
        if (isset($this->_attributes[$attribute])) { 
            return $this->_attributes[$attribute];
        }
        return false;
    }

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 240
    Points : 104
    Points
    104
    Par défaut
    Citation Envoyé par vg33
    +1
    Il faudrait que tu puisses rajouter un code de ce style à la classe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public function getAttributes($attribute) {
        return $this->_attributes[$attribute];
    }
    Je regarde ça merci

  10. #10
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Attention : j'ai édité mon code pour tester l'existence de l'attribut.

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 240
    Points : 104
    Points
    104
    Par défaut
    Citation Envoyé par vg33
    Attention : j'ai édité mon code pour tester l'existence de l'attribut.

    Merci l'attribut juste pour confirmation, en l'occurence c'est le nom de la clé du tabeau (comme par exemple user_lang,...) ?

    @++

  12. #12
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Citation Envoyé par Cvbdev
    Merci l'attribut juste pour confirmation, en l'occurence c'est le nom de la clé du tabeau (comme par exemple user_lang,...) ?

    @++
    Oui.

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 240
    Points : 104
    Points
    104
    Par défaut
    lol merci pour votre aide, je mets tout ça en application....
    il semble encore une fois me renvoyer ceci : Object id #23 et non la valeur !

    j'ai utilisé la fonction que tu m'as donné et une seconde, les deux renvoies des résultats identiques....mais pas la valeur :/ y a quelques chose à rajouter car trés sincèrement je vois pas trop de truc !



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $attr = new object();
    $attr-> getAttributes('session_time');
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public function getAttributes($attribute) {
        if (isset($this->_attributes[$attribute])) { 
            return $this->_attributes[$attribute];
        }
        return false;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public function has_attribute($attr) {
    		return in_array($attr, array_keys($this->_attributes));
    	}

    Dsl pr tt ces questions
    D'avance merci
    @++

  14. #14
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Il faut que tu déclares les attributs dans l'instanciation de la classe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $attr = new object('session_time');
    $attr-> getAttributes('session_time');
    Mais ta classe doit bien comporter un setteur (du style setAttributes()), non ? Sinon, je ne vois pas comment tu pourrais modifier les attributs qui sont déclarés en private !

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 240
    Points : 104
    Points
    104
    Par défaut
    Citation Envoyé par vg33
    Il faut que tu déclares les attributs dans l'instanciation de la classe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $attr = new object('session_time');
    $attr-> getAttributes('session_time');
    Mais ta classe doit bien comporter un setteur (du style setAttributes()), non ? Sinon, je ne vois pas comment tu pourrais modifier les attributs qui sont déclarés en private !
    Oui elle comprends cela... une méthode qui permet de rajouter des attributs et une constructeur

    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
    public function new_attribute($attr, $value=null) {
    		if (!array_key_exists($attr, $this->_attributes))
    			$this->_attributes[$attr] = $value;
    	}
     
     
    	function __construct() {
    		$args = func_get_args();
     
    		foreach($args as $arg) {
    			if (is_string($arg)) {
    				$this->_attributes[$arg] = null;
    			}
    			if (is_array($arg)) {
    				foreach($arg as $a) {
    					if (is_string($a)) {
    						$this->_attributes[$a] = null;
    					}
    				}
    			}
    		}
    	}

  16. #16
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Dans ce cas-là, ce code devrait fonctionner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $attr = new object();
    $attr->new_attribute('session_time', timestamp());
    $attr-> getAttributes('session_time');

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 27/04/2013, 18h02
  2. Comment est-ce que vous voyez mon Web personnel?
    Par sam_s dans le forum Mon site
    Réponses: 2
    Dernier message: 29/08/2010, 19h39
  3. Try, catch, comment est ce que la machine virtuelle gerre ca ?
    Par Djobird dans le forum Général Java
    Réponses: 7
    Dernier message: 11/06/2009, 12h07
  4. Réponses: 12
    Dernier message: 11/02/2009, 14h15
  5. Réponses: 2
    Dernier message: 13/10/2007, 01h55

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