Aller au contenu

Notice: Undefined offset:... Grrr, il est où ?


Sarc

Sujets conseillés

Bonjour à tous,

Le débugage n'est pas ma passion, surtout quand je m'attaque aux "gros" scripts...

J'ai une erreur :

Notice: Undefined offset: 1 in ....  on line 356

Voilà le code aux environs :

	foreach ($matprem AS $cle=>$valeur)
{

 if ($stockmat[$id][$cle] != $entr[$id]->nbmat[$cle])
 {
 $newval = $entr[$id]->nbmat[$cle];
 
 
 if (!isset($stockmat[$id][$cle])) $env = "INSERT INTO stockmat (ident, idmat, nbmat) VALUES ('$id', '$cle', '$newval')";
 else $env = "UPDATE stockmat SET nbmat='$newval' WHERE idmat = '$cle' AND ident='$id'";
 
 envoi_sql($env, 'mise a jour des matieres premieres');
 
 }
}

La ligne 356 est la première accolade, l'erreur doit donc être dans le foreach... Faut savoir que le foreach est lui même dans une boucle while, mais après vérification rapide, le foreach se remet à 0 à chaque fois qu'on l'appelle, donc le problème est pas là... Le pire, c'est que le script semble marcher à cet endroit là donc je comprends pas l'erreur, par contre impossible d'afficher quelque chose à la fin de la boucle while, le script semble s'arrêter là... Bref, je fatigue là !

Une idée du problème ?

Lien vers le commentaire
Partager sur d’autres sites

encadre donc ta boucle foreach par un 'if( is_array($matprem) ) {', ainsi si ta variable $matperm est bien un tableau (multi)dimensionnel, elle s'exécutera...

un début de piste ... pour ce que ca vaut :P

Lien vers le commentaire
Partager sur d’autres sites

... Faut savoir que le foreach est lui même dans une boucle while, mais après vérification rapide, le foreach se remet à 0 à chaque fois qu'on l'appelle, donc le problème est pas là...

As-tu fait un reset($matprem) ? Parce que si tu appelles le foreach plusieurs fois sans cela, le tableau apparaîtra comme vide vu que tu auras lu tous les éléments jusqu'au dernier. Tu auras donc un "undefined offset..."

Le reset(array) permet de remettre les pointeurs au début du tableau. ;)

Dan

Lien vers le commentaire
Partager sur d’autres sites

Bonsoir à vous deux, merci pour vos éléments de réponse ;)

C'est un tableau, qui n'est même pas créé par une requète sql ou quoi, c'est tout bêtement moi qui le crée manuellement dans le script, et il possède toujours 3 éléments...

Dan, c'est ce que j'avais pensé en premier lieu, mais :

Note :  Lorsque foreach démarre, le pointeur interne de fichier est automatiquement ramené au premier élément du tableau. Cela signifie que vous n'aurez pas à faire appel à reset() avant foreach.

Donc, ce n'est pas ça... et je comprends toujours pas pourquoi il y a ce message d'erreur (ce n'est pas une erreur fatale, mais si ça fait ralentir le script ou pire, ne fait pas marcher un truc, c'est déjà trop !)

Merci de vos réponses tout cas ;)

Lien vers le commentaire
Partager sur d’autres sites

Oui mais tu dis que ton foreach est dans une boucle while... donc tu peux y passer plusieurs fois (selon le contenu du while).

Il ne faut pas faire le reset() avant le premier passage, mais après le foreach(). Au moins il te remettra le poiteur à zéro.

Dan

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...