Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1868 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [php] [RESOLU] aide case switch automatisé php

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[php] [RESOLU] aide case switch automatisé php

n°1859684
spidermas
Posté le 10-03-2009 à 10:43:25  profilanswer
 

bonjour a tous
 
j'essaye se matin de faire un petit script qui pourrais m'etre bien utile mais je recontre quelques petit problemes et j'espere que certains d'entre vous pourrons m'aider.
 
En effet sur mes sites j'utilise les include avec switch et case pour l'affichage du contenue
 
par exemple
 

Code :
  1. switch($rub)
  2. {
  3. case'menu':
  4.  switch($page)
  5.  {
  6.  case'liens':
  7.  include('liens.php');
  8.  break;
  9.  case'referenceurs':
  10.  include('referenceurs.php');
  11.  break;
  12.  default:
  13.  include('news.php');
  14.  break;
  15.  }
  16.  break;
  17. default:
  18. include('news.php');
  19. break;
  20. }
  21. ?>


 
 
mais cela demande a chaque fois l'edition de se bout de code pour ajouter de nouvelles pages
 
donc en gros je veux optimiser pour gagner du temps. vue que chaque case et include ont le meme nom (l'extension en moins) j'ai fait se bout de code mais il ne fonctionne evidemment pas je pense que cest surtout l'ecriture du code qui pose probleme.
 

Code :
  1. <?
  2. switch($rub)
  3. {
  4. case'menu':
  5.  switch($page)
  6.  {
  7. $files = glob("*.php" );
  8. foreach ($files as $filename)
  9. {   
  10. $filename2 = substr($filename, 0, -4);     
  11. $ss = "
  12. case'$filename2':
  13. include('$filename');
  14. break;
  15. ";
  16. print_r($ss);
  17. }
  18.  default:
  19.  include('news.php');
  20.  break;
  21.  }
  22.  break;
  23. default:
  24. include('news.php');
  25. break;
  26. }
  27. ?>


 
bon la j'ai mis un print_r qui ne sert a rien car je ne sais pas comment stocker tout sa pour que cela sois pris en compte
 
Un petit coup de main svp ???
 
Cela ne doit pas etre si compliquer mais je me prend la tete la dessus sans arriver a rien depuis 2h
 
merci de votre aide


Message édité par spidermas le 11-03-2009 à 07:06:05
mood
Publicité
Posté le 10-03-2009 à 10:43:25  profilanswer
 

n°1859690
dwogsi
Défaillance cérébrale...
Posté le 10-03-2009 à 10:57:25  profilanswer
 

Un foreach dans un switch ça me parait pas mal louche tout ça...
 
En supposant que tu ais un sous répertoire pages (ça me parait plus propre).
 

Code :
  1. <?php
  2.  
  3. // Sous répertoire "pages"
  4. $rep = dirname(__FILE__).'/pages/';
  5.  
  6. // Si c'est vide, on prend la page par défaut
  7. if(empty($rub))
  8.  require($rep.'news.php');
  9. else
  10. {
  11.  // Sinon on lit le contenu de notre répertoire
  12.  $dir = opendir($rep);
  13.  while( ($f = readdir($dir)) !== FALSE) {
  14.    if(is_file($rep.$f))
  15.      // Si ça correspond à ce qu'on veut on inclut et on stoppe la recherche
  16.      if(substr($f,0,-4) == $rub)
  17.      {
  18.        require($rep.$f);
  19.        break;
  20.      }
  21.  }
  22. }
  23. ?>


 
Bon c'est pas parfait, pas de page d'erreur par exemple...


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
n°1859695
spidermas
Posté le 10-03-2009 à 11:10:51  profilanswer
 

ok sympa mais comment puise appeler les autres pages par exemple une page liens
 
index.php?rub=liens ?
 
edit :
 
j'ai rien dit sa marche impec merci


Message édité par spidermas le 10-03-2009 à 11:14:02
n°1859701
dwogsi
Défaillance cérébrale...
Posté le 10-03-2009 à 11:20:05  profilanswer
 

Je vais simplifier en fait. Toujours avec un sous répertoire "pages" :

 
Code :
  1. <?php
  2.  
  3. // Sous répertoire "pages"
  4. $dir = dirname(__FILE__).'/pages/';
  5.  
  6. // Si $_GET['rub'] vide
  7. if(empty($_GET['rub']))
  8. {
  9.  // On prend news.php
  10.  require($dir.'news.php');
  11.  
  12.  // On s'arrête là
  13.  exit;
  14. }
  15.  
  16. // Sinon on liste les fichiers
  17. $files = glob($dir.'*.php');
  18.  
  19. // On cherche la rubrique
  20. if(in_array($_GET['rub'].'.php',$files))
  21.  // On trouve donc on inclut le fichier
  22.  require($dir.$_GET['rub'].'.php');
  23. else
  24.  // On a rien trouvé, page d'erreur
  25.  require($dir.'not-found-404.php');
  26. ?>
 

C'est fait de tête alors peu y avoir des erreurs.
Sinon normalement ça te permet d'inclure n'importe quel fichier contenu dans le répertoire "pages" en passant sont nom sans l'extension (.php) en GET dans rub.


Message édité par dwogsi le 10-03-2009 à 11:48:17

---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
n°1859711
spidermas
Posté le 10-03-2009 à 11:34:18  profilanswer
 

super :)
 
autre chose maintenant possible d'y mettre des exceptions ?
 
genre je ne veux pas qu'il prend en compte une page qui s'appel accueil.php dans la boucle


Message édité par spidermas le 10-03-2009 à 11:34:40
n°1859729
spidermas
Posté le 10-03-2009 à 11:50:45  profilanswer
 

voila rewritting mis en place :)
 
script fonctionne impec
 
merci bocoup
 
pas de faille dans se bout de code hein ?
 
 
j'ai tester ?rub=www.google.fr sa m'envoi sur not-found-404.php


Message édité par spidermas le 10-03-2009 à 11:53:02
n°1859894
spidermas
Posté le 10-03-2009 à 15:42:07  profilanswer
 

je suis face a un petit souci avec le script  
 
 
en fait si je ne met pas les pages a inclure dans le dossier pages et a la racine il me renvoie sur not-found-404.php  
 
je pense que le probleme viens du glob.
 
si je met  glob('*.php'); et que mes pages sont presente a la racine et dans /pages sa fonctionne
 
si je transforme en $files = glob('$dir/*.php'); il me renvoie sur not-found-404.php  
 
pourriez vous m'aider a determiner le probleme

Message cité 1 fois
Message édité par spidermas le 10-03-2009 à 15:51:03
n°1859906
macgawel
Posté le 10-03-2009 à 16:20:47  profilanswer
 

spidermas a écrit :

je suis face a un petit souci avec le script  
 
 
en fait si je ne met pas les pages a inclure dans le dossier pages et a la racine il me renvoie sur not-found-404.php  
 
je pense que le probleme viens du glob.
 
si je met  glob('*.php'); et que mes pages sont presente a la racine et dans /pages sa fonctionne
 
si je transforme en $files = glob('$dir/*.php'); il me renvoie sur not-found-404.php  
 
pourriez vous m'aider a determiner le probleme


var_dump()
Avec ça, tu vas pouvoir regarder ce qu'il y a dans tes variables.
Et il suffit de réfléchir un peu pour trouver d'où vient le problème.
 
Accessoirement, si tu as besoin d'avoir tes pages à la racine et dans pages/ c'est qu'il y a un gros problème...

n°1859932
spidermas
Posté le 10-03-2009 à 17:30:04  profilanswer
 

ok le glob retourne repertoire/fichier
 
c'est pour sa que if(in_array($_GET['rub'].'.php',$files)) ne fonctionne pas
 
comment faire pour ne garder que les fichier du repertoire sans afficher /pages ?


Message édité par spidermas le 10-03-2009 à 17:42:32
n°1860153
spidermas
Posté le 11-03-2009 à 07:04:55  profilanswer
 

rebonjour
 
voila c'est corrigé c'été tout con en fait :)
 
je met le code en cas ou sa sert a quelqu'un
 

Code :
  1. <?php
  2. $urr = $_GET['rub'];
  3. $urr2 = "pages/$urr.php";
  4. // Sous répertoire "pages"
  5. $dir = dirname(__FILE__).'/pages/';
  6. // Si $_GET['rub'] vide
  7. if(empty($_GET['rub'])){ 
  8. // On prend news.php   
  9. require($dir.'news.php'); 
  10. // On s'arrête là   
  11. exit;}
  12. // Sinon on liste les fichiers
  13. $files = glob('pages/*.php');  
  14. // On cherche la rubrique
  15. if(in_array($urr2, $files))   
  16. // On trouve donc on inclut le fichier   
  17. {
  18. require($dir.$_GET['rub'].'.php');
  19. }
  20. else   
  21. // On a rien trouvé, page d'erreur   
  22. {
  23. require($dir.'not-found-404.php');
  24. }
  25. ?>

mood
Publicité
Posté le 11-03-2009 à 07:04:55  profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [php] [RESOLU] aide case switch automatisé php

 

Sujets relatifs
aide[Résolu] Fonction retournant un tableau allouer dynamiquement
Aide pour la programmation d'un userform remplissant une ligne Excel[RESOLU] Afficher le contenu d'un document
Noob en JS et besoin d'aide!connexion ado avec acces et besoin d'aide pour code vb svp
Mapper un lecteur avec Case & InputBox[Résolu] Problème de CSS sur un tri ajax d'un tableau
[résolu] série indépendante de boutons radios[resolu]probleme concatenation chaine en javascript
Plus de sujets relatifs à : [php] [RESOLU] aide case switch automatisé php


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR