Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Smarty] Pętla
tahat
post
Post #1





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 6.11.2003
Skąd: Łódź

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


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.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
stach
post
Post #2





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 15.02.2003
Skąd: Ziemia

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


[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}


--------------------
Warsztat: IIS 6.0 | PHP 4.3.10 && 5.0.3 | MySQL 4.1.9 | Smarty 2.6.7 | PEAR | EditPlus 2
Produkcja: FlipTiM
Go to the top of the page
+Quote Post
tahat
post
Post #3





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 6.11.2003
Skąd: Łódź

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


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





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 15.02.2003
Skąd: Ziemia

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


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


--------------------
Warsztat: IIS 6.0 | PHP 4.3.10 && 5.0.3 | MySQL 4.1.9 | Smarty 2.6.7 | PEAR | EditPlus 2
Produkcja: FlipTiM
Go to the top of the page
+Quote Post
Marcin
post
Post #5





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 15.05.2003

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


Jak wyświetlić informacje z bazy sql tak zeby byly wyswietlone jedna pod druga w ramce (z uzyciem smartow)?
Go to the top of the page
+Quote Post
showstoppa
post
Post #6





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 2.01.2004

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


[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]
Go to the top of the page
+Quote Post
Marcin
post
Post #7





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 15.05.2003

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


a co wstawić w zmiennej $db ?
Go to the top of the page
+Quote Post
Marcin
post
Post #8





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 15.05.2003

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


hmmm.....

mam jakiś error?

Fatal error: Call to undefined function: getall() in ..... on line 9
Go to the top of the page
+Quote Post
rzseattle
post
Post #9





Grupa: Przyjaciele php.pl
Postów: 554
Pomógł: 0
Dołączył: 4.04.2002
Skąd: Tychy

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


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>


--------------------
"Real children don't go hoppity-skip unless they are on drugs."
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 - 23:25