Tableau en variable globale?? [Résolu]

Messages postés
158
Date d'inscription
vendredi 12 mars 2004
Statut
Membre
Dernière intervention
17 avril 2007
- - Dernière réponse : coucou747
Messages postés
12336
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
- 22 mars 2007 à 11:49
Bonjour,
une petite question, j'ai une appli gerée à partir de mode (passée dans l'url), en gros ca donne if mode=... alors... et en fait je remplis un tableau dans une des conditions (if $mode ==3) et je veux faire un foreach de ce meme tableau dans une autre condition (if $mode==4), mais ca ne marche pas, c'est comme si il ne reconnaissait pas le tableau (Invalid argument supplied for foreach() ) pourtant j'ai déclaré la variable en globale (  global $orderId;)
Alors où est le probleme? ce n'est pas possible de déclarer un tableau global??

Encore merci.

sabrina
Afficher la suite 

12 réponses

Meilleure réponse
Messages postés
12336
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
26
3
Merci
Salut,

pour concerverv ton tab entre deux pages, utilise les sessions

In a dream, I saw me, drop dead... U was there, U cried... It was just a dream, if I die, U won't cry, maybe, U'll be happy

Mon site (articles sur la programmation et programmes)

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 133 internautes nous ont dit merci ce mois-ci

Commenter la réponse de coucou747
Messages postés
122
Date d'inscription
vendredi 31 mars 2006
Statut
Membre
Dernière intervention
30 décembre 2010
0
Merci
Tu dois avoir la syntaxe suivante :

foreach( $orderId as $order)
{
    //ton traitement
}

Attention, ton $orderId doit être un tableau : http://lu.php.net/manual/fr/control-structures.foreach.php
Commenter la réponse de cs_morpheus57
Messages postés
158
Date d'inscription
vendredi 12 mars 2004
Statut
Membre
Dernière intervention
17 avril 2007
0
Merci
Je fais ca :
if ($mode==3){
   for ($quest=1;$quest<=$last;$quest++){
       $desc=""".$_SESSION["orderQuestDesc"][$quest].""";
       $orderId[$quest]= recupId($dbconnection,$id_quiz, $version1,$desc);
       $orderQuest[$quest] = $quest;
   }
}

if ($mode==4){
   foreach ($orderId as $i)
   { 
       saveOrder($dbconnection,$id_quiz,$version,$orderId[$i],$orderQuest[$i]);
   }
}

-> Et ca me donne : Invalid argument supplied for foreach()

sabrina
Commenter la réponse de sabou94
Messages postés
158
Date d'inscription
vendredi 12 mars 2004
Statut
Membre
Dernière intervention
17 avril 2007
0
Merci
Je fais ca :
if ($mode==3){
   for ($quest=1;$quest<=$last;$quest++){
       $desc=""".$_SESSION["orderQuestDesc"][$quest].""";
       $orderId[$quest]= recupId($dbconnection,$id_quiz, $version1,$desc);
       $orderQuest[$quest] = $quest;
   }
}

if ($mode==4){
   foreach ($orderId as $i)
   { 
       saveOrder($dbconnection,$id_quiz,$version,$orderId[$i],$orderQuest[$i]);
   }
}

-> Et ca me donne : Invalid argument supplied for foreach()

sabrina
Commenter la réponse de sabou94
Messages postés
122
Date d'inscription
vendredi 31 mars 2006
Statut
Membre
Dernière intervention
30 décembre 2010
0
Merci
Fais un var_dump($orderId) avant ton foreach et dis moi le résultat
Commenter la réponse de cs_morpheus57
Messages postés
158
Date d'inscription
vendredi 12 mars 2004
Statut
Membre
Dernière intervention
17 avril 2007
0
Merci
hum, ca me renvoie NULL...
Mais c'est ca le probleme, on dirait qu'il connait pas mon tableau parce qu'il est pas déclaré entre les accolades du mode. Pourtant au début de mon fichier php j'ai mis global $orderId.


Donc je ne vois pas où est le probleme?

sabrina
Commenter la réponse de sabou94
Messages postés
122
Date d'inscription
vendredi 31 mars 2006
Statut
Membre
Dernière intervention
30 décembre 2010
0
Merci
Le problème est que si mode == 4 alors tu ne rentre jamais dans le premier if($mode == 3). Donc $orderId[$quest]= recupId($dbconnection,$id_quiz, $version1,$desc); ne s'execute pas, donc $orderId n'est pas setté.
Commenter la réponse de cs_morpheus57
Messages postés
158
Date d'inscription
vendredi 12 mars 2004
Statut
Membre
Dernière intervention
17 avril 2007
0
Merci
Ah ben vi c'est vrai c'est logique. Zut, comment je peux faire? parce que c'est vraiment à cet endroit que je veux faire mon tableau et je l'utilise ensuite quand j'appuie sur un bouton.
Bon ben je vais regarder comment faire, merci beaucoup. Je vais demander de l'aide demain à ma tutrice, elle saura peut etre pour l'autre question.
Encore merci, je te souhaite une bonne soirée!

sabrina
Commenter la réponse de sabou94
Messages postés
2368
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
3
0
Merci
On ne passe plus les variables globales comme cela !!

$_GLOBAL[] (ou $_GLOBALS[] je sais plus).

voila :)
Commenter la réponse de FhX
Messages postés
158
Date d'inscription
vendredi 12 mars 2004
Statut
Membre
Dernière intervention
17 avril 2007
0
Merci
Merci pour toutes vos réponses. J'ai décidé de suivre le conseil de coucou747 et j'ai utilisé les $_SESSION, mais j'ai toujours le meme probleme!


donc toujours la meme erreur, sauf que quand je fais mon var_dump de ma session, il me met bien que c'est un tableau :


array(4) { [1]=> string(1) "1" [2]=> string(1) "2" [3]=> string(1) "3" [4]=> string(1) "4" }
array(4) { [1]=> int(1) [2]=> int(2) [3]=> int(3) [4]=> int(4) }

Voilà mon code, je dois me tromper quelque part :
Remplissage du tableau :
for ($quest=1;$quest<=$last;$quest++){
        $desc=""".$_SESSION["orderQuestDesc"][$quest].""";
        $_SESSION['orderId'][$quest]= recupId($dbconnection,$id_quiz, $version1,$desc);
        $_SESSION['orderQuest'][$quest] = $quest;
   }

Utilisation :
foreach ($_SESSION['orderId'][$i] as $element=>$i)

    saveOrder($dbconnection,$id_quiz,$version+1,$_SESSION['orderId'][$i],$_SESSION['orderQuest'][$i]);
 }

Merci d'avance!

sabrina
Commenter la réponse de sabou94
Messages postés
158
Date d'inscription
vendredi 12 mars 2004
Statut
Membre
Dernière intervention
17 avril 2007
0
Merci
Bon ben j'ai reglé le probleme, en fait c'était


> foreach ($_SESSION['orderId'] as $i>$element)
et non
   foreach ($_SESSION['orderId'][$i] as $element=>$i)

Voilà, merci à vous (j'ai encore des probleme mais bon je me débrouillerai!  )

sabrina 
Commenter la réponse de sabou94
Messages postés
12336
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
26
0
Merci
Salut,

fais reponse acceptee stp

In a dream, I saw me, drop dead... U was there, U cried... It was just a dream, if I die, U won't cry, maybe, U'll be happy

Mon site (articles sur la programmation et programmes)
Commenter la réponse de coucou747