Page 1 sur 1

Fatal error avec les stdClass

Posté : 29 oct. 2008, 20:12
par Crak
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:
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

Posté : 29 oct. 2008, 20:44
par Calimero
Bonjour,

Cette erreur signifie que tu as essayé d'utiliser un objet comme si c'était un tableau.

Autrement dit soit :
$att
soit :
$att[$k]->parameters
sont en réalité des objets et dans ce cas, tu ne peux pas accoler un [] (accesseur de tableau) derrière.

Tu peux savoir qui est quoi avec l'instruction var_dump() avant la ligne, comme ceci :
var_dump($att);
var_dump($att[$k]->parameters);

Posté : 29 oct. 2008, 22:14
par Invité
Bonsoir Calimero,

Merci pour ton aide et ta réponse rapide,

Malheureusement je n'ai pas réussi à utiliser la fonction var_dump que tu me présentait dans ta précédente réponse.

Je place ici le code de la fonction, peut être que quelqu'un pourra m'aider:
$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++) {
La ligne 111 objet de l'erreur:
						
if ($att[$k]->parameters[0]->value == "us-ascii" || $att[$k]->parameters[0]->value == "US-ASCII") {
							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);
Quelqu'un aurait t'il une idée ou une éventuelle solution pour résoudre cette erreur ?

Merci d'avance à tous

Crak