Tableau en variable globale?? [Résolu]

sabou94 158 Messages postés vendredi 12 mars 2004Date d'inscription 17 avril 2007 Dernière intervention - 21 mars 2007 à 17:08 - Dernière réponse : coucou747 12336 Messages postés mardi 10 février 2004Date d'inscription 30 juillet 2012 Dernière intervention
- 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 

Votre réponse

12 réponses

Meilleure réponse
coucou747 12336 Messages postés mardi 10 février 2004Date d'inscription 30 juillet 2012 Dernière intervention - 22 mars 2007 à 00:46
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)

Merci coucou747 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de coucou747
cs_morpheus57 122 Messages postés vendredi 31 mars 2006Date d'inscription 30 décembre 2010 Dernière intervention - 21 mars 2007 à 17:25
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
sabou94 158 Messages postés vendredi 12 mars 2004Date d'inscription 17 avril 2007 Dernière intervention - 21 mars 2007 à 17:44
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
sabou94 158 Messages postés vendredi 12 mars 2004Date d'inscription 17 avril 2007 Dernière intervention - 21 mars 2007 à 17:46
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
cs_morpheus57 122 Messages postés vendredi 31 mars 2006Date d'inscription 30 décembre 2010 Dernière intervention - 21 mars 2007 à 17:55
0
Merci
Fais un var_dump($orderId) avant ton foreach et dis moi le résultat
Commenter la réponse de cs_morpheus57
sabou94 158 Messages postés vendredi 12 mars 2004Date d'inscription 17 avril 2007 Dernière intervention - 21 mars 2007 à 17:59
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
cs_morpheus57 122 Messages postés vendredi 31 mars 2006Date d'inscription 30 décembre 2010 Dernière intervention - 21 mars 2007 à 18:16
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
sabou94 158 Messages postés vendredi 12 mars 2004Date d'inscription 17 avril 2007 Dernière intervention - 21 mars 2007 à 18:23
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
FhX 2368 Messages postés mercredi 13 octobre 2004Date d'inscription 18 avril 2015 Dernière intervention - 21 mars 2007 à 18:38
0
Merci
On ne passe plus les variables globales comme cela !!

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

voila :)
Commenter la réponse de FhX
sabou94 158 Messages postés vendredi 12 mars 2004Date d'inscription 17 avril 2007 Dernière intervention - 22 mars 2007 à 10:04
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
sabou94 158 Messages postés vendredi 12 mars 2004Date d'inscription 17 avril 2007 Dernière intervention - 22 mars 2007 à 10:38
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
coucou747 12336 Messages postés mardi 10 février 2004Date d'inscription 30 juillet 2012 Dernière intervention - 22 mars 2007 à 11:49
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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.