Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Smarty i dane z bazy
Forum PHP.pl > Forum > Bazy danych
daris
Nie wiem jak przy pomocy smarty wyświetlić listę z bazy.Próbowałem czegoś takiego:

  1. <?php
  2. $q = db_query("SELECT * FROM pages");
  3. $template->assign('pages', db_fetch_array($q));
  4. ?>


i w szablonie:

Kod
{section name=i loop=$pages}
<li><a href=pages.php?id={$pages[i][id]}>{$pages[i][name]}</a></li>
{/section}

i nie działa. Chodzi o to że nie wiem jak pobrać daną wartośc z wiersza. Wcześniej miałem wszystko  razem napisane (php + html) i działało a w "przepisaniu" tego na smarty utknąłem winksmiley.jpg

PS. Do dobrego działu trafiłem? tongue.gif

edit: w php było tak:
  1. <?php
  2. while($row = db_fetch_array($q)) {
  3. $content .= "<li><a href=pages.php?id=".$row["page"]." >".$row["name"]."</a></li>";
  4. }
  5. ?>



edit2: zrobiłem coś takiego:
  1. <?php
  2. $q = db_query("SELECT * FROM pages ORDER BY name");
  3. while($row = db_fetch_array($q)) {
  4. $pages[$i] = array($row["id"], $row["name"]);
  5. $i++;
  6. }
  7. $template->assign('pages', $pages);
  8. ?>


Kod
    {foreach from=$pages item=page}
        <li><a href=pages.php?id={$page[0]}>{$page[1]}</a></li>
    {/foreach}

i działa. Tylko teraz pytanko - czy nie dałoby się zapisać tego krócej? biggrin.gif
sf
Dałoby się, w select zwróć tylko id i name, a w pętli while zrób $pages[] = $row;

Poza tym jak zaczniesz używać jakiegoś ORM to będzie to coś w stylu $tablica = $obiekt->pobierzWszystko(); , ale to temat zapewne na przyszłość.
daris
Cytat
w pętli while zrób $pages[] = $row;

Właśnie dzisiaj się dowiedziałem na googlach że tak się dodaje nowy element do tablicy (array to na polskie tablica?) ;P

Do pliku includowanego za każdym razem dorzuciłem taką funkcję:
  1. <?php
  2. function sqlToArray($sql, $columns) {
  3. $q = db_query($sql);
  4. while($row = db_fetch_array($q)) {
  5. foreach($columns as $v) {
  6. $values[$v] = $row[$v];
  7. }
  8.  
  9. $array[] = $values;
  10. }
  11. return $array;
  12. }
  13. ?>

i teraz wystarczy tylko coś takiego:
  1. <?php
  2. $template->assign('pages', sqlToArray("SELECT * FROM pages ORDER BY id", array("id", "name", "text")));
  3. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.