question bête cherche réponse intelligente

Invité
Invité n'ayant pas de compte PHPfrance

27 juil. 2009, 20:41

ce que je souhaite c'est les insérer dans mes pages comme valeur d'une variable, le meta_01 pour certaines pages et le meta_02 pour les autres.
enfin, "insérer" : je ne sais pas si c'est le bon terme... $mavarible = le fichier meta souhaité, en attente d'être affiché dans index.

Eléphant du PHP | 369 Messages

27 juil. 2009, 21:06

Re,
ah oui, je comprend ton exemple...
mais c'est pas exactement ça.
en fait, les deux meta_01.php et meta_02.php ne sont pas à tester dans index.php.
je ne cherche d'ailleurs pas à les tester du tout...
ce que je souhaite c'est les insérer dans mes pages comme valeur d'une variable, le meta_01 pour certaines pages et le meta_02 pour les autres[**].
ensuite le meta correspondant à la page en cours sera affiché à la bonne place dans index.php grâce à la variable :wink:
C'est faisable ?
[*]à moins que ce que tu proposes soit LA réponse, mais que je ne suis pas capable de comprendre (trop complexe à mon niveau) :?
[*] Bein : T'as mis le doigt dessus... De ce que j'ai saisi de ta demande ma réponse est la bonne.
Non que je sois extra-lucide hein. Mais il me semble bien:
enfin, "insérer" : je ne sais pas si c'est le bon terme... $mavarible = le fichier meta souhaité, en attente d'être affiché dans index
Cela confirme le fait. Enfaite il ne s'agit pas vraiment d'insert.
La variable se remplit au fur et à mesure autrement dit c'est toi qui, une fois la variable prête
$script = getData("Avec ou pas d'arguments"); décide ou placer celle-ci en faisant: $cde .= $script;

[**] d'ou un test, test que tu peux, il est vrai, mettre ou tu le souhaites ;)

Sinon tu peux faire cela:
.
.
.
$cde  = "<meta>\n"
$cde .= "   {template:meta.nummero}";
$cde .= "</meta>\n";
.
.
.
Puis parser ta variable $cde pour remplacer la partie entre {} par ce que tu auras déclaré.
fonction php : preg_replace. Mais on s'éloigne du sujet.

Sinon pour ce que tu sembles vouloir faire relis mes exemples plus haut, il me semble bien que
c'est tout à fait ce que tu recherches.

Chose qui va peut-être pas t'aider, mais sait on jamais :

__FILE__ Te donne le fichier en cours
$_SERVER["REQUEST_URI"] tu peux récupérer l'url actuelle

Autrement dit tu pourras déja tester quelque points. phpinfo(); est aussi utile hésite pas à le lancer.

Bon 10h à coder... Pause syndicale, @+ espérant t'avoir éclairé, je repasse demain ;)

Invité
Invité n'ayant pas de compte PHPfrance

28 juil. 2009, 00:46

hello, fuzzyline,

je pense que tu es dans les bras de morphée ou que tu t'y prépares...
donc ce que je te dis là est pour demain, inchallah (ou si dieu le veut, c'est selon) :

alors voilà, c'est bien ce que je craignais, ta solution, qui semble bien être la résolution de mon problème, est là sous mes yeux et je suis complètement largué |*()

il me manque des passerelles pour passer de ma logique simpliste à ta logique de codeur fou :ordi: , et il faudrait, si j'ose, que tu t'appuies sur les noms et les termes que j'attribue aux éléments de ma question pour me conduire par la main jusqu'à la lumière...

Je comprendrais que ce soit trop demander.
Dans ce cas, je mettrais "résolu" et je concocterais une solution plus artisanale... ElePHPant :tir2:

Quoiqu'il en soit, merci pour ce que tu as déjà fait !

Eléphant du PHP | 369 Messages

28 juil. 2009, 10:31

Salut,
hello, fuzzyline,
je pense que tu es dans les bras de morphée ou que tu t'y prépares...
donc ce que je te dis là est pour demain, inchallah (ou si dieu le veut, c'est selon) :
alors voilà, c'est bien ce que je craignais, ta solution, qui semble bien être la résolution de mon problème, est là sous mes yeux et je suis complètement largué |*()
il me manque des passerelles pour passer de ma logique simpliste à ta logique de codeur fou :ordi: , et il faudrait, si j'ose, que tu t'appuies sur les noms et les termes que j'attribue aux éléments de ma question pour me conduire par la main jusqu'à la lumière...
Je comprendrais que ce soit trop demander.
Dans ce cas, je mettrais "résolu" et je concocterais une solution plus artisanale... ElePHPant :tir2:
Quoiqu'il en soit, merci pour ce que tu as déjà fait !
Je reprends tes exemples mais sans HEREDOC je déteste ca, je trouve que ca rend illisible le code.

Info: Fais une séparation plus correcte entre code php et script html.
<!-- appel du tableau identifiant la page demandée via un lien des menus --> 
<?php include("fonction_pages.php"); ?> 
Bon, déja tu peux modifier par: (je profite pour tout passer en php c'est plus clair)
Et je me permets, du reste, de modifier ta forme d'appel et nom de tes variables mais c'est la seule
façon d'être compréhensible et surtout d'être lisible:

Page: index.php
<?php

$pageName = "TU RECUPERE LE NOM DE LA PAGE OU TU ES VIA $_SERVER";

/**
 * Chargement d'un fichier contenant le menu
 */
 include("menu.php");
 $menu = getMenu();

/**
 * Chargement d'un fichier contenant le header
 * oubli pas qu'une fois revenu de la fonction le nom de la page peut avoir
 * changé suite à la détection d'une erreur. En ce cas $pageName = false
 */
 include("entete_index.php");
 $header = getHeader($pageName);

/**
 * Chargement d'un fichier contenant TOUS les body de tes pages
 */
 include("fonction_pages.php");
 $body = getBody($page);

/**
 * Assemblage du container html et affichage
 * la variable employée: $cde correspont à ton script html 
 */
 $cde  = "<!DOCTYPE ...>";
 $cde .= "<html>\n";
 $cde .= "   <head>\n";
 $cde .=         $meta
 $cde .= "   </head>\n";
 $cde .= "   <body>\n";
 $cde .=        $body;
 $cde .= "   </body>\n";
 $cde .= "</html>\n";

 echo $cde;
?> 
Page: menu.php
<?php
   function getMenu()
   {
      // Les liens sont placés dans la partie "fragment" de l'url mais peuvent
      // être lancés de manières directe ex: <a href="./REPERTOIRE/accueil"> en
      // ce cas prévois d'indiquer le nom du répertoire ou les pages se trouvent
      // Autre cas possible: le rewriting mais plus complexe au vu de tes connaisssances.
      // http://www.webrankinfo.com/dossiers/debutants/url-rewriting
      $cde_menu = "";
      $cde_menu ="<ul>\n";
      $cde_menu ="   <li>\n";
      $cde_menu ="      <a href="./index.php?page=accueil">Accueil</a>\n";
      $cde_menu ="   </li>\n";
      $cde_menu ="   <li>\n";
      $cde_menu ="      <a href="./index.php?page=dowload">Download</a>\n";
      $cde_menu ="   </li>\n";
      $cde_menu ="   <li>\n";
      $cde_menu ="      <a href="./index.php?page=login">Login</a>\n";
      $cde_menu ="   </li>\n";
      $cde_menu ="</ul>\n";

      return $cde_menu;
   }
?>
Page: entete_index.php
<?php
  /**
   * Je réceptionne l'argument en référence, d'ou le & 
   * ca me permet ainsi de le modifier s'il y a une erreur d'acces (404).
   */
   function getHeader(& $pageName)
   {
      // J'ai mis n'importe quoi, hein, mais bon t'auras compris le principe.

      $head  ="";
      $head .= "<meta http-equiv=content-type content="text/html; charset=UTF-8">/>\n";
      $head .= "<meta http-equiv="Content-Language" content="fr">\n";
      $head .= " <title>\n";

      /**
       * Assignation de la variable par défaut, ca fait gagner du temps
       */
      $title = "Unknow page, ERROR 404 !!!";

      /**
       * Vérification du nom de la page pour assignation du titre
       * s'il ne trouve pas alors $titre reste inchangé
       */
       switch($pageName)
       {
           case accueil:
              $title = "Page d'accueil, welcome in my world !\n";
           break;

           // Restant un exemple je squize la fin des choix, t'auras compris le principe
           // à toi de remplacer les xxx et ajouter des case
           case xxx:
           .
           .
           .
           break;

           default:
              // si ca passe ici c'est que le nom de la page n'existe pas
              // dans le choix donc on indique l'erreur en modifiant la variable
              // d'argument, celle-ci vaudra: FAUX.
              $pageName = false;
       }

      $head .=       $title."\n";
      $head .= " </title>\n";
      $head .= "<link rel="stylesheet" type="text/css" href=./css/general_css.css">\n";

      return $head;
   }
?>
Page: fonction_pages.php
<?php

   function getBody($pageName)
   {
      if (!$pageName) $pageName = "404";

      $body = "";

      /**
       * Enregistre la partie déterminé par l'argument dans la variable $body
       * le code peut être direct comme ici ou il peut etre chargé via un include
       * ex: include ($pageName."php") getData ...etc
       * ou peut être du script html ex: $fScript = fopen($pageName."htm")
       * T'auras compris le principe
       */
      switch($pageName)
      {          
          case accueil:
             $body .= "<h1>\n";
             $body .= "   Hello world, zet à l'accueil...\n";
             $body .= "</h1>
          break;

          case 404:
             $body .= "<h1>\n";
             $body .= "   Perdu, Page inconnue...  Réessaie...\n";
             $body .= "</h1>
          break;
      }
      return $body;
   }
?>
Pas le temps de faire le footer mais le principe reste le même.
J'ai tenté d'être le plus didactique possible mais bon, certain termes peuvent t'échaper,
seul une lecture attentive de tutos ou même de sources pourront te renseigner.
Je repasse plus tard, bon code @+ ;)

Invité
Invité n'ayant pas de compte PHPfrance

28 juil. 2009, 22:10

salut fuzzyline

Je viens seulement de me connecter, et je découvre, oh joie ! ta longue réponse rédigée avec patience et pédagogie, du moins pour ce que j'en déduis de ma lecture en diagonale...

Je vais, pas tout de suite car j'ai du boulot à finir, me plonger sous peu dans l'étude de ce que tu proposes !

Un grand merci, vraiment !

...et je te posterai mes éventuels doutes ou incompréhensions, en espérant ne pas abuser.

Je ne met pas encore "résolu", mais ça ne saurait tarder :wink: