Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [inne][SMARTY] pętla
Forum PHP.pl > Forum > Przedszkole
gOdi_1991
Witam mam nadzieje że tym razem znajdzie się ktoś kto mi pomoże smile.gif a więc konkretnie mam problem z pętlą w smarty ponieważ zamiast wyświetlać mi 5 ostatnich rekordów z tabeli wyświetla mi 5 takich samych ... ;/

fragment. plik php

  1.  
  2. $result = mysql_query("SELECT id, title, value_1, value_2, img FROM news ORDER BY id DESC")
  3. or die("Niepoprawne zapytanie MySQL");
  4. $number = mysql_num_rows($result);
  5.  
  6. while ($news = mysql_fetch_array($result))
  7. {
  8.  
  9. $smarty->assign("news_id" ,$news['id']);
  10. $smarty->assign("news_title" ,$news['title']);
  11. $smarty->assign('news_value1',$news['value_1']);
  12. $smarty->assign('news_img',$news['img']);
  13. }
  14.  


tpl
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <title>Aktualnosci</title>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5.  
  6. <link href="clansphere.css" rel="stylesheet" type="text/css" />
  7. <link rel="alternate" type="application/rss+xml" href="../../uploads/rss/news.xml" />
  8. </head>
  9. <div style="float: left; padding-left: 10px;width: 553px;">
  10. <table cellspacing="0" cellpadding="0" style="text-align: left;"><tr><td><b><i><font color="1f1f1f" size="3" face="Arial"> AKTUALNOŚCI...</font></i></b>
  11. <img src="templates/images/22.jpg">
  12. </td></tr></table>
  13.  
  14. <table cellspacing="0" cellpadding="0" style="text-align: left;">
  15. {section name=news loop=5}
  16.  
  17.  
  18. <tr><td><b>{$news_title}</b> <br><img style="float: left;" border="0" src="templates/images/uploads/{$news_img}"><font face="Tahoma" size="2" color="1f1f1f">{$news_value1}</font><td></tr>
  19. <tr ><td ><img src="templates/images/22.jpg"></td></tr>
  20.  
  21.  
  22. {/section}
  23. </div>
nospor
poniewaz w petli za kazdym razem nadpisujesz wartosci szablonu smile.gif

uzyj tablicy i tablice przekazuj do szablonu
gOdi_1991
zrobiłem takie coś
  1. $result = mysql_query("SELECT id, title, value_1, value_2, img FROM news ORDER BY id DESC")
  2. or die("Niepoprawne zapytanie MySQL");
  3. $number = mysql_num_rows($result);
  4.  
  5. while ($news = mysql_fetch_array($result))
  6. {
  7. $smarty->assign('news',
  8. array('id' => $news['id'],
  9. 'title' => $news['title'],
  10. 'value1' => $news['value_1'],
  11. 'value2' => $news['value_2'],
  12. 'img' => $news['img']
  13. ));
  14.  
  15. }

lecz dalej nic coś źle czego brakuje ?
gothye
zrób tak :

  1. while ($news = mysql_fetch_assoc($result))
  2. {
  3. $tablica[] = $news ;
  4.  
  5.  
  6. }


a potem
  1. $smarty->assign('zmienna',$tablica);
gOdi_1991
nic sie nie wyświetla ...
gothye
nie :
  1. {section name=news loop=5}
  2. {/section}
  3. tylko :
  4. {section name=b loop=$tablica}
  5. {tablica[b].zmienna}
  6. {/section}
gOdi_1991
Kod
Fatal error: Smarty error: [in news.tpl line 30]: syntax error: unrecognized tag: tablica[b].zmienna (Smarty_Compiler.class.php, line 446) in c:\usr\krasnal\www\sklep\demo\libs\Smarty.class.php on line 1113
gothye
nawet podstaw smarty nie masz ?
zrobiłem literówke ,a gdzie znak $ ?
nie kopiuj tylko zacznij mysleć podczas zrzynania z forum ...
gOdi_1991
jednak dalej nic nie wyświetla sciana.gif

Refresh
nospor
Ja do tablic uzywam FOREACH
http://www.smarty.net/manual/en/language.f...ion.foreach.php
gOdi_1991
aktualnie to wygląda u mnie tak lecz wyskakuje błąd

błąd
Kod
Fatal error: Call to a member function on a non-object in c:\usr\krasnal\www\sklep\demo\news.php  on line 11


php
  1. $result = mysql_query("SELECT id, title, value_1, value_2, img FROM news ORDER BY id ASC")
  2. or die("Niepoprawne zapytanie MySQL");
  3. $number = mysql_num_rows($result); /// Ilosc newsów ///
  4.  
  5. $smarty->assign('results', $db->getAssoc($result));


jeżeli potrzebny plik TPL to prześle smile.gif
nospor
jejkus...
a skad zes nagle wytrzasnal:
$db->getAssoc($result)
?
Wogole rozumiesz co piszesz czy bierzesz zlepki kodów z roznych kursów i wstawiasz na chybił trafił?
gOdi_1991
taki przykład był w manualu ...
nospor
Na 100% nie bylo w manualu napisane jednoczesne uzycie mysql_query() i nagle ni stąd ni zowąd obiektu $db
Jak juz mówiłem: wziałeś rozne przyklady w zaden ze sobą sposob nie powiązane i wkleiles na chybil trafil do swojego kodu.

Jak uzywasz mysql_query() to uzywaj funkcji z rodziny mysql_
Do pobrania danych sluzy mysql_fetch_array() - zajrzyj do manuala
gOdi_1991
wiesz Manual jest w języku angielskim ciężko dla kogoś kto uczy się Niemieckiego od podstawówki i angielskiego nie widział na oczy a jakiś badziewny rosyjski ... Ja proszę o głupi przykład tylko bo wczoraj do 3 w nocy rozkminiałem ten manual i wiesz ? nic ... NIC nie działało a jak działało to nie dało się uporządkować danych w tabelkach bo wszystko na 1 zmiennej działało co było irytujące ;/
nospor
kod php wyglada tak samo niezaleznie czy to niemiecki czy angielski...

Miales dobre uzycie pobierania z bazy danych:
Twoj kod z paru postów wczesniej:
  1. $result = mysql_query("SELECT id, title, value_1, value_2, img FROM news ORDER BY id DESC")
  2. or die("Niepoprawne zapytanie MySQL");
  3. $number = mysql_num_rows($result);
  4.  
  5. while ($news = mysql_fetch_array($result))
  6. {
  7. //......
  8. }

I nagle ni stad ni zowad rzucasz te dobre pobieranie danych i bez sensu przechodzisz na $db->getAssoc($result).
Masz sie trzymac tamtego kodu i w nim robic poprawki, które tu ci juz gothye podrzucal.
gOdi_1991
jego poprawki nic nie wyświetlały a jak mi coś wyświetlało to po prostu 1 rekord albo 5 takich samych ;/
nospor
Az przejrzalem jeszcze raz jego poprawki:
są bardzo dobre. Widac ty jak zwykle coś źle przepisales.

  1. while ($news = mysql_fetch_assoc($result))
  2. {
  3. $tablica[] = $news ;
  4.  
  5.  
  6. }
  7. $smarty->assign('news',$tablica);


a potem w szablonie przy pomocy FOREACH do ktorego juz ci linka dalem sobie odbieraj dane z tablicy.
Zyx
Goldi -> Wybacz, ale ręce opadają przy takiej argumentacji... niemieckiego się uczy, więc olewa manuala mimo iż i do PHP, i do Smarty istnieje bardzo dobra dokumentacja właśnie po niemiecku....

http://docs.php.net/manual/de/
http://www.smarty.net/manual/de/

nospor dał Ci radę... posiedź trochę nad zrozumieniem tego kodu:

http://pl.wikibooks.org/wiki/PHP

jak będziesz tak wklejać na chybił trafił bez zrozumienia, to ani Ty nigdzie nie dojdziesz, ani nawet nie mamy jak Ci pomóc, bo jak pomagać komuś, kto nie rozumie nawet po polsku tego, co się do niego pisze?
gOdi_1991
nie rozumiem działania tego FOREACH nie wiem skąd się co bierze i co ważniejsze ja potrzebuje mieć do ustawienia takie parametry jak "max=" itp i swobodną operacje zmiennymi każda osobno nie jedna za wszystkie nagle ;/

jeden głupi przykład i zrozumiem ... ja sie ucze na przykładach najszybciej i najskuteczniej
nospor
Cytat
jeden głupi przykład i zrozumiem ... ja sie ucze na przykładach najszybciej i najskuteczniej
W linku co ci podalem masz kilka głupich przykladow. Nawet ich nie ruszyles. Sorki, ale na forum nie tolerujemy takiego lenistwa.

Dodać do tego durną wymówkę o niemieckim, gdzie jak słusznie zauważył Zyx oba manuale są też po niemiecku..
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.