Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Dynamiczne dzielenie tabeli
Forum PHP.pl > Forum > Przedszkole
shpaque
Witam serdecznie,
mam takie pytanko, bo nawet nie wiem jak i gdzie szukać w razie czego. Chodzi mi o wyświetlenie rekordów np z pliku w tabeli, ale nie na zasadzie wierszy (w row-ach), ale np na zasadzie zbudowania dynamicznej tabeli, która będzie miała 3 kolumny. Jak zrobić, aby tak się wyświetlało? Ale po kolei. Mam sobie taką pętlę:

  1. echo "<table id='layer-table'>";
  2. echo "<tr><th>ZDJĘCIE</th>";
  3. echo "<th>MARKA / FIRMA</th>";
  4. echo "<th>NAZWA</th>";
  5. echo "<th>OPIS</th></tr>";
  6.  
  7. for ($i = $count - 1; $i >= 0; $i--)
  8. {
  9. echo "<tr class='row' onclick="."location.href='./karta.php?cat=$cat&id=$models[$i]'".">\n";
  10. echo "<td><img src='./db/katalog/" . $models[$i] . ".jpg' height='60px'></td>\n";
  11. echo "<td>" . $markas[$i] . "</td>\n";
  12. echo "<td><b>" . $nazwas[$i] . "</b></td>\n";
  13. echo "<td>" . substr($opiss[$i], 0, 200) . "</td>\n";
  14. echo "</tr>\n";
  15. }
  16. echo "<tr height='50px'></tr>\n";
  17. echo "</table>\n";


wyświetla mi oczywiście wszystko w ROW-ach. Rozumiem, że w stylu tabeli trzeba nadać liczbę kolumn np "3" i zrobić count pliku, żeby wiedział ile jest rekordów. No dobrze, ale przyjmijmy, że rekordów jest 10, jak teraz zrobić, żeby wyświetlił mi je w 3 kolumnach, czyli żeby wyszły 3 kolumny x 3 wiersze + kolejny wiersz i jedna pozycja jako reszta? Czyli łopatologicznie, bo pewnie jak zwykle zakręciłem, jak zrobić tą pętlę, żeby co 3 rekordy robił nowy TR i tak dalej...
shpaque
super! tylko jak to zrobic zeby nie byl w Mysql? Tylko lokalnie? czyli co mam przerobic:

  1. <?php
  2.  
  3. $wynik = mysql_query('select * from kategorie order by nazwa'); //zamiast tego mam tu zrobic count rekordow?
  4. echo '<table>';
  5. $i = 0;
  6. while ($row = mysql_fetch_assoc($wynik)) { // a zamiaste tego co?
  7. if ($i == 3)
  8. {
  9. echo '</tr>';
  10. $i = 0;
  11. }
  12. if ($i == 0)
  13. echo '<tr>';
  14. $i++;
  15. echo '<td>ala</td>';
  16. }
  17. if ($i != 0)
  18. echo '</tr>';
  19.  
  20. echo '</table>';
  21.  
  22. ?>



bo właśnie znalazłem coś takiego jeszcze:
  1. <div align="center">
  2. <table border="1" cellpadding="5" cellspacing="0" width="200">
  3. <?
  4. $i = 0;
  5. $lkw = 3; // liczba komórek w wierszu
  6. $ld = 12; // liczba danych do wyswietlenia
  7.  
  8. for($n=1;$n<=$ld;$n++) // tu oczywiscie moze byc np. petla while z zapytania do bazy
  9. {
  10. $i++;
  11. if($i == 1)
  12. echo '<tr>';
  13.  
  14. ?>
  15. <td width="<?= floor(100/$lkw) ?>%">
  16. <p align="center">Komórka <?= $n ?></p>
  17. </td>
  18. <?
  19. if($i == $lkw)
  20. {
  21. $i = 0;
  22. echo '</tr>';
  23. };
  24. };
  25. ?>
  26. </table>
  27. </div>

czy taki sposób będzie ok? Czy to stary jak świat i da się go jakoś zminimalizaować / zoptymalizować?
nospor
Kurcze, dostal gotowca i jeszcze marudzi....

I tam i tu masz PETLE. Petla to petla, nie wazne co jest jej źródłem. Zamiast WHILE masz wstawic swoj FOR i dzialaj. To jest para banalnych linijek kodu. Moglbys sprobowac je zrozumiec
shpaque
nie narzekam, tylko nie wiem co to mysql_fetch_cośtam bo nie znakm mysql wiec nie wiem co tam ma byc...
nospor
Napisalem przeciez, ze zamiast WHILE masz wstawic swoje FOR..

a te fetch cos tam pobiera poprostu kolejny wiersz.
shpaque
skomponowałem coś takiego, ale dalej nie hula - to znaczy dzieli mi na 2, a nie na 3

  1. <?
  2. echo "<table id='layer-table'>";
  3.  
  4. for ($i = $count - 1; $i >= 0; $i--)
  5. {
  6. if ($x == $komorka)
  7. {
  8. echo "<tr>";
  9. $x = 0;
  10. }
  11. if ($x == 0)
  12. {
  13. $x++;
  14. }
  15. if ($x < $komorka)
  16. {
  17. $x++;
  18. }
  19. echo "<td onclick="."location.href='./karta.php?cat=$cat&id=$models[$i]'".">";
  20. echo "<img src='./db/katalog/" . $models[$i] . ".jpg' width='" . $wynik . "%'><br>";
  21. echo "<b>" . $nazwas[$i] . "</b>";
  22. }
  23. echo "</table>";
  24. ?>


oczywiście $komorka ma wartość 3

teraz dopiero wyswietla mi 3:

  1. <?
  2. echo "<table id='layer-table'>";
  3.  
  4. for ($i = $count - 1; $i >= 0; $i--)
  5. {
  6. if ($x == $komorka)
  7. {
  8. echo "<tr>";
  9. $x = 0;
  10. }
  11. if (($x == 0) || ($x != 0))
  12. {
  13. $x++;
  14. }
  15. echo "<td onclick="."location.href='./karta.php?cat=$cat&id=$models[$i]'".">";
  16. echo "<img src='./db/katalog/" . $models[$i] . ".jpg' width='" . $wynik . "%'><br>";
  17. echo "<b>" . $nazwas[$i] . "</b>";
  18. }
  19. echo "</table>";
  20. ?>
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.