Probleme: foreach in php5

samaoui
Invité n'ayant pas de compte PHPfrance

13 mai 2010, 18:01

j'ai un script qui fait appel a une fonction comme suite (ligne 122):

// ### Extract template bits
foreach($xml->array['template_set']['template_bit'] as $key => $value) {
$bits_array[$value['group_name']['VALUE']][$value['bit_name']['VALUE']] = $value['content']['VALUE']; //
}

cette fonction marche en php5 mais quand j'ai migré sur un autre hebergeur qui n'a pas php4 juste php5 j'ai l'erreur:

Invalid argument supplied for foreach() in /home/public_html/monsite.info/source/Admin-Panel/admin.templatefunctions.php on line 122

aider moi à resoudre ce probleme merci

ViPHP
ViPHP | 5462 Messages

13 mai 2010, 18:07

fais avant le foreach un
var_dump($xml->array['template_set']['template_bit']);

samaoui
Invité n'ayant pas de compte PHPfrance

13 mai 2010, 18:16

Merci pour votre reponse, mais cela m'affiche un: NULL

que dois je faire et merci.

ViPHP
ViPHP | 5462 Messages

13 mai 2010, 18:19

Merci pour votre reponse, mais cela m'affiche un: NULL

que dois je faire et merci.
c'est que c'est pas bon, revoi ta classe je doute que t'es une propriété ou une methode qui s'appelle "array", c'est quoi ton $xml a la base ?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

13 mai 2010, 18:25

Ton problème ne vient pas du foreach mais de la valeur que tu lui passes en paramètre... vérifie que ta variable est bien renseignée :)

De plus, je n'ai pas bien compris en quel version de php tu étais au final, mais je ne suis pas sur que la syntaxe que tu utilises fonctionne en php 4 et je crois qu'il faut décomposer la récupération de ton attribut ($xml->array) et le parcours du tableau (array['template_set']['template_bit']) ... à vérifier :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Invité
Invité n'ayant pas de compte PHPfrance

13 mai 2010, 18:29

mon xml :

<?xml version="1.0" encoding="ISO-8859-1"?>
<template_set>
<template_bit> <bit_name>art_list_divider</bit_name>
<group_name>art_list</group_name>
<content><![CDATA[<!--<div style="padding: 10px;"> </div>--><div class='horizontal_rule'></div>]]></content>
<can_delete>0</can_delete>
....

Merci

Invité
Invité n'ayant pas de compte PHPfrance

13 mai 2010, 18:31

Ton problème ne vient pas du foreach mais de la valeur que tu lui passes en paramètre... vérifie que ta variable est bien renseignée :)

De plus, je n'ai pas bien compris en quel version de php tu étais au final, mais je ne suis pas sur que la syntaxe que tu utilises fonctionne en php 4 et je crois qu'il faut décomposer la récupération de ton attribut ($xml->array) et le parcours du tableau (array['template_set']['template_bit']) ... à vérifier :)
ca marche tres tres bien en php4
c'est juste avec php5 que j'ai eu ce probleme

ViPHP
ViPHP | 5462 Messages

13 mai 2010, 18:37

t'es sur que t'a les mêmes extensions ? affiche les erreurs tu verras bien ou ca cloche

Invité
Invité n'ayant pas de compte PHPfrance

13 mai 2010, 18:47

j'affiche les erreurs et ca ne me donne rien, ce qui fait que tout est bien,

ViPHP
ViPHP | 5462 Messages

13 mai 2010, 18:49

j'affiche les erreurs et ca ne me donne rien, ce qui fait que tout est bien,
ca dépend t'es en quelle mode d'affichage ?

samaoui = invité
Invité n'ayant pas de compte PHPfrance

13 mai 2010, 18:50

samaoui = invité
J'ai oublé de mettre mon pseudo

mode affichage 1440/900px

ViPHP
ViPHP | 5462 Messages

13 mai 2010, 18:53

samaoui = invité
J'ai oublé de mettre mon pseudo

mode affichage 1440/900px
non mais affiche d'erreurs :wink:
http://www.php.net/manual/fr/errorfunc. ... -reporting
met toi en E_ALL | E_STRICT

samaoui
Invité n'ayant pas de compte PHPfrance

13 mai 2010, 19:08

ini_set('display_errors', 1);
ini_set('log_errors', 1);
ini_set('error_log', dirname(__FILE__) . '/error_log.txt');
error_reporting(E_ALL);
error_reporting(E_STRICT);

tjr, aucune erreurs affichées,

j'ai installé en local avec php5 et ca marche, je crois alors que le problème vient d'une extension, mais laquelle je ne sais pas..

ViPHP
ViPHP | 5462 Messages

13 mai 2010, 19:13

c'est
error_reporting(E_ALL | E_STRICT);
sinon quel extension tu utilise pour lire ton xml ?

samaoui
Invité n'ayant pas de compte PHPfrance

13 mai 2010, 19:17

tjr pas d"erreurs,

je parle des extension php