Récuperation de donnée dans un tableau

Petit nouveau ! | 5 Messages

12 mai 2008, 08:46

j'ai noté dans le fichier categories1_css.php print r devant ($cat...), soit la ligne 98 qui a le problème, c'est la deuxième partie avec foreach de ce fichier qui a le problème. ça n'a rien fait, je pense que je ne sais pas utiliser une fonction.
Voici de la ligne 92 à 99 :
foreach($categories_start1 as $key => $value) {
if(strstr($key, '_' . $parentID . '_E')) {
$cat_subs1[$parentID][] = substr($key, 2, strpos($key, "_", 2) - 2);
}
}

foreach ($cat_subs1[$parentID] as $key => $value) {
$categories = $categories_start1['S_' . $v . '_' . $parentID . '_E'];
Valsteken

d0m
Mammouth du PHP | 1141 Messages

12 mai 2008, 18:28

l'opérateur foreach s'applique sur un tableau de données. Si le message d'erreur
Invalid argument supplied for foreach()
apparait c'est que ta variable dans le foreach n'est pas un tableau.

Par déduction, l'erreur vient du fait que la variable $cat_subs1[$parentID] n'est pas un tableau.

Voyons alors comment tu construis ta variable $cat_subs1[$parentID].

Apparement c'est dans les lignes 92-94 que cela se passe.

voilà la boucle :
foreach($categories_start1 as $key => $value) { 
if(strstr($key, '_' . $parentID . '_E')) { 
$cat_subs1[$parentID][] = substr($key, 2, strpos($key, "_", 2) - 2); 
}
Tu mets donc un élement dans le tableau $cat_subs1[$parentID] tout en le construisant implicitement à 2 conditions :
1. que tu rentres dans la boucle foreach ligne 92
2. que la condition de la ligne 93 est vérifiée.

Il se peut donc si par exemple $categories_start1 est un tableau vide ou que strstr($key, '_' . $parentID . '_E') est faux que tu ne met jamais d'élément dans le tableau $cat_subs1[$parentID] par la ligne 94 et donc que celui ci n'est jamais créé.

Pour remédier à cela, pense à créer explicitement ton tableau vide au départ avant de vouloir y mettre des éléments :
//créer le tableau vide au départ
$cat_subs1[$parentID] = array();
//remplir le tableau
foreach($categories_start1 as $key => $value) { 
if(strstr($key, '_' . $parentID . '_E')) { 
$cat_subs1[$parentID][] = substr($key, 2, strpos($key, "_", 2) - 2); 
}

Petit nouveau ! | 5 Messages

12 mai 2008, 18:44

est-ce que ça veut dire que j'ai perdu mes catégories et mes produits, où bien c'est juste un bug, et je vais pouvoir tout reprendre ? Lorsque ça s'est passé, je faisait ça :
"J’ai modifié et supprimé certaines catégories
J’ai déplacé des articles/produits d’une catégorie à l’autre, jusqu’à certainement la mauvaise manipulation qui m’a donné cette erreur :
Vous pouvez voir les différents messages en vous connectant sur www.ventevin.com
Depuis, dans l’admin, je n’ai plus rien dans le catalogue."
qu'en pensez-vous ?
merci
Valsteken