login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Call to a member function

Offline Stijn - 02/11/2005 17:35
Avatar van StijnPHP expert --news.php--
  1. <?php
  2. /*$tpl->newBlock("pagina");
  3.  
  4. $tpl->assign("p_titel", "DJ Tiesto");
  5. $tpl->assign("p_content", "DJ Tiesto is opnieuw uitgekozen tot best world DJ!");
  6.  
  7. $tpl->newBlock("foto");
  8. $tpl->assign("afbeelding", "images/news/tiesto.jpg");
  9. $tpl->assign("i", 1);//id van de foto
  10.  
  11. */
  12.  
  13. function last_3_news()
  14. {
  15. $query = mysql_query("SELECT nieuws.id AS id, nieuws.titel AS titel, nieuws.intro AS intro, nieuws.poster AS poster, members.id AS m_id FROM nieuws INNER JOIN members ON nieuws.poster = members.username ORDER BY nieuws.id DESC LIMIT 0,3");
  16. $i = 1;
  17.  
  18. while($row = mysql_fetch_assoc($query))
  19. {
  20.  
  21. $tpl->newBlock("pagina");
  22. $tpl->assign("p_titel", $row['titel']);
  23. $tpl->assign("p_content", $row['intro']."<br><hr align=\"center\" width=\"70%\"><div align=\"right\">Auteur: <a href=\"?page=leden/profiel&id=".$row['m_id']."\" class=\"r\">".$row['poster']."</a> - [<a href=\"?page=news&action=artikel&id=".$row['id']."\" class=\"r\">Lees verder</a>]</div>");
  24.  
  25. $tpl->newBlock("foto");
  26.  
  27. if(file_exists("images/news/".$row['id'].".jpg"))
  28. {
  29. $tpl->assign("afbeelding", "images/news/".$row['id'].".jpg");
  30. }
  31. else
  32. {
  33. $tpl->assign("afbeelding", "images/news/0.jpg");
  34. }
  35. $tpl->assign("i", $i);
  36.  
  37. $i++;
  38. }
  39. }
  40.  
  41. switch($_GET['action'])
  42. {
  43. default:
  44. last_3_news();
  45. break;
  46. }
  47. ?>


De PowerTemplate wordt gestart in de config en de includes werken goed, maar wanneer ik $tpl->assign(); in een functie gebruikt geeft hij volgende error:
Citaat:
Fatal error: Call to a member function newBlock() on a non-object in c:wampwwwtorenstadfmpagesnews.php on line 21

Als ik die functie weg doe (en ook de switch...case...) dan doet hij het wel, maar hoe los ik zoiets op, versta het niet 

mvg, de OOP-newbie 

12 antwoorden

Gesponsorde links
Offline Maarten - 02/11/2005 17:39 (laatste wijziging 02/11/2005 17:39)
Avatar van Maarten Erelid global $tpl;

bovenaan in je functie zetten.
Offline Stijn - 02/11/2005 17:41
Avatar van Stijn PHP expert thx Murfy (dus daarvoor dient Global, nogmaals thx)
Offline Thomas - 02/11/2005 18:43
Avatar van Thomas Moderator Tis trouwens niet de bedoeling om HTML in je PHP-code te zetten (iig niet bij TemplatePower, zoals in regel 23).

Een template-engine dient er juist voor om code en layout 100% te scheiden.
Offline Stijn - 02/11/2005 21:06 (laatste wijziging 02/11/2005 21:08)
Avatar van Stijn PHP expert ja dat ik ook, maar dat is ook een tabel hé wat ik aanroep, dus als ik tekst in het vet wil zetten, moet er wel <strong> toegevoegd worden...

trouwens is HTML ook geen code en code zorgt er toch voor dat je layout hebt...? 
Offline Ontani - 02/11/2005 21:09
Avatar van Ontani Gouden medailleGouden medailleGouden medailleGouden medaille

-1
Citaat:
trouwens is HTML ook geen code en code zorgt er toch voor dat je layout hebt...?


als je er zo over denkt kan je beter niet met templates werken
Offline zwobbel - 03/11/2005 09:48
Avatar van zwobbel PHP gevorderde Mja ik vraag me ook af als je een tekst dik wil hebben hoe moet je dit dan toepassen in template systeem?
Want al mijn tabellen staan nu in Tpl files maar de plaats waar ik mijn tekst in roep ,en een stuk tekst in het dik wil hebben staan.
Ben ik toch genoodzaakt html toetepassen in dat stuk?
Offline Rens - 03/11/2005 09:55
Avatar van Rens Gouden medaille

Crew algemeen
Nee hoor.
Je kunt ook gewoon een extra block aanmaken.

  1. <table>
  2. <!-- START BLOCK : NORMAAL -->
  3. <tr>
  4. <td>
  5. {TEXT_NORMAAL}
  6. </td>
  7. </tr>
  8. <!-- END BLOCK : NORMAAL -->
  9. <!-- START BLOCK : VET -->
  10. <tr>
  11. <td>
  12. <strong>
  13. {TEXT_VET}
  14. </strong>
  15. </td>
  16. </tr>
  17. <!-- END BLOCK : VET -->
  18. </table>


  1. <?PHP
  2. $cTemplate->newBlock("TEXT_NORMAAL");
  3. $cTemplate->assign("TEXT_NORMAAL", "Text");
  4.  
  5. $cTemplate->newBlock("TEXT_VET");
  6. $cTemplate->assign("TEXT_VET", "Text");
  7. ?>
Offline Ibrahim - 03/11/2005 10:09
Avatar van Ibrahim PHP expert Ik ben ook net begonnen met TemplatePower en ik kan het echt niet uit de tutorials uitmaken welke bestand ik nou moet oproepen...

Moet ik het php bestand oproepen of de tpl of een bestand aanmaken waar je hem include? ik snap het niet 
Offline Stijn - 03/11/2005 11:41
Avatar van Stijn PHP expert eerst include je die TemplatePower
  1. <?
  2. include("template/class.TemplatePower.inc.php");
  3. ?>


daarna start je het:
  1. <?
  2. $tpl = new TemplatePower("template/template.tpl");
  3. $tpl->prepare();
  4. ?>


Je voert beetje assigns uit, blocks en dan op het laatste zet je dit:
  1. <?
  2. $tpl->printToScreen();
  3. ?>
Offline Ibrahim - 03/11/2005 11:42
Avatar van Ibrahim PHP expert maar wat laat ik zien op de site de index.php of index.tpl
Offline Stijn - 03/11/2005 11:44
Avatar van Stijn PHP expert je hebt bv de index.php. Je hebt je layout van de site in een .tpl bestand gestopt. Nu wil je die layout op de index hebben met paar van die assigns/blocks.

je zet dan die code (die ik daarnet getikt heb) in de index.php
Offline Ibrahim - 03/11/2005 15:46
Avatar van Ibrahim PHP expert tnx hij werkt :)
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.248s