Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Pętla smarty
Wieczny
post
Post #1





Grupa: Zarejestrowani
Postów: 191
Pomógł: 1
Dołączył: 21.03.2007

Ostrzeżenie: (60%)
XXX--


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
Go to the top of the page
+Quote Post
Spykaj
post
Post #2





Grupa: Zarejestrowani
Postów: 104
Pomógł: 3
Dołączył: 30.05.2008
Skąd: Białystok

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


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


--------------------
?>
Go to the top of the page
+Quote Post
Wieczny
post
Post #3





Grupa: Zarejestrowani
Postów: 191
Pomógł: 1
Dołączył: 21.03.2007

Ostrzeżenie: (60%)
XXX--


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
Go to the top of the page
+Quote Post
k_@_m_i_l
post
Post #4





Grupa: Zarejestrowani
Postów: 349
Pomógł: 72
Dołączył: 22.01.2008
Skąd: Wadowice/Oświęcim

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


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.

Ten post edytował k_@_m_i_l 29.06.2008, 08:13:34


--------------------
"PHP to człowiek. MySQL to również człowiek."
Go to the top of the page
+Quote Post
Wieczny
post
Post #5





Grupa: Zarejestrowani
Postów: 191
Pomógł: 1
Dołączył: 21.03.2007

Ostrzeżenie: (60%)
XXX--


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
Go to the top of the page
+Quote Post
phpion
post
Post #6





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




A to w taki sposób pobiera się wszystkie rekordy jakie zwróciło zapytanie? Może jakiś while by się tam przydał...
Go to the top of the page
+Quote Post
Wieczny
post
Post #7





Grupa: Zarejestrowani
Postów: 191
Pomógł: 1
Dołączył: 21.03.2007

Ostrzeżenie: (60%)
XXX--


tylko że jak chce pętle w smarty a nie w php

Ten post edytował Wieczny 29.06.2008, 11:25:59
Go to the top of the page
+Quote Post
Shili
post
Post #8





Grupa: Zarejestrowani
Postów: 1 085
Pomógł: 231
Dołączył: 12.05.2008

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


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.
Go to the top of the page
+Quote Post
Wieczny
post
Post #9





Grupa: Zarejestrowani
Postów: 191
Pomógł: 1
Dołączył: 21.03.2007

Ostrzeżenie: (60%)
XXX--


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
Go to the top of the page
+Quote Post
bim2
post
Post #10





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 152
Dołączył: 9.04.2006
Skąd: Berlin

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


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


--------------------
Go to the top of the page
+Quote Post
Wieczny
post
Post #11





Grupa: Zarejestrowani
Postów: 191
Pomógł: 1
Dołączył: 21.03.2007

Ostrzeżenie: (60%)
XXX--


Tylko to nie działa i to już dawno robiłem
Go to the top of the page
+Quote Post
revyag
post
Post #12





Grupa: Przyjaciele php.pl
Postów: 2 258
Pomógł: 16
Dołączył: 21.09.2004
Skąd: Kielce

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


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.


--------------------
-------------

------
Go to the top of the page
+Quote Post
Wieczny
post
Post #13





Grupa: Zarejestrowani
Postów: 191
Pomógł: 1
Dołączył: 21.03.2007

Ostrzeżenie: (60%)
XXX--


Jest OK problem jest w pętli kur .... sciana.gif
Go to the top of the page
+Quote Post
phpion
post
Post #14





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Wszyscy ci właśnie starają się to uzmysłowić...
Go to the top of the page
+Quote Post
Wieczny
post
Post #15





Grupa: Zarejestrowani
Postów: 191
Pomógł: 1
Dołączył: 21.03.2007

Ostrzeżenie: (60%)
XXX--


Robie tak jak piszecie i guzik .... gdy robie normalnie pętle to wyświetla mi wszystko elegancko gdy robie już tablice to kapusta
Go to the top of the page
+Quote Post
Spykaj
post
Post #16





Grupa: Zarejestrowani
Postów: 104
Pomógł: 3
Dołączył: 30.05.2008
Skąd: Białystok

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


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


Ten post edytował Spykaj 29.06.2008, 14:00:34


--------------------
?>
Go to the top of the page
+Quote Post
Qleer
post
Post #17





Grupa: Zarejestrowani
Postów: 51
Pomógł: 7
Dołączył: 6.06.2008
Skąd: Gdzieś na dysku twardym.

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


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

Ten post edytował Qleer 29.06.2008, 15:47:54


--------------------
zmoderowano
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 - 04:41