Tableau en variable globale??

Résolu
sabou94 Messages postés 158 Date d'inscription vendredi 12 mars 2004 Statut Membre Dernière intervention 17 avril 2007 - 21 mars 2007 à 17:08
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre 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

12 réponses

coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
22 mars 2007 à 00:46
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)
3
cs_morpheus57 Messages postés 121 Date d'inscription vendredi 31 mars 2006 Statut Membre Dernière intervention 30 décembre 2010
21 mars 2007 à 17:25
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
0
sabou94 Messages postés 158 Date d'inscription vendredi 12 mars 2004 Statut Membre Dernière intervention 17 avril 2007
21 mars 2007 à 17:44
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
0
sabou94 Messages postés 158 Date d'inscription vendredi 12 mars 2004 Statut Membre Dernière intervention 17 avril 2007
21 mars 2007 à 17:46
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_morpheus57 Messages postés 121 Date d'inscription vendredi 31 mars 2006 Statut Membre Dernière intervention 30 décembre 2010
21 mars 2007 à 17:55
Fais un var_dump($orderId) avant ton foreach et dis moi le résultat
0
sabou94 Messages postés 158 Date d'inscription vendredi 12 mars 2004 Statut Membre Dernière intervention 17 avril 2007
21 mars 2007 à 17:59
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
0
cs_morpheus57 Messages postés 121 Date d'inscription vendredi 31 mars 2006 Statut Membre Dernière intervention 30 décembre 2010
21 mars 2007 à 18:16
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é.
0
sabou94 Messages postés 158 Date d'inscription vendredi 12 mars 2004 Statut Membre Dernière intervention 17 avril 2007
21 mars 2007 à 18:23
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
0
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
21 mars 2007 à 18:38
On ne passe plus les variables globales comme cela !!

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

voila :)
0
sabou94 Messages postés 158 Date d'inscription vendredi 12 mars 2004 Statut Membre Dernière intervention 17 avril 2007
22 mars 2007 à 10:04
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
0
sabou94 Messages postés 158 Date d'inscription vendredi 12 mars 2004 Statut Membre Dernière intervention 17 avril 2007
22 mars 2007 à 10:38
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 
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
22 mars 2007 à 11:49
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)
0
Rejoignez-nous