Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL][Smarty] Lista
Forum PHP.pl > Forum > Przedszkole
Maxik
Przy pisaniu strony ze smarty natknąłem się na problem, mianowicie nie wiem jak wykorzystać foreach lub section do wygenerowania listy. Wg. autora tego artykułu: http://www.webtips.pl/post5950.html tablica zwracana przez wynik zapytania(?)jest dwuwymiarowa, nigdy się z tym nie spotkałem. Dodatkowo chciałbym użyć innego stylu co linię, używając takiej metody:

  1. <?php
  2. while($row=mysql_fetch_assoc($res)){
  3.  
  4. if($i==1){
  5.  
  6. echo 'class=tbr1';
  7.  
  8. $i=0;
  9.  
  10. } elseif($i==0){
  11.  
  12. echo 'class=tbr0';
  13.  
  14. $i++;
  15.  
  16. }
  17.  
  18. }
  19. ?>




PS: Co jest z pisaniem tematu, że jeden enter przeskakuje o 2 linie?
decha-design
hmm ... nie wiem dokladnie o co ci chodzi, ale najlepiej w smarty zrobić:
  1. <?php
  2. {assign var=i value=1}
  3. {foreach item=row from=$rows}
  4.  {assign var=i value=$i+1}
  5.  {if $i mod 2 == 0}
  6. <div class="c1">...</div>
  7.  {else}
  8. <div class="c2">...</div>
  9.  {/if}
  10. {/foreach}
  11. ?>


powinno dzialac ... kod php juz raczej zrobisz sam ...
Maxik
Czyli jeśli dobrze rozumiem to:
1. przypisuję zmiennej i wartość 1, wolałbym 0 smile.gif
2. pętla, $rows to mysql_fetch_assoc
3. instrukcja warunkowa w smarty

Średnio mnie to przekonuje, wyjaśni to może szerzej smile.gif
Shili
Co do innego stylu co linię proponuję zapoznać się z {cycle}. Ładniejsze, przyjemniejsze i prostsze w użyciu niż instrukcja warunkowa.
JoShiMa
W ogóle nie widzę powodu używania w smarty foreach.
W php trzeba zrobić tak:
  1. <?php
  2. while($row=mysql_fetch_assoc($res)){
  3. rows[] = $row;
  4. }
  5.  
  6. $szablon->assign('rekordy', $rows);
  7. ?>


potem w smarty pętla section i zgrabne wykorzystanie jej indeksu:
  1. {section name=i loop=$rekordy}
  2. {if smarty.section.i.index is is even}
  3. <div class="c1">...</div>
  4. {else}
  5. <div class="c2">...</div>
  6. {/if}
  7. {/section}


Co do wykorzystania w tej pętli danych z tablicy to jeśli tablica jest dwuwymiarowa i klucze są numeryczne robi się to w ten sposób
$rows[i][0]
$rows[i][1]
$rows[i][2]
$rows[i][3]
$rows[i][4]

Nie wiem ile tam masz pól w jednym rekordzie
Jeśli zaś w jednym ekordzie masz tablicę asocjacyjną to wykorzystujesz jej klucze w następujący sposób:
$rows[i].klucz1
$rows[i].klucz2
$rows[i].klucz3
$rows[i].klucz4
Maxik
Dzięki, a jak wykorzystać te zmienne w smarty? {$rows[i].klucz} chyba nie zadziała, nie?
Heweliusz
Można tak:
Kod
{$rows.i.klucz}
{$rows.i.klucz2}
JoShiMa
Cytat(Maxik @ 16.08.2008, 20:42:24 ) *
Dzięki, a jak wykorzystać te zmienne w smarty? {$rows[i].klucz} chyba nie zadziała, nie?

Powinno zadziałać.
Maxik
Jeśli pętla ma tylko dodawać do tablicy to spokojnie mogę umieścić to w sterowniku bazy danych biggrin.gif
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.