Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Smarty i dane z bazy
daris
post
Post #1





Grupa: Zarejestrowani
Postów: 78
Pomógł: 4
Dołączył: 7.01.2008

Ostrzeżenie: (0%)
-----


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

Ten post edytował daris 17.01.2008, 21:00:48


--------------------
FluxBB - lekki i szybki skrypt forum | Polskie wsparcie FluxBB
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
sf
post
Post #2





Grupa: Zarejestrowani
Postów: 1 597
Pomógł: 30
Dołączył: 19.02.2003
Skąd: Tychy

Ostrzeżenie: (0%)
-----


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ść.


--------------------
Zapraszam na mój php blog, tworzenie stron.
Go to the top of the page
+Quote Post
daris
post
Post #3





Grupa: Zarejestrowani
Postów: 78
Pomógł: 4
Dołączył: 7.01.2008

Ostrzeżenie: (0%)
-----


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. ?>


Ten post edytował daris 18.01.2008, 15:58:53


--------------------
FluxBB - lekki i szybki skrypt forum | Polskie wsparcie FluxBB
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 15:32