fonction ds un xml qui se trompe

Eléphanteau du PHP | 20 Messages

17 avr. 2008, 18:29

Bonjour,
pour importer mon catalogue sur LEGUIDE, j'utilise un fichier XML.
Je devais ajouter un champs déterminant si mon produit était occasion ou neuf.
Comme je n'ai que deux catégories de produits qui sont des produits d'occasion j'ai créé une fonction qui pour retourné la valeur 1 si d'occasion et 0 si neuf.
Voici le code de la fonction :

Code : Tout sélectionner

//fonction détermine l'état : Occasion/Neuf $Z = $cat_info[$products['categories_id']]['parent']; $Y = array ('25', '27'); function etatprod(){ if ($Y != $Z){ $occase = '0'; }else{ $occase = '1'; } return $occase; }
et le code d'affichage :

Code : Tout sélectionner

echo '<occasion><![CDATA['.etatprod().']]></occasion>'.chr(10);
le problème c'est que ça me retourne 1 pour tous les articles :( et je ne comprend pas pourquoi ....
J'ai pourtant bien vérifier que $cat_info[$products['categories_id']]['parent'] me retournait bien la valeur qui m'était nécessaire à la comparaison mais je reste avec le même problème ...
Ai-je fais une erreur quelque part ???

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

17 avr. 2008, 18:54

Ta fonction se réfère à des variables en dehors de son champs d'action. Voir http://php.net/manual/language.variables.scope.php

Tu peux ajouter des paramètres à ta fonction pour lui passer les valeurs des variables, ou encore utiliser le mot-clé "global", mais cette pratique est très propisce aux erreurs.
function etatprod($Y, $Z) {
    // ...contenu de la fonction...
}

echo '<occasion><![CDATA['.etatprod($Y, $Z).']]></occasion>'.chr(10);
Ce n'est pas un problème lié à XML, je déplace donc vers le forum approprié (Débuter en PHP).

Eléphanteau du PHP | 20 Messages

17 avr. 2008, 19:03

merci vais essayé ça ..

Ajout :

ben voilà .... ça marche pas ça ne change rien.
On dirait que la fonction s'effectue pour le premier produit puis que la valeur trouvé est reportée sur tout les autres produits.
je dit ça parce qu'il m'indique toujours la bonne réponse pour le premier article que je fasse la comparaison $Y = $Z ou $Y != §Z ...

et pourtant si je mets cet demande d'affichage :

Code : Tout sélectionner

echo '<occasion><![CDATA['.$cat_info[$products['categories_id']]['parent'].']]></occasion>'.chr(10);
il m'affiche bien les bonnes valeurs pour chaque produit ... d'ou mon choix de point de comparaison.

Une autre idée ???

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

18 avr. 2008, 16:02

Est-ce que tu as lu le manuel ? Il ne me semble pas, ou alors tu n'as pas encore assimilé comment fonctionnent les fonctions. Mon conseil, ouvre le premier chapitre et lis tout à partir de là : http://php.net/manual/langref.php
function test($a, $b)
{
    echo '$a = ', $a, ' et $b = ', $b;
}

$x = 'x';
$y = 'y';
test($x, $y);