ZenekN
13.01.2014, 19:59:35
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
13.01.2014, 20:01:54
Jest możliwe, było niedawno kilka wątków o tym. Może naszkicuj, co chcesz osiągnąć.
mar1aczi
13.01.2014, 20:02:18
Pokaż kod - to co już masz i np. obrazek, jak chcesz aby wyglądał efekt końcowy.
ZenekN
13.01.2014, 20:53:12
Za 2 godziny podrzucę, do zobaczenia w temacie!

<table class="table table-bordered">
<thead>
<tr><th>Kategoria</th><th>Subkategoria</th><th>Produkt</th></tr>
</thead>
<tbody>
<?php
foreach ($listcategories as $categories) {
echo $categories['Category']['name'];
foreach ($categories['Subcategory'] as $subcategories) {
echo $subcategories['name'];
}
foreach ($categories['Product'] as $produkt) {
}
}
?>
</tbody>
</table>
ZenekN
14.01.2014, 09:18:35
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.
// jak zagdnieździć tą pętle aby dostać rowspan dla środkowej kolumny subkategorie
foreach ($categories['Product'] as $produkt) {
}
<table class="table table-bordered">
<tr><th>Kategoria</th><th>Subkategoria</th><th>Produkt</th></tr>
<?php
foreach ($listcategories as $categories) {
echo '<td rowspan="'?> <?php echo count($categories['Subcategory']) +1; ?><?php echo '">';
echo $categories['Category']['name'];
foreach ($categories['Subcategory'] as $subcategories) {
echo $subcategories['name'];
}
}
?>

ps. założyłem drugi temat bo poprzedni był bardzo nieczytelny.
Kshyhoo
14.01.2014, 09:37:47
Ja jednak połączę te tematy.
nospor
14.01.2014, 10:14:13
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
14.01.2014, 16:15:58
mam jeszcze jedna wątpliwość której nie do końca rozumiem dlaczego do count muszę dodać
+1 <?php echo count($categories['Product']) +1; ?>
nospor
14.01.2014, 19:48:40
Widocznie dodales gdzies TR o jeden za duzo. Pokaz kod lub sam sprawdz
ZenekN
15.01.2014, 11:04:42

<table class="table table-bordered">
<tr><th>Kategoria</th><th>Subkategoria</th><th>Produkt</th></tr>
<?php
foreach ($listcategories as $categories) {
echo '<td rowspan="'?> <?php echo count($categories['Subcategory']); ?><?php echo '">';
echo $categories['Category']['name'];
foreach ($categories['Subcategory'] as $subcategories) {
echo $subcategories['name']; }
}
?>
</table>
var_dump dla count($categories['Subcategory']) /app/View/Categories/admin_index.ctp (line 59)
(int) 4
/app/View/Categories/admin_index.ctp (line 59)
(int) 3
/app/View/Categories/admin_index.ctp (line 59)
(int) 1
/app/View/Categories/admin_index.ctp (line 59)
(int) 1
/app/View/Categories/admin_index.ctp (line 59)
(int) 3
/app/View/Categories/admin_index.ctp (line 59)
(int) 3
/app/View/Categories/admin_index.ctp (line 59)
(int) 3
nospor
15.01.2014, 11:12:25
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

Lub jak masz teraz, tylko sie nie dziw, ze musisz dac o 1 wiecej

Masz, pobaw sie tym przykladem, moze lepiej zrozumiesz zasadze rowspan
http://www.w3schools.com/tags/tryit.asp?fi...html_td_rowspan
ZenekN
15.01.2014, 17:28:02
Poddaje się czy jesteś w stanie na moim kodzie pokazać błąd :/ ?
Kshyhoo
15.01.2014, 19:48:58
Wklejasz jakieś strzępki kodu i liczysz na pomoc. Wklej jakieś przykładowe dane z bazy i kod, jak klecisz tabelki.
nospor
16.01.2014, 08:36:25
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
16.01.2014, 13:18:50
ok mam dziękuję

przede wszystkim powinno być
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
16.01.2014, 15:58:35
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.