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] Probleme avec $_GET


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 17
    Par défaut [POO] Probleme avec $_GET
    Bonjour à tous.
    J'ai un petit soucis.
    J'aimerai faire un $_GET mais pas avec une chaine de caractere comme d'habitude mais avec une variable car la chaine de caractere change dans une boucle (parcourt d'un fichier).
    Mais il m'affiche une erreur

    Mon code
    //parcour d'un fichier xml et constrction d'un tableau en fonction du fichier
    $formulaire = simplexml_load_file('checkbox.xml');
    foreach ($formulaire->moyen as $moyen)
    {

    $nom=$moyen->name;
    $valeur=$moyen->value;
    $comportement=$moyen->comportement;
    if(isset($_GET[$nom]))<------------ Probleme Ici
    {
    $tab[]=array($nom,$valeur,$comportement);
    $i=$i+1;
    }
    }


    Code erreur
    Warning: Illegal offset type in isset or empty in d:\DONNEES\X2000521\mes documents\prog\0.8\visual.php on line 22




    Merci d'avance
    Cordialement Corwen

  2. #2
    Membre éclairé Avatar de hisy
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    377
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 377
    Par défaut
    Le pb n'est pas de faire un $_GET[$var] , le probleme c'est que si ta var est vide tu fais un isset($_GET[]) ...

    C'est ce qui te génère cette erreur ...

  3. #3
    Membre averti
    Inscrit en
    Janvier 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 17
    Par défaut
    La variable est affecté.
    J'ai tester un echo sur $nom et il me retourne la chaine de caractere que je souhaite

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2005
    Messages : 774
    Par défaut
    Citation Envoyé par Corwen
    La variable est affecté.
    J'ai tester un echo sur $nom et il me retourne la chaine de caractere que je souhaite
    quel genre d'erreur est afficher?

  5. #5
    Membre averti
    Inscrit en
    Janvier 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 17
    Par défaut
    Warning: Illegal offset type in isset or empty in d:\DONNEES\X2000521\mes documents\prog\0.8\visual.php on line 22

  6. #6
    Membre averti
    Inscrit en
    Janvier 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 17
    Par défaut
    up

  7. #7
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 325
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 325
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par Corwen
    La variable est affecté.
    J'ai tester un echo sur $nom et il me retourne la chaine de caractere que je souhaite
    Y'a du __toString( ) dans l'air...
    $moyen->name et $nom sont des objets non ?
    Si tu fais echo $nom la méthode magique __toString( ) est appelée et affiche le contenu de l'objet, tu as l'impression d'avoir affaire à une chaîne alors que non. Par contre __toString( ) n'est pas appelée dans le $_GET => Erreur car les clés de tableau ne peuvent être que des scalaires. Là c'est comme si tu faisais $_GET[new MyObject(...)], ce qui est incorrect en PHP.

    Ceci devrait fonctionner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_GET[$nom->__toString( )]

  8. #8
    Membre averti
    Inscrit en
    Janvier 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 17
    Par défaut
    $nom=$moyen->name;
    echo $nom;
    $valeur=$moyen->value;
    $comportement=$moyen->comportement;
    if(isset($nom->_toString()))


    erreur
    Fatal error: Can't use method return value in write context in d:\DONNEES\X2000521\mes documents\prog\0.8\visual.php on line 23

  9. #9
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 325
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 325
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par Corwen
    if(isset($nom->_toString()))
    Faut que tu m'expliques ce que t'as essayé de faire là
    De plus c'est __toString( ) et non _toString( )

    Plus d'infos sur les méthodes magiques : http://www.php.net/oop5.magic

  10. #10
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 325
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 325
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par Corwen
    Fatal error: Can't use method return value in write context in d:\DONNEES\X2000521\mes documents\prog\0.8\visual.php on line 23
    En tout cas c'est toujours marrant de découvrir des messages d'erreur inhabituels

  11. #11
    Membre averti
    Inscrit en
    Janvier 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 17
    Par défaut
    Ravi de te servir mais meme avec les deux underscore c pareil

  12. #12
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 325
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 325
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par Corwen
    Ravi de te servir mais meme avec les deux underscore c pareil
    Donne-nous ton code qu'on voit où tu en es.

  13. #13
    Membre averti
    Inscrit en
    Janvier 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 17
    Par défaut
    <?
    // Declaration du tableau contenant les informations utiles à la creation de la requete
    $tab=array();

    // declaration de la variable servant à definir le nombre de valeurs dans le tableau
    $i=0;

    //recuperation de la date saisie (ou non)
    $date=$_GET['date'];

    // recuperation des informations saisies dans la page suivante en fonction du fichier de configuration xml
    $formulaire = simplexml_load_file('checkbox.xml');
    foreach ($formulaire->moyen as $moyen)
    {

    $nom=$moyen->name;
    echo $nom;
    $valeur=$moyen->value;
    $comportement=$moyen->comportement;
    if(isset($nom->__toString()))
    {
    $tab[]=array($nom,$valeur,$comportement);
    $i=$i+1;
    }
    }

  14. #14
    Membre émérite Avatar de Yobs
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    675
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2004
    Messages : 675
    Par défaut
    c'est normal tu dois faire isset($_GET[$nom->_toString))... car isset($nom->_toString) ne peut produire qu'une erreur puisque une variable est attendue par isset non une chaine de caractère

  15. #15
    Membre averti
    Inscrit en
    Janvier 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 17
    Par défaut
    Oups désolé j'ai mal taper mon code.
    Je vais modifier pour testern je te dis apres

  16. #16
    Membre averti
    Inscrit en
    Janvier 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 17
    Par défaut
    if(isset($_GET[$nom->__toString()]))

    Fatal error: Call to undefined method SimpleXMLElement::__toString() in d:\DONNEES\X2000521\mes documents\prog\0.8\visual.php on line 23

    if(isset($_GET[$nom->_toString()]))

    Fatal error: Call to undefined method SimpleXMLElement::_toString() in d:\DONNEES\X2000521\mes documents\prog\0.8\visual.php on line 23

  17. #17
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 109
    Par défaut
    __toString est une methode de Classe.

    ici il n'est pas question de classe mais de travail sur un tableau:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    //parcour d'un fichier xml et constrction d'un tableau en fonction du fichier 
    $formulaire = simplexml_load_file('checkbox.xml'); 
    foreach ($formulaire->moyen as $moyen) 
    ..
    .
    Ca peut pas marcher.

  18. #18
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 109
    Par défaut
    Il faut essayer avec la fonction eval()
    Voir la doc ici:
    http://<br /> http://fr3.php.net/ma...eval.php<br />

    EDIT : mauvaise idee... A ne pas suivre.

  19. #19
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 325
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 325
    Billets dans le blog
    17
    Par défaut
    __toString( ) est une méthode oui, et $nom est un objet de classe SimpleXMLElement, il me semblait que cette classe implémentait __toString( ).
    Bon, fait :


  20. #20
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 109
    Par défaut
    Citation Envoyé par Séb.
    __toString( ) est une méthode oui, et $nom est un objet de classe SimpleXMLElement, il me semblait que cette classe implémentait __toString( ).
    Bon, fait :

    Oui tu as raison ... desole.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [POO] Problème avec une variable static
    Par grimsk dans le forum Langage
    Réponses: 5
    Dernier message: 23/05/2006, 01h58
  2. [POO] Problème avec les classes
    Par peypey dans le forum Langage
    Réponses: 8
    Dernier message: 03/05/2006, 15h05
  3. Réponses: 2
    Dernier message: 28/03/2006, 03h36
  4. [POO] Probleme avec static et autoload
    Par laetyboop dans le forum Langage
    Réponses: 1
    Dernier message: 23/03/2006, 14h46
  5. [POO] Probleme avec $this
    Par cubepiege dans le forum Langage
    Réponses: 5
    Dernier message: 01/03/2006, 15h39

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