Un peu perdu avec les templates

Un peu perdu avec les templates - PHP - Programmation

Marsh Posté le 03-08-2006 à 12:35:25    

Bonjour à tous,
 
Voila, je me mets aux templates et je suis un peu perdu.
 
Je tente de faire un menu, ET aussi la liste des articles. Je m'esplique, j'ai une table SQL avec ces champs
id_article
id_rubrique
titre
article
 
Je voudrais donc faire un menu avec les titres (donc une boucle), et aussi à coté dans le corps de la page je voudrais afficher les titres et les articles (encore uen boucle). Apres je definirai des ancres pour aller directement depuis le menu vers la position de l'article desiré.
 
Mais voila, j'ai un peu de mal à mettre deux systemes de template dans la meme page PHP. Si qu'lqu'un avait une idée, merci
 
Extrait de mon gabarit
 

Code :
  1. <div id="menu">
  2. <div>Menu<br /></div>
  3. <!-- BEGIN liste_menu -->
  4. <div>{titre}</div>
  5. <!-- END liste_menu -->
  6. </div>
  7. <div id="corps">
  8. <!-- BEGIN liste_article -->
  9. {titre}<br /><br />
  10. {article}<br />
  11. <!-- END liste_article -->
  12. </div>


 
Et voici pour le moment ma page PHP qui ne gere que les titres dans le menu. Je voudrais donc pouvoir remplir le div des articles.
 
 

Code :
  1. <?php
  2. // On inclue le fichier template.inc
  3. include "./lib/phplib/php/template.inc";
  4. //On se connecte à la base de donnée
  5. include('./config/config.php');
  6. connexion();
  7. // On fait la requete SQL
  8. $sql = 'SELECT id_article, titre FROM '.PREFIXE.'articles WHERE id_rubrique = 1 ORDER BY classement';
  9. $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
  10. //Pour utiliser la commande "new template" il faut indiquer le chemin vers les gabarits (ici = ../gabarits ).
  11. //- template (string $path)
  12. $tpl = new template("./gabarits" );
  13. //Pour utiliser la commande "new template" il faut indiquer le chemin vers les gabarits (ici = ../gabarits ).
  14. //- template (string $path)
  15. $tpl->set_file("menu","presentation.html" );
  16. //Avec la commande "set_block" nous allons créer un bloc qui va correspondre au nom du traitement créé précédemment dans la page HTML. Son utilisation se fait sous cette forme : nom du gabarit, nom du traitement (dans HTML), nom du bloc.
  17. //- set_block (string $name_gabarit, string $name_HTML,string $name_bloc)
  18. $tpl->set_block('menu','liste_menu','liste_blocmenu');
  19. //On fait une boucle qui va faire un tour pour chaque enregistrement
  20. while($data = mysql_fetch_array($req)) {
  21. //Grâce à "set_var" nous allons définir les champs notés dans le code HTML.
  22. //Cette commande s'exécute sous cette forme : nom du champ (dans HTML), valeur (ici récupéré dans la base. Pour chaque différent champ nous exécutons la commande "set_var".
  23. //set_var(string $name_HTML, string $value)
  24. $tpl->set_var("titre", stripslashes($data['titre']));
  25. //Ensuite nous utilisons la commande "parse" qui va nous servir à parcourir la boucle et à remplacer les champs par les valeurs de la db. Sa syntaxe est la suivante : nom du bloc, nom du traitement (dans HTML), true.
  26. //parse(string $name_bloc, string $name_HTML, true)
  27. $tpl->parse('liste_blocmenu','liste_menu',true);
  28. }
  29. // on ferme la connexion à MySql.
  30. mysql_close();
  31. //On finit par l'affichage, avec la commande pparse, qui s'écrit sous la forme :
  32. //Nom de l'affichage, nom du gabarit.
  33. //pparse(string $name, string $name_gabarit);
  34. $tpl->pparse("affichage","menu" );
  35. ?>


 
 
Merci beaucoup pour l'aide que vous pourrez m'apporter.
 
Alexandre

Reply

Marsh Posté le 03-08-2006 à 12:35:25   

Reply

Marsh Posté le 03-08-2006 à 13:16:17    

lé pourri smoteur de template :P
 
mais a vue de nez je pense qu il faudrait faire un second set_block ^^

Reply

Marsh Posté le 04-08-2006 à 12:52:02    

mIRROR a écrit :

lé pourri smoteur de template :P
 
mais a vue de nez je pense qu il faudrait faire un second set_block ^^


 
je suis d'accord va faire un tour du coté de smarty

Reply

Sujets relatifs:

Leave a Replay

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