Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MYSQL][Smarty] Lista
Maxik
post 15.08.2008, 23:06:57
Post #1





Grupa: Zarejestrowani
Postów: 726
Pomógł: 129
Dołączył: 10.01.2008
Skąd: Gdańsk

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


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?
Go to the top of the page
+Quote Post
decha-design
post 15.08.2008, 23:17:20
Post #2





Grupa: Zarejestrowani
Postów: 415
Pomógł: 46
Dołączył: 26.05.2007
Skąd: Sandomierz

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


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

Ten post edytował decha-design 15.08.2008, 23:18:48


--------------------
Go to the top of the page
+Quote Post
Maxik
post 15.08.2008, 23:33:15
Post #3





Grupa: Zarejestrowani
Postów: 726
Pomógł: 129
Dołączył: 10.01.2008
Skąd: Gdańsk

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


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


--------------------
Pomogłem? Kliknij przycisk Pomógł pod pomocnym Ci postem.
http://maxik.me/
Go to the top of the page
+Quote Post
Shili
post 15.08.2008, 23:40:30
Post #4





Grupa: Zarejestrowani
Postów: 1 085
Pomógł: 231
Dołączył: 12.05.2008

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


Co do innego stylu co linię proponuję zapoznać się z {cycle}. Ładniejsze, przyjemniejsze i prostsze w użyciu niż instrukcja warunkowa.

Ten post edytował Shili 15.08.2008, 23:41:43
Go to the top of the page
+Quote Post
JoShiMa
post 16.08.2008, 17:33:11
Post #5





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

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


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


--------------------
Go to the top of the page
+Quote Post
Maxik
post 16.08.2008, 19:42:24
Post #6





Grupa: Zarejestrowani
Postów: 726
Pomógł: 129
Dołączył: 10.01.2008
Skąd: Gdańsk

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


Dzięki, a jak wykorzystać te zmienne w smarty? {$rows[i].klucz} chyba nie zadziała, nie?


--------------------
Pomogłem? Kliknij przycisk Pomógł pod pomocnym Ci postem.
http://maxik.me/
Go to the top of the page
+Quote Post
Heweliusz
post 16.08.2008, 20:22:33
Post #7





Grupa: Zarejestrowani
Postów: 46
Pomógł: 8
Dołączył: 19.03.2007
Skąd: z nad Jarugi

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


Można tak:
Kod
{$rows.i.klucz}
{$rows.i.klucz2}


--------------------
Aktualny projekt: Nauka OOP :)
Go to the top of the page
+Quote Post
JoShiMa
post 17.08.2008, 13:54:11
Post #8





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

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


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ć.


--------------------
Go to the top of the page
+Quote Post
Maxik
post 17.08.2008, 14:04:18
Post #9





Grupa: Zarejestrowani
Postów: 726
Pomógł: 129
Dołączył: 10.01.2008
Skąd: Gdańsk

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


Jeśli pętla ma tylko dodawać do tablicy to spokojnie mogę umieścić to w sterowniku bazy danych biggrin.gif


--------------------
Pomogłem? Kliknij przycisk Pomógł pod pomocnym Ci postem.
http://maxik.me/
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 Wersja Lo-Fi Aktualny czas: 7.07.2025 - 13:32