Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1464 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  foreach qui bug sans raison...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

foreach qui bug sans raison...

n°1219650
freed102
Arayashiki
Posté le 10-10-2005 à 15:51:46  profilanswer
 

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 ?
 

Citation :


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
 

Code :
  1. foreach($_SESSION['item'] as $key=>$value)
  2. {
  3. $_SESSION['item'][$key]['id']=$key;
  4. $_SESSION['item'][$key]['libelle']=ucfirst(htmlentities($_POST["libelle$key"]));
  5. $_SESSION['item'][$key]['quantites']=$_POST["quantites$key"];
  6. $_SESSION['item'][$key]['prix_unitaire']=$_POST["prix_unitaire$key"];
  7. $_SESSION['item'][$key]['total_ht_item']=money_format('%.2n',$_SESSION['item'][$key]['prix_unitaire']*$_SESSION['item'][$key]['quantites']);
  8. $_SESSION['total_ht']=money_format('%.2n',$_SESSION['total_ht']+$_SESSION['item'][$key]['total_ht_item']);
  9. }


 
est-ce que quelquechose vous parait louche là dedans ? moi non.. surtout que ça fonctionnait tres bien !


---------------
Freed102
mood
Publicité
Posté le 10-10-2005 à 15:51:46  profilanswer
 

n°1219655
omega2
Posté le 10-10-2005 à 15:57:50  profilanswer
 

T'es sur que $_SESSION['item'] contient toujours un tableau?

n°1219659
freed102
Arayashiki
Posté le 10-10-2005 à 15:59:38  profilanswer
 

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();
}


---------------
Freed102
n°1219665
freed102
Arayashiki
Posté le 10-10-2005 à 16:07:59  profilanswer
 

je crois que mon programme est possedé !!! il me faut un exorciste !!!


---------------
Freed102
n°1219668
freed102
Arayashiki
Posté le 10-10-2005 à 16:12:50  profilanswer
 

non mais là ya un blem !!!!
 
même ça ça marche plus :
 

Code :
  1. foreach($item2suppr as $key)
  2. {
  3. $val=$key;
  4.  unset($GLOBALS['_SESSION']['item'][$val]);
  5.  if(!isset($_SESSION['item'][$val]))
  6.  {
  7.  $_SESSION['infos'].="L'élement $val est bien effacé<br />";
  8.  }
  9.  else
  10.  {
  11.  $_SESSION['infos'].="Impossible d'effacer l'élement $val<br />";
  12.  }
  13. }


---------------
Freed102
n°1219670
skeye
Posté le 10-10-2005 à 16:14:21  profilanswer
 

Efface tes données de session et reprends au début?


---------------
Can't buy what I want because it's free -
n°1219673
freed102
Arayashiki
Posté le 10-10-2005 à 16:15:57  profilanswer
 

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 ?


---------------
Freed102
n°1219678
skeye
Posté le 10-10-2005 à 16:20:08  profilanswer
 

Je vois pas comment ça pourrait faire ça d'un seul coup...[:urd]


---------------
Can't buy what I want because it's free -
n°1219681
shakpana
des fois, j'me demande ...
Posté le 10-10-2005 à 16:22:47  profilanswer
 

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 ..

Message cité 1 fois
Message édité par shakpana le 10-10-2005 à 16:24:23
n°1219827
freed102
Arayashiki
Posté le 10-10-2005 à 18:41:36  profilanswer
 

shakpana a écrit :

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']));
 
et ça
> unset($GLOBALS['_SESSION']['item'][$val]);
ça fait quelque chose (qui concerne $_SESSION) ?


 
 
j'ai fait ça :
 
 

Code :
  1. <?php
  2.    if(!isset($_SESSION['item']))
  3.    {
  4.    echo "la variable item n'existe pas<br />";
  5.     }
  6.     else
  7.     {
  8.     echo "la variable item existe<br />";
  9.     }
  10.   if(!is_array($_SESSION['item']))
  11.   {
  12.   echo "la variable item n'est pas un array<br />";
  13.   }
  14.   else
  15.   {
  16.   echo "la variable item est un array<br />";
  17.   }
  18.   print_r($_SESSION['item']);
  19.    ?>


 
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 !


Message édité par freed102 le 10-10-2005 à 18:46:35

---------------
Freed102
mood
Publicité
Posté le 10-10-2005 à 18:41:36  profilanswer
 

n°1219833
shakpana
des fois, j'me demande ...
Posté le 10-10-2005 à 18:48:52  profilanswer
 

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  :D

n°1219834
freed102
Arayashiki
Posté le 10-10-2005 à 18:49:57  profilanswer
 

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 ?


---------------
Freed102
n°1219835
FlorentG
Posté le 10-10-2005 à 18:51:19  profilanswer
 

Voilà, un foreach, en présence d'un array vide, va simplement rien faire...

n°1219837
shakpana
des fois, j'me demande ...
Posté le 10-10-2005 à 18:51:45  profilanswer
 

on est d'accord, parce que là ton foreach sur cet exemple te fait une erreur ?
si oui, oui, c'est louche ...


Message édité par shakpana le 10-10-2005 à 18:52:04
n°1219838
freed102
Arayashiki
Posté le 10-10-2005 à 18:52:29  profilanswer
 

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


---------------
Freed102
n°1219847
sielfried
Posté le 10-10-2005 à 18:57:24  profilanswer
 

Balance tout le code de ta page avec le test sur is_array avant pour voir.

n°1219848
sielfried
Posté le 10-10-2005 à 18:57:38  profilanswer
 

Ou mieux, réduit à un truc tout simple qu'on puisse tester.

n°1219849
freed102
Arayashiki
Posté le 10-10-2005 à 18:58:28  profilanswer
 

j'ai plus de 1000 lignes de code là... ça crainx !!!!


---------------
Freed102
n°1219850
shakpana
des fois, j'me demande ...
Posté le 10-10-2005 à 19:00:00  profilanswer
 

$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 !

n°1219854
sielfried
Posté le 10-10-2005 à 19:06:34  profilanswer
 

Le truc que vient de poster shakpana plante chez toi, freed ?

n°1219858
omega2
Posté le 10-10-2005 à 19:12:14  profilanswer
 

Et heu ... question con, les erreurs, c'est sur la ligne du foreach ou à l'intérieur du foreach?

n°1219860
freed102
Arayashiki
Posté le 10-10-2005 à 19:14:08  profilanswer
 

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 ?


---------------
Freed102
n°1219877
shakpana
des fois, j'me demande ...
Posté le 10-10-2005 à 19:56:38  profilanswer
 

freed102 a écrit :

if(!isset($_SESSION['item']))
{
$_SESSION['item']=array();
}
if(!isset($_SESSION['ref']))
{
$_SESSION['ref']=array();
}


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 ..

n°1219883
omega2
Posté le 10-10-2005 à 20:01:40  profilanswer
 

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?

n°1219895
freed102
Arayashiki
Posté le 10-10-2005 à 20:16:47  profilanswer
 

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

n°1219912
shakpana
des fois, j'me demande ...
Posté le 10-10-2005 à 20:43:16  profilanswer
 

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 ?

n°1219915
freed102
Arayashiki
Posté le 10-10-2005 à 20:45:17  profilanswer
 

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)

n°1219919
omega2
Posté le 10-10-2005 à 20:46:53  profilanswer
 

Il y a eu quoi comme changement de fichier dans la journée?

n°1219921
freed102
Arayashiki
Posté le 10-10-2005 à 20:48:30  profilanswer
 

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 !!"

n°1219925
omega2
Posté le 10-10-2005 à 20:52:37  profilanswer
 

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.

n°1219941
shakpana
des fois, j'me demande ...
Posté le 10-10-2005 à 21:17:47  profilanswer
 

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 ...


Message édité par shakpana le 10-10-2005 à 21:18:20
n°1220240
freed102
Arayashiki
Posté le 11-10-2005 à 10:51:19  profilanswer
 

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 !)


---------------
Freed102
n°1220251
skeye
Posté le 11-10-2005 à 11:00:36  profilanswer
 

t'es pas passé à un niveau de contrôle d'erreur plus strict dans php? :??:


---------------
Can't buy what I want because it's free -
n°1220259
freed102
Arayashiki
Posté le 11-10-2005 à 11:07:03  profilanswer
 

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


---------------
Freed102
n°1220393
shakpana
des fois, j'me demande ...
Posté le 11-10-2005 à 14:21:36  profilanswer
 

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 ...

n°1220396
omega2
Posté le 11-10-2005 à 14:23:01  profilanswer
 

en dev c'est sur, mais en prod, il vaut mieux éviter de mettre les allertes en E_ALL.

n°1220397
skeye
Posté le 11-10-2005 à 14:23:36  profilanswer
 

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...[:petrus75]


---------------
Can't buy what I want because it's free -
n°1220408
shakpana
des fois, j'me demande ...
Posté le 11-10-2005 à 14:29:45  profilanswer
 

skeye a écrit :

Ah ben ça c'est sûr...[:petrus75]


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).


mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  foreach qui bug sans raison...

 

Sujets relatifs
GetDIB plante sans raison apparante...pb avec foreach
problème avec fonction FOREACHforeach en javascript
Comment savoir si on est sur le dernier element d'un foreachJSP jstl <c:forEach> probleme!!!!
Aparition d'une scroll bar en bas de la page sans raisontableau de session / foreach[resolu]
foreach qui marche pasforeach et array... bizarre ?
Plus de sujets relatifs à : foreach qui bug sans raison...


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)