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 :

Fatal error avec les stdClass


Sujet :

Langage PHP

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Fatal error avec les stdClass
    Bonjour à tous,

    Je cherche à adapter un script qui permettrait d'importer les mails dans une base mysql, je suis tombé à mon grand désespoir sur une erreur aujourd'hui:

    Fatal error: Cannot use object of type stdClass as array in > /home/XXX/mailtosys/PHPmail2system.php on line 111*


    La fameuse ligne 111:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ($att[$k]->parameters[0]->value == "us-ascii" || $att[$k]->parameters[0]->value == "US-ASCII") {


    D'ou provient cette erreur ? est-ce une différence entre php4 et php5 comme j'ai pu le lire ?

    Merci de votre aide pour m'aider à débloquer ce script...

    Crak

  2. #2
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Bonjour,

    cette erreur viens probablement de $att ou $att[$k]->parameters, l'un des deux éléments n'étant pas un tableau mais un objet.

    Pour en dire plus, il faudrait voir comment ils sont définis...

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Bonsoir Eusebe,

    Merci pour ta réponse, mais cela reste encore un peu de chinois pour moi...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $struct = imap_fetchstructure($mbox,$msgno);
    $contentParts = count($struct->parts);
     
    if ($contentParts >= 2) {
    $filecounter = 0;
    for ($i=2;$i<=$contentParts;$i++) {
    $att[$i-2] = imap_bodystruct($mbox,$msgno,$i);
    }
     
    for ($k=0;$k<sizeof($att);$k++) {
    Voici la ligne 111 qui pose problème
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ($att[$k]->parameters[0]->value == "us-ascii" || $att[$k]->parameters[0]->value == "US-ASCII") {
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if ($att[$k]->parameters[1]->value != "") {
     
    $strFileName = $att[$k]->parameters[0]->value;							
    $fileSize = $att[$k]->bytes;							
    $strFileType = strrev(substr(strrev($strFileName),0,4));						
    $fileContent = imap_fetchbody($mbox,$msgno,$k+2);
    Aurait tu plus de visibilité ?

    Merci pour ton aide

    Crak

  4. #4
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Bizarre, la fonction imap_bodystruct renvoie un objet dont l'attribut parameters devrait bien être un tableau...

    peux tu ajouter avant la deuxième boucle for l'instruction suivante pour débugguer (affiche ce qu'est $att[0]->parameters) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<pre>'; var_dump($att[0]->parameters); echo '</pre>';
    En passant, cette boucle for qui permet de parcourir ton tableau $att pourrait être ermplacée par une boucle foreach.

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    En modifiant le code comme tu me la suggéré:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
      for ($i=2;$i<=$contentParts;$i++) {
                                                    $att[$i-2] = imap_bodystruct($mbox,$msgno,$i);
                                            }
                                            echo '<pre>'; var_dump($att[0]->parameters); echo '</pre>';
                                            for ($k=0;$k<sizeof($att);$k++) {
                                                    if ($att[$k]->parameters[0]->value == "us-ascii" || $att[$k]->parameters[0]->value == "US-ASCII") {
                                                            if ($att[$k]->parameters[1]->value != "") {
    J'obtiens le message suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <pre>object(stdClass)#21 (0) {
    }
    </pre>
    Fatal error: Cannot use object of type stdClass as array in /home/sebastien/mailtosys/PHPmail2system.php on line 112
    Que signifie ce message ?

    Crak

Discussions similaires

  1. fatal error avec la fonction eval()
    Par ren84 dans le forum Langage
    Réponses: 5
    Dernier message: 25/04/2013, 10h31
  2. Fatal error avec XMLReader et Dom
    Par Zikas-r dans le forum Langage
    Réponses: 2
    Dernier message: 27/02/2009, 10h44
  3. Réponses: 1
    Dernier message: 19/08/2006, 06h03
  4. BIRT 2.0 Out of memory error avec les graphiques
    Par tiboudchou dans le forum BIRT
    Réponses: 17
    Dernier message: 11/08/2006, 15h04
  5. fatal link error avec visual studio 2003
    Par zephe dans le forum MFC
    Réponses: 5
    Dernier message: 26/07/2006, 18h49

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