debutant - garder mes variables d'une page à l'autre

debutant - garder mes variables d'une page à l'autre - PHP - Programmation

Marsh Posté le 06-03-2005 à 15:52:48    

Bonjour,
ça fait un moment que je me tire les cheveux pour un probleme tout bête à coup sur. Avant de devenir chauve je fais appel à vous.
 
Je souhaite chnager l'entete de page suivant les pages chargees. j'ai créé un fichier de fonctions dont une me sert à déterminer l'entete à afficher suivant la page chargée. euh, j'sui clair là?  :heink:  
 
Sur ma page à charger j'utilise une variable $pageType à laquelle je donne la valeur '01'. Toujours de cette page, j'appelle avec un INCLUDE le fichier "entete.php" :

Code :
  1. $pageType = "tourisme_puno";
  2. $_SESSION['pageType']  = 'tourisme_puno';


 
De ce fichier entete, j'ai tapé ceci :

Code :
  1. include("classphp.php" );
  2. pageType($pageType);


 
et ma fonction dans "classphp.php" est du genre :

Code :
  1. function pageType() {
  2. echo $pageType;
  3. switch($pageType) {
  4.   case 'situation_xxxx:
  5.     $enteteFlash = "enteteFlash_xxxx.swf"; break;
  6.   case 'situation_yyyy:
  7.     $enteteFlash = "enteteFlash_yyyy.swf"; break;
  8.   case 'situation_zzzz:
  9.     $enteteFlash = "enteteFlash_zzzz.swf"; break;
  10. }
  11. }


 
je me suis documenté mais je dois mal m'y prendre, alors uncoup de main serait le bienvenu
merci d'avance :)  
 
 

Reply

Marsh Posté le 06-03-2005 à 15:52:48   

Reply

Marsh Posté le 06-03-2005 à 17:15:37    

Les variables déclarées en dehors d'une fonction donnée et qui ne sont pas indiqué comme variable globale ( global $var; ) ne sont pas visible à l'intérieur de cette fonction.

Reply

Marsh Posté le 06-03-2005 à 19:37:06    

salut omega,
 
et merci pour ta réponse, mais j'ai peur de mal m'y prendre car j'ai ce message en exécution :
   

Code :
  1. Notice: Undefined variable: pageType in c:\program files\easyphp1-7\www\perou\classphp.php on line 18
  2. Notice: Undefined variable: pageType in c:\program files\easyphp1-7\www\perou\classphp.php on line 19


 
je ne vois pas comment la variable ne peut être définie car j'ai bien mis avant ça :

Code :
  1. global $pageType;
  2. $pageType = "tourisme_puno";


 
que faire?  :heink:

Reply

Marsh Posté le 06-03-2005 à 20:04:25    

Tu opourais nous copier tes fichiers exacts plustôt que des petits bouts par ci par là?
Comme ça, on poura voir dans quel ordre tout est exécuté.

Reply

Marsh Posté le 06-03-2005 à 20:13:32    

avec plaisir, les voici :
pour la page qui va être chargée :

Code :
  1. <?
  2. include("../links.php" );
  3. include("../words.php" );
  4. global $pageType;
  5. $pageType = "tourisme_puno";
  6. ?>
  7. <html>
  8. <head>
  9. ......
  10. </head>
  11. <body bgcolor="#C0A080" background="../Pics/fond_fond2.gif" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" unload="linkDance();">
  12. <a name="puno_00"></a>
  13. <div align="center">
  14. <table bgcolor="#FFFFFF"  height="632" align="center" cellpadding="0" cellspacing="0" border="0">
  15. <tr>
  16.   <td background="../Pics/barre_bord_gauche.gif" width="11">&nbsp;</td>
  17.   <td width="400" align="left" style="padding-right:14px; padding-left:17px;">
  18.  <!-----  >ENTETE index  ----->
  19.  <? include("../entete2.php" ); ?>
  20. ......
  21. .....
  22. </body></html>


 
cette page appelle donc en INCLUDE le fichier "entete.php" que voici :

Code :
  1. <?
  2. include("classphp.php" );
  3. pageType($pageType);
  4. ?>
  5. <table cellpadding="0" cellspacing="0" border="0">
  6. <tr>
  7. <td colspan="3" height="100" valign="top" style="padding-top:2px";>
  8. <OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0"
  9. WIDTH="710" HEIGHT="120" id="enteteFlash_Tourisme" ALIGN="">
  10. <PARAM NAME=movie VALUE="<? echo $enteteFlash; ?>"> <PARAM NAME=loop VALUE=false> <PARAM NAME=quality VALUE=best> <PARAM NAME=bgcolor VALUE=#FFFFFF> <EMBED src="<? echo $enteteFlash; ?>" loop=false quality=best bgcolor=#FFFFFF  WIDTH="710" HEIGHT="120" NAME="<? echo $enteteFlash; ?>" ALIGN=""
  11. TYPE="application/x-shockwave-flash" PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer"></EMBED>
  12. </OBJECT>
  13. </td></tr>
  14. <tr><td colspan="3" height="7"></td></tr>
  15. </table>


 
et enfin, la focntion dans "classphp.php" un peu raccourci :
function pageType() {
 //echo $pageType;
 switch($pageType) {
  case 'situation_geographique' : $enteteFlash = "enteteFlash_situation.swf"; break;  
  case 'situation_demographique' : $enteteFlash = "enteteFlash_situation.swf"; break;  
  case 'situation_economique' : $enteteFlash = "enteteFlash_situation.swf"; break;  
  case 'situation_politique' : $enteteFlash = "enteteFlash_situation.swf"; break;  
  case 'tourisme_lima' : $enteteFlash = "enteteFlash_tourisme.swf"; break;  
  case 'tourisme_cusco' : $enteteFlash = "enteteFlash_tourisme.swf"; break;
}
}
 
voilà!  ;)

Reply

Marsh Posté le 06-03-2005 à 20:24:22    

Tu appelles ta fonction comme ca :

Code :
  1. include("classphp.php" );
  2. pageType($pageType);


Ok, pas de probleme la dedans.
 
Mais regarde bien comment tu as defini ta fonction :

Code :
  1. function pageType() {
  2.   echo $pageType;
  3.   switch($pageType) {
  4.     case 'situation_xxxx: 
  5.         $enteteFlash = "enteteFlash_xxxx.swf"; break
  6.     case 'situation_yyyy: 
  7.         $enteteFlash = "enteteFlash_yyyy.swf"; break
  8.     case 'situation_zzzz: 
  9.         $enteteFlash = "enteteFlash_zzzz.swf"; break;
  10.     }
  11. }


 
T'as pas l'impression qu'il y a un probleme ??
 
Comme te l'as dit omega tu ne peux pas acceder, depuis l'interieur de ta fonction, aux variable non globales qui se trouvent en dehors de cette derniere.
Mais ca c'est plutot "un effet de bord" a cause de ton probleme.
 
Tu appelles une fonction avec un parametre. Ok.
Mais lorsque tu as defini ta fonction, tu ne lui as pas defini de parametre.
 
Tu as deux solutions pour resoudre ton probleme.
La premiere consiste a modifier la definition de ta fonction pour que tu puisse passer un parametre. C'est la meilleure solution, et d'apres ton code c'est ce que tu voulais faire.
 
La deuxieme solution consiste a faire en sorte que tu puisse acceder a la variable que tu veux depuis l'interieur de ta fonction. Cette solution n'est pas la bonne sauf dans quelques rares cas.


Message édité par cerel le 06-03-2005 à 20:25:11
Reply

Marsh Posté le 06-03-2005 à 20:37:27    

bravo c'est bien ça!! :D
juste une question et je ne vous emebete plus, est-ce qu'il me faut un "retour de fonction"? car ça n'a pas l'air de prendre en compte la valeur de la variable $enteteFlash après l'execution de la  focntion
merci encore

Reply

Marsh Posté le 06-03-2005 à 20:39:17    

C'est sur que si tu lui dit pas qu'il doit retourner quelque chôse, il va rien retourner. ;)

Reply

Marsh Posté le 06-03-2005 à 20:44:19    

euh...quelle est la fonction stp?

Reply

Marsh Posté le 06-03-2005 à 20:46:51    

return ? :D

Reply

Marsh Posté le 06-03-2005 à 20:46:51   

Reply

Marsh Posté le 06-03-2005 à 20:48:49    

ben oui, ...la honte!!!
merci les gars, ça devrait fonctionner maintenant
:D

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed