Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Dynamiczne dzielenie tabeli, np w przypadku 3 kolumn
shpaque
post
Post #1





Grupa: Zarejestrowani
Postów: 651
Pomógł: 3
Dołączył: 31.01.2011
Skąd: Warszawa

Ostrzeżenie: (10%)
X----


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...

Ten post edytował shpaque 22.06.2015, 15:31:20
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
nospor
post
Post #2





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




http://forum.php.pl/index.php?act=ST&f...t=0#entry185524
Go to the top of the page
+Quote Post
shpaque
post
Post #3





Grupa: Zarejestrowani
Postów: 651
Pomógł: 3
Dołączył: 31.01.2011
Skąd: Warszawa

Ostrzeżenie: (10%)
X----


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ć?


Ten post edytował shpaque 22.06.2015, 15:40:55
Go to the top of the page
+Quote Post
nospor
post
Post #4





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




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
Go to the top of the page
+Quote Post
shpaque
post
Post #5





Grupa: Zarejestrowani
Postów: 651
Pomógł: 3
Dołączył: 31.01.2011
Skąd: Warszawa

Ostrzeżenie: (10%)
X----


nie narzekam, tylko nie wiem co to mysql_fetch_cośtam bo nie znakm mysql wiec nie wiem co tam ma byc...
Go to the top of the page
+Quote Post
nospor
post
Post #6





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




Napisalem przeciez, ze zamiast WHILE masz wstawic swoje FOR..

a te fetch cos tam pobiera poprostu kolejny wiersz.
Go to the top of the page
+Quote Post
shpaque
post
Post #7





Grupa: Zarejestrowani
Postów: 651
Pomógł: 3
Dołączył: 31.01.2011
Skąd: Warszawa

Ostrzeżenie: (10%)
X----


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. ?>


Ten post edytował shpaque 22.06.2015, 21:22:13
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 14:48