Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] Problem z petla while
Rafał 40x
post 21.08.2006, 20:25:30
Post #1





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 2.05.2006

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


Witam, mam problem z petla while. Napisalem ten temat w Poczatkujacy zamiast w Systemy szablonow poniewaz bardziej chodzi mi o kod php winksmiley.jpg Opisze to na porownaniu.

1a. kod php do smarty:
  1. <?php
  2. while ( $row = mysql_fetch_array ( $result )) {
  3.  
  4. $smarty -> assign ("comments", array (
  5. 'title' => $row['title'],
  6. 'value' => $row['value'],
  7. 'date' => $row['date'],
  8. 'author' => $row['author'],
  9. 'email' => $row['email'],
  10. 'www' => $row['www'] ));
  11. }
  12. ?>

1b. smarty: W smartach wyswietlam normalnie przez np. {$comments.title}

2a. zwykly kod php:
  1. <?php
  2. while ( $row = mysql_fetch_array ( $result )) {
  3. $content .= '<a href="comm.php?comm='.$row['id'].'">'.$row['title'].'</a> ('.$row['date'].')<br/>'.$row['text'].'<br />';
  4. $smarty -> assign ("content", $content);
  5. }
  6. ?>

2b. smarty: W smartach daje tyllko {$content}

-------
I mam problem, bo jak mam wiecej rekordow niz 1 to nie wyswietla wszystkich (chodzi od ad.1a i 1b). Dlaczego tak? Nie wiem.
W przykladach ad.2 wyswietlaja sie wszystkie bo operator jest taki: .=

Nie chce mieszac kodu w ad1 tak jak jest w ad2. Tak wiec jak zrobic to ad1 zeby wyswietlaly sie wszystkie rekordy?

Pozdrawiam.

Wie ktos? Czy moze dalem do zlego dzialu?
Go to the top of the page
+Quote Post
Lee
post 21.08.2006, 20:32:42
Post #2





Grupa: Zarejestrowani
Postów: 319
Pomógł: 0
Dołączył: 11.04.2006
Skąd: Chojnów

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


po co osobno wszystko dodajesz do smartów można zrobić tak
  1. <?php
  2. // pobierasz dane do tablicy comments
  3. $smarty -> assign('comments', $comments);
  4. ?>

a w smartach robisz tak
Kod
{foreach from=$comments item=comment}
{$comment.title} :: {$comment.author}
{/foreach}

- from=$(nazwa_tablicy)
- item - tak jakby klucz wpisujesz {$comment. a po kropce nazwę kolumny i zamykasz }

Pozdrawiam winksmiley.jpg


--------------------
Nie pomagam w sprawach php na GG i PW od tego jest forum!
Go to the top of the page
+Quote Post
Rafał 40x
post 21.08.2006, 23:39:48
Post #3





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 2.05.2006

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


Nie dziala to. :/

A to robie dobrze questionmark.gif :
  1. <?php
  2. while ( $data = mysql_fetch_array ( $result )) {
  3.  
  4. $smarty -> assign ( "comments", $data );
  5.  
  6. }
  7. ?>



bo jak zrobie tak jak lee powiedzial.. to mi to powiela i zamiast 1 komentarza (tyle mam w bazie) wyswietla mi chyba z 20 :/

tak wiec Lee, naprawisz moj blad? Bede wdzieczny.. kurcze wie ktos?

pomoze mi ktos?questionmark.gifquestionmark.gifquestionmark.gif

haloo

Ten post edytował Rafał 40x 21.08.2006, 21:48:07
Go to the top of the page
+Quote Post
Cysiaczek
post 22.08.2006, 05:39:31
Post #4





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Bo nie masz robic w petli, tylko raz. Najpierw zbierasz dane w pętli do tablicy i dopiero tablicę wrzucasz do smartów.


--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
Go to the top of the page
+Quote Post
Rafał 40x
post 22.08.2006, 07:50:58
Post #5





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 2.05.2006

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


Tz. jak? Bo ja juz probowalem (jak nikt nie odpowiadal w temacie) z 30 sposobow jak to zrobic. Raz dane sie wyswietlaly, raz sie powielaly..... nie wyswietlaly w calosci lub w polowie, byly errory, strona byla rozwalona, wszystko bylo nie na swojim miejscu itp.

To Cysiaczek... powiesz mi jak?
Go to the top of the page
+Quote Post
nospor
post 22.08.2006, 07:56:34
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




  1. <?php
  2. $comments = array();
  3. while ( $row = mysql_fetch_array ( $result )) {
  4. $comments[] = $row;
  5. }
  6. $smarty -> assign ( "comments", $comments );
  7. ?>


a w smarty tak jak juz pisano wczesniej:
Kod
{foreach from=$comments item=comment}
{$comment.title} :: {$comment.author}
{/foreach}


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Rafał 40x
post 22.08.2006, 08:15:47
Post #7





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 2.05.2006

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


Ok dziala, dzieki narazie
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: 15.06.2025 - 21:58