Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Pętla smarty
Forum PHP.pl > Forum > Przedszkole
Wieczny
Witam czy poprawnie napisałem pętle w smarty ?

  1. <?php
  2. {foreach from=$news item=item}
  3.  
  4. {$item}
  5.  
  6. {/foreach}
  7. ?>


Problem jest taki że pokazuje ostatni rekord w bazie zamiast wszystkie blinksmiley.gif
Spykaj
<?php i ?> samo się dodało ? Możesz używać [ code] i [/code]

A co do pętli, to powinna działać. Widocznie wcześniej masz błąd i tablica jest tak naprawdę jednoelementowa tongue.gif sprawdź czy jak dopisujesz coś to masz $tab[] zamiast $tab
Wieczny
Jakie są jeszcze inne pętle do smarty ? ;d

no dobra sprawa wygląda tak plik news.php

  1. <?php
  2. require_once ('_mysql.php');
  3. require_once ('./lib/Smarty/Smarty.class.php');
  4. require_once ('_function.php');
  5.  
  6. $smarty = new Smarty;
  7.  
  8. $news = mysql_query("SELECT id, title, news, date, user, level
  9. FROM wpp_news");
  10.  
  11. $row = mysql_fetch_array($news);
  12.  
  13.  
  14. $smarty -> assign('results', $db->getAssoc($row));
  15. $smarty -> display('news.tpl');
  16. ?>




a to jest TPL

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  5. <meta name="Description" content="Witam na mojej stronie">
  6. <meta name="Keywords" content="programowanie">
  7. <meta name="Author" content="gOdi">
  8. <title>gOdi</title>
  9. <link rel="Stylesheet" type="text/css" href="style.css">
  10. </head>
  11. <div id='titlesite'>O nas</div>
  12.  
  13.  
  14.  
  15.  
  16. {foreach key=cid item=con from=$results}
  17. {$con.news}
  18. {foreachelse}
  19. Brak newsów
  20. {/foreach}


Błąd jest taki
Kod
Fatal error: Call to a member function on a non-object in /var/www/sites/yoyo.pl/s/t/studiogodi/news.php on line 14
k_@_m_i_l
Odnosisz sie w tym wiersuz
Kod
$smarty -> assign('results', $db->getAssoc($row));

do
Kod

   $db->getAssoc($row)

i widocznie $db niej jest zadeklarowanym obiektem.Stąd ten błąd.
Wieczny
ja w obiektowym jestem lewy, w manualu nie znalazłem nic co by mi pomogło więc pytam was jak to zrobić, chyba że mogę to zrobić bez obiektowego sadsmiley02.gif
phpion
A to w taki sposób pobiera się wszystkie rekordy jakie zwróciło zapytanie? Może jakiś while by się tam przydał...
Wieczny
tylko że jak chce pętle w smarty a nie w php
Shili
I co z tego, że chcesz, skoro nie do końca wiesz, jak działają smarty.
Smarty wyświetlają tylko to, co zostało im przypisane za pomocą php, czyli jeśli nie przypisałeś do zmiennej smarty tablicy, a tylko jeden rekord, bo na poziomie php zabrakło Ci pętli, to chcenie nic nie pomoże i pętla smarty też nic nie pomoże.
Wieczny
Kod
ja w obiektowym jestem lewy, w manualu nie znalazłem nic co by mi pomogło więc pytam was jak to zrobić, chyba że mogę to zrobić bez obiektowego sadsmiley02.gif


Pytałem o coś innego i nikt nie odpisał ;d
bim2
Umiesz pętle while? To ją zrób.
  1. <?php
  2. while($r = mysql_fetch_array($news))
  3. {
  4.  $rows[] = $r;
  5. }
  6.  $smarty -> assign('results', $rows);
  7.  $smarty -> display('news.tpl');
  8. ?>
Wieczny
Tylko to nie działa i to już dawno robiłem
revyag
To nie ma ze smarty nie wspólnego. Problem masz na etapie pobierania danych. Zrób sobie zwykłą pętlę wyświetlającą zawartość tablicy w której masz dane z bazy i sprawdź czy jest ok.
Wieczny
Jest OK problem jest w pętli kur .... sciana.gif
phpion
Wszyscy ci właśnie starają się to uzmysłowić...
Wieczny
Robie tak jak piszecie i guzik .... gdy robie normalnie pętle to wyświetla mi wszystko elegancko gdy robie już tablice to kapusta
Spykaj
Spróbuj tak:

  1. <?php
  2. require_once ('_mysql.php');
  3. require_once ('./lib/Smarty/Smarty.class.php');
  4. require_once ('_function.php');
  5.  
  6. $smarty = new Smarty;
  7.  
  8. $news = mysql_query("SELECT id, title, news, date, user, level
  9. FROM wpp_news");
  10. $res = array();
  11. while($res[] = mysql_fetch_row($news));
  12.  
  13. $smarty -> assign('news', $res);
  14. $smarty -> display('news.tpl');
  15. ?>
Qleer
Spróbuj z section, mi ona bardziej przypasowała winksmiley.jpg

Kod
{section name=item loop=$news}    
{$news[item].jakastabelka}
{$news[item].trescnewsa}
{/section}


Co do konstrukcji zapytania tak jak bim2 napisał:

  1. <?php
  2. while($r = mysql_fetch_array($news))
  3. {
  4.  $rows[] = $r;
  5. }
  6.  $smarty -> assign('results', $rows);
  7.  $smarty -> display('news.tpl');
  8. ?>


I będzie działać na 100 winksmiley.jpg
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.