sous tableau array

sous tableau array - PHP - Programmation

Marsh Posté le 04-06-2010 à 09:50:38    

Bonjour,  
 
Sur mon site, j'affiche un menu (en tableau array) où les liens s'affichent dans une div que j'appelle "frame".  
A l'affichage d'une page dans la div frame, si celle-ci contient un lien, je voudrais afficher le résultat du lien dans cette même frame, et non une autre fenêtre.  
 
Exemple : j'affiche la page "livredor" dans la div frame. Cette page comporte un lien qui mêmne à "saisie.php", que je voudrais afficher dans cette même frame si je clic dessus.  
 
Voilà où j'en suis :  
 

Code :
  1. <?php
  2. $pages = array (
  3. 'bienvenue'=>'bienvenue_FR.htm', 
  4. 'historique'=>'histo_FR.htm',
  5. 'livredor' => array ('livredor_FR.php', 'saisie' => 'saisie.php'),   'pour nous contacter'=>'contact_FR.htm'
  6. );
  7. ?>
  8. <body>
  9. <div class="menu2">
  10. <ul>
  11. <?php
  12. foreach($pages as $nom => $page)
  13. {
  14. if(isset($_GET['page']) AND $_GET['page'] == $nom) // Page a afficher = Lien a afficher  
  15. $class = "courant";
  16. else
  17. $class = "bouton";
  18. printf("<a class=\"%s\" href=\"index_FR.php?page=%2\$s\">%2\$s</a>\n", $class, $nom); //---------affichage du menu  
  19. }
  20. ?>
  21. </ul>
  22. </div>
  23. <div class="frame">
  24. <?php
  25. if(isset($_GET['page']) && array_key_exists($_GET['page'],$pages))
  26. include $pages[$_GET['page']];
  27. if (($_GET['page']) == livredor)
  28. {
  29. include ($pages[$_GET['page'][0]]);
  30. }
  31. else
  32. include 'bienvenue_FR.htm';
  33. ?>


 
Là, si je veux ouvrir la page "livredor", j'ai le msg :  
Warning: include(Array) [function.include]: failed to open stream  
Warning: include() [function.include]: Failed opening 'Array' for inclusion (include_path='.;C:\php5\pear')
Warning: include() [function.include]: Failed opening '' for inclusion (include_path='.;C:\php5\pear')

sur la ligne de  
include $pages[$_GET['page']]; .  
 
Je suppose que la déclaration de mon sous-tableau n'est pas bonne ?  
 
Et à dire franchement, je n'arrive plus à m'en sortir .... Alors si vous pouviez me donner un coup de main ...
Merci


Message édité par t671 le 04-06-2010 à 09:59:50
Reply

Marsh Posté le 04-06-2010 à 09:50:38   

Reply

Marsh Posté le 04-06-2010 à 10:03:07    

rien à voir avec les liens : ça veut simplement dire qu'il n'a pas réussi à inclure la lib PEAR (PEAR:DB sans doute) dans la page mentionnée dans $pages[$_GET['page'][0]].


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 04-06-2010 à 10:06:29    

rufo a écrit :

rien à voir avec les liens : ça veut simplement dire qu'il n'a pas réussi à inclure la lib PEAR (PEAR:DB sans doute) dans la page mentionnée dans $pages[$_GET['page'][0]].


 
Merci rufo. Et comment je peux faire, alors ?  :pt1cable:

Reply

Marsh Posté le 04-06-2010 à 10:16:37    

Code :
  1. if ($_GET['page'] == 'livredor'){ // Attention ce n'est pas une constante !
  2. //Ce n'est pas un array alors !
  3. include ($pages[$_GET['page'][0]]);
  4. //ici $_GET['page'][0]=='l' premier caractère de la chaine
  5. //$pages[l] n'existe pas


Message édité par grosbin le 04-06-2010 à 10:17:31

---------------
Photos Panoramiques Montagnes Haute Savoie
Reply

Marsh Posté le 04-06-2010 à 10:27:20    

OK !
Si j'écris ceci :
 

Code :
  1. $pages = array (
  2. 'bienvenue'=>'bienvenue_FR.htm',
  3. 'historique'=>'histo_FR.htm',
  4.              'livredor'=>'livredor_FR.php',
  5.              'pour nous contacter'=>'contact_FR.htm'
  6. );
  7. .......................
  8. if(isset($_GET['page']) && array_key_exists($_GET['page'],$pages))
  9. include $pages[$_GET['page']];
  10. else
  11. include 'bienvenue_FR.htm';
  12. if (($_GET['page']) == saisie.php)
  13. {
  14.              include 'saisie.php';
  15. }


 
comment déclarer ma page "saisie.php" dans mon menu array sans qu'il apparaisse sur ma page à afficher ?

Reply

Marsh Posté le 04-06-2010 à 10:30:55    

//tu devrais ajouter en haut de ton array
$pages = array ('saisie'=>'saisie.php',
et éviter de communiquer le nom de tes pages en GET  
(mais au moins ta ligne 9 permet d'éviter le cross-site scripting)


---------------
Photos Panoramiques Montagnes Haute Savoie
Reply

Marsh Posté le 04-06-2010 à 10:38:58    

grosbin a écrit :

//tu devrais ajouter en haut de ton array
$pages = array ('saisie'=>'saisie.php',
et éviter de communiquer le nom de tes pages en GET  
(mais au moins ta ligne 9 permet d'éviter le cross-site scripting)


 
Justement, je ne peux pas ajouter dans mon array "$pages = array ('saisie'=>'saisie.php'," sinon "saisie" va apparaitre dans mon menu, et je ne le veux pas. Car c'est un lien de la page "livredor.php" ....  :pt1cable:

Reply

Marsh Posté le 04-06-2010 à 10:52:35    

Pourquoi tu ne fais pas du MVC dans ce cas :??:


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 04-06-2010 à 10:55:40    

rufo a écrit :

Pourquoi tu ne fais pas du MVC dans ce cas :??:


 
C'est quoi MVC ?  :??:

Reply

Marsh Posté le 04-06-2010 à 12:05:49    

Modèle Vue Contrôleur, y'a un gros topic sur ce forum à ce propos.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 04-06-2010 à 12:05:49   

Reply

Marsh Posté le 04-06-2010 à 12:37:39    

rufo a écrit :

Modèle Vue Contrôleur, y'a un gros topic sur ce forum à ce propos.


 
Tu peux me donner le lien .... j'trouve pô !!!!!  :heink:

Reply

Marsh Posté le 04-06-2010 à 12:49:36    

Reply

Sujets relatifs:

Leave a Replay

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