Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL][PHP] pętla dla wyświetlania rekordów
Forum PHP.pl > Forum > Przedszkole
swiru_
witam,

mam tabele z newsami, chce zrobic trzy divy, w ktorych bede wyswietlal 15 najnowszych tytulow wpisow w postaci linkow, w kardzym divie po 5 tytulow, petla wyglada tak:

  1. <?php
  2. $query = 'SELECT title FROM tabela_news ORDER by date DESC';
  3. $result = mysql_query($query);
  4. $N = mysql_num_rows($result); //zapisz ilosc rekordow do zmiennej
  5. $row = mysql_fetch_assoc($result);
  6. $N2 = ceil($N/5); //zaokraglaj w gore dzielenie przez 5, 1 - 5 = 1; 6 - 10 = 2; 11 - 15 = 3
  7.  
  8. // wyswietlanie divow i linkow
  9. for ($i=0; $i<$N2; $i++)
  10. {
  11. echo ('<div id="'.$i.'" class="t_div">');
  12. echo ('<ul class="link_t">');
  13. for ($j=0; $j<5; $j++)
  14. {
  15. if (($j + $i*5)<$N)
  16. {
  17. echo ('<li>cos</li>');
  18. }
  19. }
  20. echo ('</ul></div>');
  21. }
  22.  
  23.  
  24.  
  25.  
  26.  
  27. ?>


i teraz, jak powinna wygladac petla3 dla wyswietlania wartosci w
  1. <li> </li>
zeby po pierwszym wykonaniu petli2 wyswietlil 5 najnowszych tytulow, potem po drugim wykonaniu petli2 w petli3 wyswietlil NASTĘPNE 5 wpisow itd...

pozdrawiam

athei
W zapytaniu daj LIMIT 15, bo potrzebujesz tylko 15 wyników.
W pętli while pobierz wszystkie tytuły do tablicy z tytułami
Kod
       $tytuly = array();
        while ($row = mysql_fetch_assoc($result)) {
          $tytuly[] = $row['title'];  
        }

W pętli for wypisz tak jak chcesz
Kod
        $k = 0;
        for ($i =0; $i<3; $i++)
        {
          echo '<div><ul>';
          for ($j=0; $j<5; $j++)
          {
            echo '<li>', $tytuly[$k] ,'</li>';
            $k++;
          }      
          echo '</ul></div>';
        }
swiru_
niby wszystko ok ale nie do konca...

  1.  
  2. <?php
  3. $query = 'SELECT title, id FROM tabela_news ORDER by date DESC LIMIT 15';
  4. $result = mysql_query($query);
  5. $N = mysql_num_rows($result); //zapisz ilosc rekordow do zmiennej
  6. $row = mysql_fetch_assoc($result);
  7. $N2 = ceil($N/5); //zaokraglaj w gore dzielenie przez 5, 1 - 5 = 1; 6 - 10 = 2; 11 - 15 = 3
  8. $titles = array();
  9. while ($row = mysql_fetch_assoc($result))
  10. {
  11. $titles[] = $row['title'] ;
  12. }
  13.  
  14. // wyswietlanie divow i linkow
  15. $k = 0;
  16. for ($i=0; $i<$N2; $i++)
  17. {
  18. echo ('<div id="'.$i.'" class="t_div">');
  19. echo ('<ul class="link_t">');
  20. for ($j=0; $j<5; $j++)
  21. {
  22. if (($j + $i*5)<$N)
  23. {
  24. echo ('<li>'.$titles[$k].'</li>');
  25. $k++;
  26. }
  27. }
  28. echo ('</ul></div>');
  29. }
  30.  
  31.  
  32.  
  33.  
  34.  
  35. ?>
  36.  


tak teraz wyglada kod... wszystko ladnie pieknie ale wyswietla o jedna wartosc za malo... podejzewam z ktoras z tablic zaczyna liczenie od 1... tylko ktora ;]
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.