Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Wyświetlanie danych w tabeli HTML z bazy MySQL
Forum PHP.pl > Forum > Przedszkole
KrzysiekKCN
Witam, dziś na forum znalazłem skrypt który dzielił rekordy na 4 kolumny, co można powiedzieć skończyło moje męczarnie z wymyślaniem pętli, instrukcji itp.
Jednak jest w tym jakiś haczyk którego nie mogę znaleźć.

Na np. 26 rekordów chciał bym po 12 w rzędzie.
niestety wyświetla się z luką:


Mój kod:
  1. <?php
  2. error_reporting(E_ALL);
  3. ini_set('display_errors','1');
  4. require_once('sql.php');
  5. $zapytanie = "select * from `realizacje`";
  6. $wynik = mysqli_query($mysql, $zapytanie);
  7. $ilosc_wierszy = mysqli_num_rows(mysqli_query($mysql, $zapytanie));
  8. echo 'wierszy:'.$ilosc_wierszy;
  9. $i = 1;
  10. while ($wiersz = mysqli_fetch_array($wynik)) {
  11. $i++;
  12. if($i%12 == 1)
  13. echo '<tr>';
  14.  
  15. echo'<td style="height: 68px; width: 68px; background: url(\'images/rel_bg.png\') no-repeat center;">
  16. <center><a href="#" style="border: 0px;"><img src="realizacje/market/small_logo.png" class="rel"></a></center>
  17. </td>';
  18.  
  19. if($i%12 == 0)
  20. echo '</tr>';
  21. }
  22.  
  23. ?>


Proszę o pomoc, wskazówki cokolwiek ^^ I z góry dzięki.

P.S. Jeżeli zrobię %4 to pierwsze 3 kolumny są dobrze, a ostatnia ma 5 wyświetleń, tylko jak to zrobić żeby obrócić to na wyświetlanie rzędami.
mortus
Po pierwsze w linii 7 robisz głupotę, bo drugi raz wykonujesz zapytanie, które wykonałeś linijkę wyżej. Powinno być:
  1. $wynik = mysql_query($zapytanie);
  2. $ilosc_wierszy = mysql_num_rows($wynik);

Co do braku wypełnienia tabeli zauważ, że najpierw zmiennej $i nadajesz wartość 1 (linia 9), po to żeby zaraz na początku pętli while zwiększyć wartość tej zmiennej o 1 (linia 11). Po prostu w złym miejscu zwiększasz wartość zmiennej $i.
Dodatkowo wyświetl znaczniki <table> i </table> przed rozpoczęciem pętli while i po jej zakończeniu.
Nie będzie to wtedy jeszcze dobre rozwiązanie, bo w przypadku ostatniego wiersza zostaną utworzone dwie kolumny (<td></td>), a powinno ich być też 12, przy czym 10 pustych.
Przeszukaj lepiej forum, bo zdaje mi się, że kiedyś umieściłem tutaj cały skrypt do generowania tabeli o określonej liczbie kolumn.
bastard13
Tak na szybko:
  1. echo '<table><tr>';
  2. $i=0;
  3. while ($wiersz = mysqli_fetch_array($wynik)) {
  4. if ($i > 0 && $i % 12 === 0)
  5. echo '</tr><tr>';
  6. echo '<td>' . $wiersz . '</td>';
  7. $i++;
  8. }
  9. echo '</table>';
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.