login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Overgaan op TemplateEngine

Offline ikki007 - 12/09/2009 17:13
Avatar van ikki007Gouden medailleGouden medaille

PHP ver gevorderde
Hallo,


Ik probeer zelf altijd al zo netjes mogelijk html en php te scheiden, maar hoe net ik ook werk aan het eind van een project vind ik het toch altijd iets tè messy ogen.
Vandaar dat ik al snel aan een TemplateEngine zat te denken, maar hier heb ik toch ook een aantal vragen over.

De eerste vraag is natuurlijk welke TemplateEngine raden jullie aan? Ik heb zelf een beetje zitten lezen en Smarty leek mij een geschikte kandidaat.

Verder snap ik dat je bepaalde vars kan "assignen" en vervolgens integreren in je .tpl bestand, maar hoe gaat dit nou als je een array terugkrijgt of een fetch uit mysql (mysql_fetch_object bijvoorbeeld)?

Ook vraag ik me af hoe ik dingen als hieronder in Smarty oplos/doe;

  1. <?php
  2. $result = mysql_query("SELECT id, name FROM db");
  3.  
  4. if(mysql_num_rows($result) > 0) {
  5. // hier laat ik nu een mooie tabel zien
  6. } else {
  7. // hier laat ik een melding zien dat er geen resultaten zijn
  8. }


Alvast bedankt!


ikki.

6 antwoorden

Gesponsorde links
Offline Koen - 12/09/2009 21:53
Avatar van Koen PHP expert Hmm, heb nooit gebruikt gemaakt van Smarty, sorry... Met blocks in TemplatePower kan je dit gemakkelijk oplossen 
Offline flyingdragon - 12/09/2009 23:45
Avatar van flyingdragon PHP beginner
ikki007 schreef:
Hallo,
Verder snap ik dat je bepaalde vars kan "assignen" en vervolgens integreren in je .tpl bestand, maar hoe gaat dit nou als je een array terugkrijgt of een fetch uit mysql (mysql_fetch_object bijvoorbeeld)?
ikki.

Even uit het hoofd, maar dat kan bijv als volgd:
php:
$smarty->assign('results',mysql_fetch_object($sql));

smarty:
{foreach from=$results item=result}
Voornaam: {$result->voorNaam}
{/foreach}
Offline ikki007 - 12/09/2009 23:46
Avatar van ikki007 Gouden medailleGouden medaille

PHP ver gevorderde
Lijkt me sterk aangezien het een object is ipv array.

Maar daarom ga ik over op mysql_fetch_assoc wat wél een array retourneert.  
Offline flyingdragon - 12/09/2009 23:55
Avatar van flyingdragon PHP beginner
ikki007 schreef:
Lijkt me sterk aangezien het een object is ipv array.

Maar daarom ga ik over op mysql_fetch_assoc wat wél een array retourneert.  

eh, oeps 
Ik gebruik dus al tijden een db method, om de boel op te halen, en haalde een en ander dus door mekaar ('t is alweer maandje of wat geleden dat ik ermee gewerkt heb).

Ik maak dus gebruik vandevolgende db method:
  1. public function getRecords($query)
  2. {
  3. $result = $this->query($query);
  4. $rows = array();
  5. while(($row = mysql_fetch_object($result)))
  6. {
  7. $rows[] = $row;
  8. }
  9.  
  10. return $rows;
  11. }

Dan maakt hij er dus inderdaad een array van, en dan kan je er met mijn bovenstaande methode doorheen jekkeren. (of assoc gebruiken )
Offline Daiben - 13/09/2009 00:00
Avatar van Daiben Lid Als ik zelf gebruik maak van een templateengine dan gebruik ik Dwoo.

Erg fijn en zeer duidelijk en maakt gebruik van caching ed.
Offline marten - 13/09/2009 08:41 (laatste wijziging 13/09/2009 08:41)
Avatar van marten Beheerder Zelf gebruik ik TemplatePower. Dit omdat deze echt php scheidt met html. Smarty kan je in je .tpl nog gewoon php gebruiken.

  1. <?php
  2. $result = mysql_query("SELECT id, name FROM db");
  3.  
  4. if(mysql_num_rows($result) > 0) {
  5. // hier laat ik nu een mooie tabel zien
  6. } else {
  7. // hier laat ik een melding zien dat er geen resultaten zijn
  8. }


index.tpl

  1. <title>Dit is een tpl</title>
  2. </head>
  3. <!-- START BLOCK : tableHead -->
  4. <tr>
  5. <th>Kolom 1</th>
  6. <th>Kolom 2</th>
  7. <th>Kolom 3</th>
  8. </tr>
  9. <!-- START BLOCK : tableRow -->
  10. <tr>
  11. <td>{kolom1}</td>
  12. <td>{kolom2}</td>
  13. <td>{kolom3}</td>
  14. </tr>
  15. <!-- END BLOCK : tableRow -->
  16. <!-- END BLOCK : tableHead -->
  17. <!-- START BLOCK : melding -->
  18. {melding}
  19. <!-- END BLOCK : melding -->
  20. </body>
  21. </html>


index.php

  1. include_once 'templatepower.class.php';
  2. $Tpl = new TemplatePower('index.tpl');
  3.  
  4. $result = mysql_query("SELECT id, name FROM db");
  5.  
  6. if(mysql_num_rows($result) > 0) {
  7. $Tpl->newBlock('tableHead');
  8. foreach($aResult as $row) {
  9. //Er van uitgaande dat je er zelf wel een array van kan maken.
  10. $Tpl->assign('kolom1', $row['kolom1']);
  11. $Tpl->assign('kolom2', $row['kolom2']);
  12. $Tpl->assign('kolom3', $row['kolom3']);
  13. }
  14. } else {
  15. $Tpl->newBlock('melding');
  16. $Tpl->assign('melding', 'Er zijn geen resultaten gevonden');
  17. }
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.213s