Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Problem z petla while
Forum PHP.pl > Forum > Przedszkole
Rafał 40x
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?
Lee
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
Rafał 40x
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
Cysiaczek
Bo nie masz robic w petli, tylko raz. Najpierw zbierasz dane w pętli do tablicy i dopiero tablicę wrzucasz do smartów.
Rafał 40x
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?
nospor
  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}
Rafał 40x
Ok dziala, dzieki narazie
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.