foreach qui bug sans raison... - PHP - Programmation
Marsh Posté le 10-10-2005 à 15:57:50
T'es sur que $_SESSION['item'] contient toujours un tableau?
Marsh Posté le 10-10-2005 à 15:59:38
bah j'ai rien touché... et ça marchait ! il peut arriver que cette variable soit détruite quand j'ouvre une nouvelle feuille de calcul.. justement je suis en train de faire des :
if(!isset($_SESSION['item']))
{
$_SESSION['item']=array();
}
Marsh Posté le 10-10-2005 à 16:07:59
je crois que mon programme est possedé !!! il me faut un exorciste !!!
Marsh Posté le 10-10-2005 à 16:12:50
non mais là ya un blem !!!!
même ça ça marche plus :
Code :
|
Marsh Posté le 10-10-2005 à 16:14:21
Efface tes données de session et reprends au début?
Marsh Posté le 10-10-2005 à 16:15:57
bah ça fait ça sur tous les postes !!!
c'est etrange quand même ! serait il possible que notre hébergeur ait changé des parametres ou autrechose qui pourrait provoquer ce genre d'erreurs ?
Marsh Posté le 10-10-2005 à 16:20:08
Je vois pas comment ça pourrait faire ça d'un seul coup...
Marsh Posté le 10-10-2005 à 16:22:47
t'a vérifié quand même le format de ton "item" ?
le contrôle d'erreur, c'est bien !
if(!isset($_SESSION['item'])) die("pas d'items" );
if(!is_array($_SESSION['item'])) die("item n'est pas un array" );
print_r($_SESSION['item']));
edit : erreur de ma part ..
Marsh Posté le 10-10-2005 à 18:41:36
shakpana a écrit : t'a vérifié quand même le format de ton "item" ? |
j'ai fait ça :
Code :
|
il me retourne ça :
la variable item existe
la variable item est un array
Array ( )
... c quand même bizarre ça ! je comprends pas mon probleme !
Marsh Posté le 10-10-2005 à 18:48:52
bah, donc ton $_SESSION['item'] est tableau vide ...
juste initialisé genre $_SESSION['item'] = array();
forcément avec ça tu vas pas énumérer grand chose
Marsh Posté le 10-10-2005 à 18:49:57
bah oui mais avant ça ne posait pas de probleme !! pour un foreach, si ya rien.. il enumere rien ! mais il provoque pas une erreur à ce que je sache ?
Marsh Posté le 10-10-2005 à 18:51:19
Voilà, un foreach, en présence d'un array vide, va simplement rien faire...
Marsh Posté le 10-10-2005 à 18:51:45
on est d'accord, parce que là ton foreach sur cet exemple te fait une erreur ?
si oui, oui, c'est louche ...
Marsh Posté le 10-10-2005 à 18:52:29
oui j'ai des erreurs sur tous mes foreach depuis cet apres midi alors que tout fonctionnait tres bien encore ce matin !
Warning: Invalid argument supplied for foreach() in /u/clonecop/public_html/php/admin/valid.php on line 373
Marsh Posté le 10-10-2005 à 18:57:24
Balance tout le code de ta page avec le test sur is_array avant pour voir.
Marsh Posté le 10-10-2005 à 18:57:38
Ou mieux, réduit à un truc tout simple qu'on puisse tester.
Marsh Posté le 10-10-2005 à 18:58:28
j'ai plus de 1000 lignes de code là... ça crainx !!!!
Marsh Posté le 10-10-2005 à 19:00:00
$items = array();
foreach($items as $item){
}
et même un truc de base plante ...
whaou - c'est effectivement mystique ...
et ce entre ce matin et cet aprem.
je veux bien être pendu !
Marsh Posté le 10-10-2005 à 19:06:34
Le truc que vient de poster shakpana plante chez toi, freed ?
Marsh Posté le 10-10-2005 à 19:12:14
Et heu ... question con, les erreurs, c'est sur la ligne du foreach ou à l'intérieur du foreach?
Marsh Posté le 10-10-2005 à 19:14:08
non ça ça ne plante pas, en fait j'ai fait des
if(!isset($_SESSION['item']))
{
$_SESSION['item']=array();
}
if(!isset($_SESSION['ref']))
{
$_SESSION['ref']=array();
}
sur tous mes tableaux... car c'est effectivement parceque la variable à été préalablement detruite ou n'a pas été créée...
mais le truc que je comprends pas c'est pourquoi d'un instant à l'autre.. tout s'est mit à deconner.. alors que tout marche comme ça depuis deux mois ?
Marsh Posté le 10-10-2005 à 19:56:38
freed102 a écrit : if(!isset($_SESSION['item'])) |
ha ok, je préfère ça ...
donc c'est "normal" que tu ai des tableaux vides ...
quant à ta question sur le pourquoi ... je crois qu'il nous manque des éléments ...
/me fait une relecture du thread ..
Marsh Posté le 10-10-2005 à 20:01:40
freed102 a écrit : non ça ça ne plante pas, en fait j'ai fait des |
Si tu préfaires : les warnings, c'est sur quelles lignes de codes, la ligne du foreach ou des lignes l'intérieur des foreach?
Marsh Posté le 10-10-2005 à 20:16:47
omega2 a écrit : Si tu préfaires : les warnings, c'est sur quelles lignes de codes, la ligne du foreach ou des lignes l'intérieur des foreach? |
à chaque fois les warnings étaient sur la ligne du foreach et pas à l'interieur
Marsh Posté le 10-10-2005 à 20:43:16
bah oui, à priori ce qu'il devait se passer, tu essayais d'enumerer une variable non-existante $_SESSION['item'], ou en tout cas qui n'était pas du type que tu assumais qu'elle était... d'où l'error-checking (note : s'pratique de temps en temps E_ALL - avec bonne initialisation des variables)... maintenant pourquoi cette var n'est pas initialisée comme elle l'était auparavant...
y'aurais pas eut un changement de comportement des sessions, tes vars de session à part $item sont-elles correctes ?
Marsh Posté le 10-10-2005 à 20:45:17
bah oui toutes les autres variables n'ont pas changé et apparaissent normalement... j'ai eu le même probleme avec une variable normale... (sans session)
Marsh Posté le 10-10-2005 à 20:46:53
Il y a eu quoi comme changement de fichier dans la journée?
Marsh Posté le 10-10-2005 à 20:48:30
bah j'y avais pas touché jusqu'à ce que mes boss en utilisant mon interface me disent "Freed !!! ya plein de messages d'erreur partout sur ton programme !!"
Marsh Posté le 10-10-2005 à 20:52:37
Ben soit quelqu'un y a touché soit quelqu'un à touché aux réglages du php.ini et plus précisément au réglage de l'affichage des erreurs ce qui fait que ce qui était caché est devenu visible.
Y a malheureusement pas de miracle et si ca a touché une autre variable, je suis certain que c'est l'un de ces deux événement qui ont eu lieux.
Marsh Posté le 10-10-2005 à 21:17:47
oui, la bonne nouvelle c'est que à part suivre au pas à pas ton $_SESSION['item'] depuis sa création pour vérifier ce qui lui arrive, je vois pas de soluce miracle ...
Mais ton truc, il a qd même dû fonctionner à un moment, non ?
Parce que là, à priori, $item n'est jamais rempli ...
Marsh Posté le 11-10-2005 à 10:51:19
bah si il fonctionnait tres bien ce programme qui est utilisé depuis juillet tous les jours, bon maintenant remarche normalement depuis que j'ai declaré les variables quand elles n'existent pas... mais c tout de même tres louche ce qu'il s'est passé !c à croire que quelqu'un à touché à mon programme pendant mon absence ! (pourtant je vois pas ce qui aurait pu provoquer tout ça !)
Marsh Posté le 11-10-2005 à 11:00:36
t'es pas passé à un niveau de contrôle d'erreur plus strict dans php?
Marsh Posté le 11-10-2005 à 11:07:03
bah non je pense pas parceque c vraiment la seule erreur qui apparaissait ! enfin bon.. j'ai corrigé le truc, j'espere que ça va pas poser d'autres erreurs sur d'autres pages du site
Marsh Posté le 11-10-2005 à 14:21:36
skeye a écrit : t'es pas passé à un niveau de contrôle d'erreur plus strict dans php? |
+1 . avec php c'est qd même un bon truc à faire + initialisation de vars, vérif. de type + un ptit E_ALL en dev.
et ça évite bien ce genre de mésaventures ...
Marsh Posté le 11-10-2005 à 14:23:01
en dev c'est sur, mais en prod, il vaut mieux éviter de mettre les allertes en E_ALL.
Marsh Posté le 11-10-2005 à 14:23:36
omega2 a écrit : en dev c'est sur, mais en prod, il vaut mieux éviter de mettre les allertes en E_ALL. |
Ah ben ça c'est sûr...
Marsh Posté le 11-10-2005 à 14:29:45
skeye a écrit : Ah ben ça c'est sûr... |
tout le monde aura d'ailleurs noté cette petite phrase de la doc à propos de display_errors, activé par défaut
This is a feature to support your development and should never be used on production systems (e.g. systems connected to the internet). |
Marsh Posté le 10-10-2005 à 15:51:46
alors là je comprends pas... vendredi je pars du taff.. tout marchais tres bien... ce matin mon boss s'est servi de mon interface... tout marchait tres bien.. et là d'un instant à l'autre... il me met des erreurs sur les foreach... alors que j'ai rien touché... comment cela est il possible ?
Warning: Invalid argument supplied for foreach() in /u/clonecop/public_html/php/admin/valid.php on line 487
Warning: Invalid argument supplied for foreach() in /u/clonecop/public_html/php/admin/valid.php on line 504
voici à quoi ressemblent mes foreach
est-ce que quelquechose vous parait louche là dedans ? moi non.. surtout que ça fonctionnait tres bien !
---------------
Freed102