Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [smarty] Wyświetlanie tablicy
Forum PHP.pl > Forum > PHP
Bajki
Witam
mam mały problem z wyświetlaniem tablicy w smarty.
Postępowałem zgodnie z 'crash course' na stronie domowej smarty ale jednak cos nie gra. Kiedy daje po kropce nazwe kolumny z bazy danych (zawartosc tablicy pobierana jest z bazy) zamiast wybranego pola, pokazuja mi sie jedynie pierwsze znaki kazdej komorki biggrin.gif

oto moj kod :

funkcja get_news()
  1. <?php
  2. function get_news ( $limit = 3 ) {
  3.  
  4. global $news;
  5.  
  6. include('db_connect.php');
  7. $sql = mysql_query (" SELECT * FROM news LIMIT $limit ");
  8. $news = mysql_fetch_array( $sql );
  9.  
  10. }
  11. ?>


plik news.php
  1. <?php
  2. include('includes/smarty_header_main.php');
  3. include('includes/login_check.php');
  4. include('includes/news.php');
  5. $tpl-> assign('page', 'news');
  6.  
  7. get_news(3);
  8.  
  9. echo($news['id']);
  10.  
  11. $tpl->assign('news', $news);
  12. $tpl->display('news.tpl');
  13.  
  14. ?>


plik news.tpl (pokaze jedynie fragment z pokazywaniem tablicy winksmiley.jpg )
  1. {section name=item loop=$news}
  2. {strip}
  3. <tr>
  4. <td>{$news[item].content}</td>
  5. </tr>
  6. {/strip}
  7. {/section}

.content to oczywiscie nazwa jednej z kolumn

Ma ktos jakiś pomysł w czym może tkwić problem ? winksmiley.jpg
Moli
A pętla gdzie ? smile.gif
Bajki
pętla jest napisana w języku smarty (przynajmniej tak mi sie wydaje tongue.gif) czyli plik news.tpl
_olo_1984
zaraz zaraz, jeżeli zapytanie zwraca wynik, to może spróbuj zrobić tak:
  1. <?php
  2. function get_news ( $limit = 3 ) {
  3.  
  4. global $news;
  5.  
  6. include('db_connect.php');
  7. $sql = mysql_query ("SELECT * FROM news LIMIT '".$limit."'");
  8. $news = mysql_fetch_array($sql);
  9. return $news;
  10. }
  11.  
  12. ...
  13. $tpl->assign('news', get_news(3));
  14. $tpl->display('news.tpl');
  15.  
  16. ?>


a może to wina cachowania, spróbuj dać $tpl->caching = 0; i zobacz. Trudno powiedzieć, niby masz dobrze napisaną pętle.
ppp
jak dla mnie toproblem jest w funkcji get_news()
popatrz tutaj http://pl2.php.net/mysql_fetch_array
mysle ze cos taiego to powinno byc:
  1. <?php
  2. function get_news ( $limit = 3 ) {
  3. global $news;
  4. include "db_connect.php";
  5. $result = mysql_query ("SELECT * FROM news LIMIT '".$limit."'");
  6.  
  7. $news = array ();
  8. while ($row = mysql_fetch_array($result)) {
  9. $news[] = $row;
  10. }
  11. return $news;
  12. }
  13. ?>

fukcja zwraca ci tylko jeden rekord z tabeli, a zakladam ze chcesz miec tabele z ilomas rekordami, wtedy i smarty powinno zadzialac.
Bajki
ok super wszystko działa tylko coś niechciał zaakceptować tego
  1. <?php
  2. LIMIT '".$limit."'"
  3. ?>

więc zamieniłem na
  1. <?php
  2. LIMIT $limit
  3. ?>
winksmiley.jpg

Dzieki wszystkim za pomoc !
nospor
Cytat
ok super wszystko działa tylko coś niechciał zaakceptować tego
Kod PHP
1
2
3
<?php
LIMIT '".$limit."'"
bo to niepoprawna konstrukcja zapytania. w limit nie ma ciapkow.
Bajki
Hm no dobra ale teraz co zrobic jak potrzebuje
a ) sortowac wyswietlana tablice wg. daty
b ) sprawdzac, czy aktualnie wyswietlany news jest pierwszy skolei ?
nospor
ad a) order by ?
ad b ) tu masz wszystko opisane: http://www.smarty.net/manual/en/language.f...ion.section.php
Bajki
Cytat(nospor @ 2.06.2008, 21:14:30 ) *
ad a) order by ?
haha no przeciez exclamation.gif nie pomyslalem o tym ;D myslalem ze trzeba jakos z poziomu smarty

dzieki, pomogłeś 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.