login  Naam:   Wachtwoord: 
Registreer je!
 Forum

smarty vraagje

Offline mortal - 06/05/2008 11:20
Avatar van mortalNieuw lid Hallo allemaal ik heb een vraagje over smarty kan iemand mijn laten zien hoe ik op de juiste manier deze query krijg ? dat hij in de pagina netje alle modules er uit gooit.
Ik heb wat geprobeert maar ik denk niet dat het goed is en ik zou niet weten hoe het anders moet.

  1. <?php
  2. $query = tep_db_query("select id, model_name, style_main, style_mod, page_title from " . TABLE_MODELS . "");
  3. while($pagina = tep_db_fetch_array($query)){
  4. $Id = $pagina["id"];
  5. $Model_name = $pagina["model_name"];
  6. $Style_main = $pagina["style_main"];
  7. $Style_mod = $pagina["style_mod"];
  8. $Page_title = $pagina["page_title"];
  9.  
  10. $smarty->assign('Model_name', $Model_name);
  11. }
  12.  
  13. ?>



  1. {foreach item=Moel_name from=$Model_name} {/foreach}
  2. {section name=Model_name loop=$Model_name}{/section}

7 antwoorden

Gesponsorde links
Offline timmie_loots - 06/05/2008 12:41
Avatar van timmie_loots PHP gevorderde In het eerste stukje code moet je dit:

  1. $smarty->assign('Model_name', $Model_name);


even vervangen voor dit:

  1. $smarty->append('Model_name', $Model_name);


In de template kun je de namen dan als volgt doorlopen:

  1. {foreach from=Model_name item=name}{$name}{/foreach}
Offline mortal - 06/05/2008 14:03 (laatste wijziging 07/05/2008 08:50)
Avatar van mortal Nieuw lid Bedankt maar nu echo't hij alleen maar Model_name maar ik zou graag uit de db alle recorts laten loopen.
Offline marten - 07/05/2008 09:02
Avatar van marten Beheerder Wat heb je nou precies aan je post veranderd? Volgens mij helemaal niks. Je ontvangt dus een waarschuwing voor het onnodig naar boven brengen van je topic.
Offline mortal - 07/05/2008 09:10
Avatar van mortal Nieuw lid Ik heb een spelling correctie er uit gehaalt sorry daar voor ik ben hier niet dus wist niet dat hij naar boven zou gaan.
Offline timmie_loots - 07/05/2008 13:53
Avatar van timmie_loots PHP gevorderde Doe het dan zo:

  1. <?php
  2. $query = tep_db_query("select id, model_name, style_main, style_mod, page_title from " . TABLE_MODELS . "");
  3. while($pagina = tep_db_fetch_array($query)) {
  4. $smarty->append('paginas', $pagina);
  5. }
  6.  
  7. ?>


en:

  1. {foreach from=$paginas item=pagina}
  2. Id: {$pagina.id}
  3. Model_Name: {$pagina.model_name}
  4. Style_Main: {$pagina.style_main}
  5. Style_Mod: {$pagina.style_mod}
  6. Page_Title: {$pagina.page_title}


Zoals je ziet loop ik daar met foreach door de $paginas array, die is aangemaakt in het PHP-bestand. Hij slaat het element dat hij aan het doorlopen is op in $pagina, dat is dan weer een array die de gegevens van de pagina bevat. Zoals je ziet kun je dat gewoon aanroepen d.m.v. {$pagina.key}.

@marten: Het is natuurlijk ook wel een beetje vreemd dat een topic omhoog wordt geschopt door een edit. Over het algemeen is dat niet de manier waarop een forum werkt, en dus ook niet wat een nieuweling verwacht.
Offline mortal - 07/05/2008 15:31 (laatste wijziging 10/07/2008 10:02)
Avatar van mortal Nieuw lid Hallo allemaal ik ben weer bezig met smarty maar ik kom er nog steets niet uit het lukt me niet om rows uit de database te printen weet iemand waarom ?
  1. <?php
  2. //Roep het bestand aan waarin de Smarty classes staan
  3. require("../Smarty/Smarty.class.php");
  4.  
  5. //Maak een nieuw object aan genaamd "Smarty"
  6. $smarty = new Smarty();
  7.  
  8. $smarty->template_dir = "templates"; //Hierin staan de templatebestanden waarvan je gebruik maakt in je project
  9. $smarty->compile_dir = "templates_c"; //Hierin komen de gecompileerde templatebestanden te staan
  10. $smarty->cache_dir = "cache"; //Het is mogelijk om templates te cachen zodat ze niet telkens opnieuw gecompileerd hoeven worden. In dat geval is dit de map waar de gecachede bestanden in komen te staan.
  11. $smarty->config_dir = "configs"; //Deze map wordt gebruikt voor het opslaan van configuratie-bestanden.
  12.  
  13.  
  14.  
  15. //Toon pagina op scherm van gebruiker
  16. $smarty->display("pagina.html"); //Templatebestand wordt aangeroepen uit "templates" map
  17.  
  18. $host = "localhost";
  19. $user = "root";
  20. $pass = "";
  21. $dbdb = "cms";
  22.  
  23. if (!@mysql_select_db($dbdb, @mysql_connect($host, $user, $pass)))
  24. {
  25. echo "Er kan geen database connectie gemaakt worden..<p>";
  26.  
  27. echo "Probeer het na enkele minuten opnieuw. Wil het dan nog niet, neem dan contact met mij op.";
  28. }
  29.  
  30. $sql = "SELECT id, module_id FROM models";
  31. $res = mysql_query($sql);
  32.  
  33.  
  34. while ($row = mysql_fetch_array($res))
  35. {
  36. $id = $row["id"];
  37.  
  38. $smarty->append('$res', ress);
  39.  
  40.  
  41. }
  42.  
  43.  
  44.  
  45.  
  46. ?>



  1. <html>
  2. <body>
  3. {foreach from=$res item=ress}
  4. Id: {$res.id}
  5. {/foreach}
  6.  
  7.  
  8. </body>
  9. </html>
Offline phpenguin - 12/07/2008 10:38 (laatste wijziging 12/07/2008 10:38)
Avatar van phpenguin Nieuw lid heu, je zegt in lijntje 16 om de template te tonen.
En pas daarna verwerk je de resultaten...

Lijkt me toch beter om omgekeerd te werk te gaan (of is pagina.html hier niet relevant?)

en:
  1. $smarty->append('$res', ress);


het eerste argument dient de naam van de template variable te zijn, 2de argument is de php variable die je wilt toewijzen
( http://www.smarty.net/manual/en/api.append.php )
dus:
  1. $smarty->append('res', $res);
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.267s