Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Smarty] Pętla
Forum PHP.pl > Forum > PHP
tahat
Na początku zaznaczę, że zapoznałęm się z treścią tego: http://forum.php.pl/viewtopic.php?t=6514.

Czy ktoś może prosto i bez odsyłania do dokumentacji Smarty wytłumaczyć jak wyświetlić wewnątrz szablonu Smarty dane z pętli?

Mam następujący przykład:

[php:1:0c2288eb18]<?php
$cf = file(news.txt);
$count = count ($cf);
for ($t=$count-1; $t>=0; $t--)
{
$news = explode ("$separator", $cf[$t]);
echo ("$news[0], $news[1], $news[2], $news[3], $news[4]");
}
?>[/php:1:0c2288eb18]

Co zrobić żeby te dane wstawić do szablonu Smarty?
W jaki sposób je tam przekazać i jak je tam obrobić za pomocą Smarty?

Pozdrawiam i z góry dzięki.
stach
[php:1:02040f0c80]<?php
$smarty->assign(array(
News => $news
));
?>[/php:1:02040f0c80]

a w templecie

Kod
{section name=News loop=$News}

{$News[News]}

<br>

{/section}
tahat
Dzięki stach, ale nie do koćna o to mi chodziło. Mój problem polega na tym, że po wyświetleniu jednego wpisu, na które składają się dane z podanej przykładowo przez Ciebie tablicy $news, chcę żeby smarty wyświetliło następny wpis z pętli for, tzn. z tablicy "wyższego rzędu" $cf.

Teraz wywala mi błąd:

Cytat
Fatal error: Cannot redeclare class smarty in /home/tahat/public_html/work/Smarty.class.php on line 74
stach
Jesli dobrze Cie zrozumialem i dobrze kapuje blad jaki wywala Ci smarty to zle umiesciles assign-a smartow... Powinno to wygladac tak:

[php:1:c28d9793c4]<?php
define('SMARTY_DIR','../core/Smarty/');
define('TEMPLET_DIR','../templety/');
include_once(SMARTY_DIR.'Smarty.class.php');

$tpl = new Smarty;
$tpl->compile_check = true;
$tpl->template_dir = $_home_path.TEMPLET_DIR;
$tpl->compile_dir = $_home_path.TEMPLET_DIR.'/templety_c/';
$tpl->config_dir = $_home_path.TEMPLET_DIR.'/configs/';
$tpl->cache_dir = $_home_path.TEMPLET_DIR.'/cache/';

$cf = file('news.txt');
$count = count ($cf);
for ($t=$count-1; $t>=0; $t--)
{
$news[] = explode ("|", $cf[$t]);
}

$tpl->assign(array(
News => $news
));

$tpl->display('ntest.tpl');
?>[/php:1:c28d9793c4]

a Templet ntest.tpl w takim razie powinien wygladac jakos tak:

[xml:1:c28d9793c4]
{section name=News loop=$News}
{section name=Newsin loop=$News[News]}
{$News[News][Newsin]}
<br>
{/section}
{/section}
[/xml:1:c28d9793c4]

Chyba chodzi Ci o to smile.gif
Marcin
Jak wyświetlić informacje z bazy sql tak zeby byly wyswietlone jedna pod druga w ramce (z uzyciem smartow)?
showstoppa
[php:1:4a23304dcd]<?php
$sql = "select * from tabela";
$dane = $db -> getAll($sql, DB_FETCHMODE_ASSOC);
$smarty -> assign("dane", $dane);
?>[/php:1:4a23304dcd]


[xml:1:4a23304dcd]
<table>
<tr>
<td>
{section name=i loop=$dane}
{$dane[i].nazwa_kolumny_z_bazy}
{/section}
</td>
</tr>
</table>
[/xml:1:4a23304dcd]
Marcin
a co wstawić w zmiennej $db ?
Marcin
hmmm.....

mam jakiś error?

Fatal error: Call to undefined function: getall() in ..... on line 9
rzseattle
Cytat
hmmm.....

mam jakiś error?

Fatal error: Call to undefined function: getall() in ..... on line 9


Bo to jest przyklad wykorzystujacy obiekt db winksmiley.jpg . Gesli chcesz to zrobic na "golym" kodzie to

[php:1:a5dcaa7e5b]<?php
$queryl = "select * from tabela";
$r = mysql_query( $query );
while( $line = mysql_fetch_assoc( $r ) ){
$wynik[] = $line;
}
$smarty -> assign("dane", $wynik);
$smarty->display();
?>[/php:1:a5dcaa7e5b]
Kod
<table>

   {section name=i loop=$dane}

    <tr>

      <td>{$dane[i].kolumna1}</td><td>{$dane[i].kolumna2}</td>...

    </tr>

   {/section}    

</table>
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.