Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][PHP] Table rowspan
Forum PHP.pl > Forum > Przedszkole
ZenekN
Hej chciałem stworzyć dość skomplikowaną tabelę za pomocą kilku pętli forach (pętla w pętli itd), oraz wiersze w wierszach.
Ciężko jest mi to ogarnąć czy w ogóle jest to możliwe za pomocą języka php ?


Problem polega na tym że nie potrafię utworzyć np. rowspan=2 itd
Kshyhoo
Jest możliwe, było niedawno kilka wątków o tym. Może naszkicuj, co chcesz osiągnąć.
mar1aczi
Pokaż kod - to co już masz i np. obrazek, jak chcesz aby wyglądał efekt końcowy.
ZenekN
Za 2 godziny podrzucę, do zobaczenia w temacie! biggrin.gif

  1.  
  2. <table class="table table-bordered">
  3. <thead>
  4. <tr><th>Kategoria</th><th>Subkategoria</th><th>Produkt</th></tr>
  5. </thead>
  6. <tbody>
  7.  
  8. <?php
  9.  
  10.  
  11. foreach ($listcategories as $categories) {
  12. echo '<tr >';
  13. echo "<td rowspan='4'>";
  14. echo $categories['Category']['name'];
  15. echo ' </td>';
  16.  
  17. foreach ($categories['Subcategory'] as $subcategories) {
  18. echo '<td>';
  19. echo $subcategories['name'];
  20. echo '</td>';
  21.  
  22.  
  23. }
  24. foreach ($categories['Product'] as $produkt) {
  25. echo '<td>';
  26. echo $produkt['name'];
  27. echo '</td>';
  28.  
  29.  
  30. }
  31.  
  32. echo '</tr>';
  33.  
  34.  
  35. }
  36. ?>
  37.  
  38.  
  39. </tbody>
  40. </table>
  41.  



ZenekN
Cześć udało mi się osiągnąć rowspan dzięki count().
Teraz mam kolejny problem chciałbym dodatkowo zagnieździć kolejne wiersze poprzez rowspan dla pętli produkty w pętli subkategorie.

  1. // jak zagdnieździć tą pętle aby dostać rowspan dla środkowej kolumny subkategorie
  2.  
  3. foreach ($categories['Product'] as $produkt) {
  4.  
  5. echo $produkt['name'];
  6.  
  7.  
  8. }
  9.  






  1. <table class="table table-bordered">
  2.  
  3. <tr><th>Kategoria</th><th>Subkategoria</th><th>Produkt</th></tr>
  4.  
  5.  
  6.  
  7. <?php
  8.  
  9.  
  10.  
  11. foreach ($listcategories as $categories) {
  12. echo '<tr>';
  13. echo '<td rowspan="'?> <?php echo count($categories['Subcategory']) +1; ?><?php echo '">';
  14.  
  15. echo $categories['Category']['name'];
  16. echo '</td>';
  17. echo '</tr>';
  18.  
  19. foreach ($categories['Subcategory'] as $subcategories) {
  20. echo '<tr>';
  21. echo '<td >';
  22. echo $subcategories['name'];
  23. echo '</td>';
  24.  
  25.  
  26. }
  27.  
  28.  
  29.  
  30. }
  31.  
  32.  
  33. ?>






ps. założyłem drugi temat bo poprzedni był bardzo nieczytelny.
Kshyhoo
Ja jednak połączę te tematy.
nospor
rowspan w podkategoriach, robisz podobnie jak w to robiles w kategoriach

Zas aktualny rowspan w kategoriach musisz niestety zmodyfikowac. Ten rowsspan musi miec taką wartosc ile w sumie bedziesz mial produktow.
Jesli wiec kategoria ma dwie podkategorie, to postaremu dales rowspan 2. Teraz musi zliczyc wpierw ile w sumie produktow mają te dwie podkategorie, i dopiero na tej podstawie ustawic rowspan dla kategorii.

Sprowadza sie to wiec do tego, ze wpierw musisz wykonac niezbedne wyliczenia, a dopiero potem budowac tabelkę.
ZenekN
mam jeszcze jedna wątpliwość której nie do końca rozumiem dlaczego do count muszę dodać +1

  1. <?php echo count($categories['Product']) +1; ?>
nospor
Widocznie dodales gdzies TR o jeden za duzo. Pokaz kod lub sam sprawdz smile.gif
ZenekN



  1. <table class="table table-bordered">
  2.  
  3. <tr><th>Kategoria</th><th>Subkategoria</th><th>Produkt</th></tr>
  4.  
  5.  
  6.  
  7. <?php
  8.  
  9.  
  10.  
  11. foreach ($listcategories as $categories) {
  12.  
  13.  
  14.  
  15. echo '<tr>';
  16. echo '<td rowspan="'?> <?php echo count($categories['Subcategory']); ?><?php echo '">';
  17.  
  18. echo $categories['Category']['name'];
  19. echo '</td>';
  20. echo '</tr>';
  21.  
  22. foreach ($categories['Subcategory'] as $subcategories) {
  23.  
  24. echo '<tr>';
  25. echo '<td>';
  26. echo $subcategories['name'];
  27. echo '</td>';
  28. echo '</tr>';
  29. }
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38. }
  39.  
  40.  
  41. ?>
  42.  
  43.  
  44.  
  45. </table>




var_dump dla count($categories['Subcategory'])
  1. /app/View/Categories/admin_index.ctp (line 59)
  2.  
  3. (int) 4
  4.  
  5. /app/View/Categories/admin_index.ctp (line 59)
  6.  
  7. (int) 3
  8.  
  9. /app/View/Categories/admin_index.ctp (line 59)
  10.  
  11. (int) 1
  12.  
  13. /app/View/Categories/admin_index.ctp (line 59)
  14.  
  15. (int) 1
  16.  
  17. /app/View/Categories/admin_index.ctp (line 59)
  18.  
  19. (int) 3
  20.  
  21. /app/View/Categories/admin_index.ctp (line 59)
  22.  
  23. (int) 3
  24.  
  25. /app/View/Categories/admin_index.ctp (line 59)
  26.  
  27. (int) 3
  28.  
nospor
rowspan dotyczy aktualnego TR oraz nastepnych a nie jak ty myslisz ze tylko nastepnych. Prawidlowo powinienes zrobic Rowspan na 3 i jeszcze w tym samym TR dodac TD i to w nim powinna byc pierwsza subkategoria, a dwoch nastepnych TR kolejne dwie subkategorie smile.gif
Lub jak masz teraz, tylko sie nie dziw, ze musisz dac o 1 wiecej wink.gif

Masz, pobaw sie tym przykladem, moze lepiej zrozumiesz zasadze rowspan
http://www.w3schools.com/tags/tryit.asp?fi...html_td_rowspan
ZenekN
Poddaje się czy jesteś w stanie na moim kodzie pokazać błąd :/ ?
Kshyhoo
Wklejasz jakieś strzępki kodu i liczysz na pomoc. Wklej jakieś przykładowe dane z bazy i kod, jak klecisz tabelki.
nospor
Przeciez blad ci dokladnie napisalem jaki masz. Podalem ci dwa rozwiazania tego bledu, wiec nie rozumiem w czym masz problem.

Pobawiles sie w ogole linkiem co ci podalem?
ZenekN
ok mam dziękujęexclamation.gif

przede wszystkim powinno być

  1. echo count($categories['Subcategory']) + count($categories['Product']) + count($listcategories[0]['Category']['name']


i widzę że są problemy z pętlami i relacjami.

Przyznam się że poległem w tym rozwiązaniu, rozwiązałem to w inny sposób nospor ale dzięki tobie udało mi się zrozumieć zasadę działania rowspan.



a znacie może jakieś inne metody zliczania tablicy ? By nie oddziaływały na nie relacje ?
nospor
za bardzo nie wiem o jakich problema z relacjami mowisz. Nigdy z czyms takim sie nie spotkalem
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.