Autor | Zpráva | ||
---|---|---|---|
danhill Profil |
#1 · Zasláno: 1. 11. 2016, 13:40:02
Dobrý den,
prosím potřeboval bych pomoci s vyreslením tabulky, u které se bude různě měnit rowspan v první sloupci. Vytáhnu si data z db. $select_groups = $mysqli->query("SELECT * FROM profyl_group"); Klasicky bych to udělal jednoduše takto: foreach ($select_groups AS $select_group) { echo '<tr><td>'.$select_group['id_group'].'</td><td>'.$select_group['id_global_group'].'</td><td>'.$select_group['id_place'].'</td><td><input name="delete-group" type="submit" value="Delete"/></td></tr>'; } Výsledek bude vypadat asi takto: 1 8 138 Delete 1 8 23 Delete 1 8 33 Delete 1 1 54 Delete 2 1 67 Delete 2 5 102 Delete 2 5 139 Delete Tedy asi takto: 1 8 138 Delete 8 23 Delete 8 33 Delete 1 54 Delete 2 1 67 Delete 5 102 Delete 5 139 Delete Potřebné udaje získám dotazem: $select_count_groups = $mysqli->query("SELECT `id_group`, COUNT(`id_group`) AS rowspan FROM profyl_group GROUP BY `id_group` "); id_group rowspan 1 4 2 3 No ale jak to aplikovat do vykreslení tabulky, to mi uniká. Pomůžete prosím? Děkuji. |
||
nethor Profil |
#2 · Zasláno: 2. 11. 2016, 11:44:02
To by znamenalo poměrně hodně dotazů na DB.
Šel bych na to jinak- pomocí 2 cyklů: 1. průchodem foreach spočítá počet řádků se stejnou hodnotou v 1.sloupci a zároveň načte hodnoty 2., 3. a 4. sloupce pole $Tmp 2. foreach tabulku vykreslí (už máš hodnoty i číslo pro rowspan) |
||
Tomášeek Profil * |
#3 · Zasláno: 2. 11. 2016, 13:59:32
danhill:
Nevím, jestli by to nešlo sloučit do jednoho SQL dotazu, ale pokud použiješ ty dva dotazy tak, jak je máš, mělo by to být přeci ok. Z druheho dotazu budeš mít data v následujícím formátu: $rowspan = array(1 => 4, 2 => 3); Pak už ti stačí jen ten jeden cyklus. $last_group_id = 0; foreach ($select_groups as $select_group) { echo '<tr>'; if ($select_group['id_group'] != $last_group_id) { // pokud nastala nova skupina, vypis prvni bunku s rowspanem echo '<td rowspan="' . $rowspan[$select_group['id_group']] . '">' . $select_group['id_group'] . '</td>'; } echo '<td>Dalsi bunky</td>'; echo '<td>Dalsi bunky</td>'; echo '<td>Dalsi bunky</td>'; echo '</tr>'; $last_group_id = $select_group['id_group']; } |
||
danhill Profil |
#4 · Zasláno: 2. 11. 2016, 21:22:19
Ty jo, sice moc nevím jak to funguje,ale funguje :)
Moc děkuji, výsledek je moc dobrý... Jen pro kontrolu udávám celý kod znova,tak jak ho mám na webu, jestli jsem to dobře pochopil: $select_groups = $mysqli->query("SELECT * FROM profyl_group"); $select_count_groups = $mysqli->query("SELECT `id_group`, COUNT(`id_group`) AS rowspan FROM profyl_group GROUP BY `id_group` "); $rowspan = array(); foreach ($select_count_groups AS $select_count_group) { $rowspan[$select_count_group['id_group']] = $select_count_group['rowspan']; } echo '<table class="classic_table">'; echo '<tr><th>Výjezdová</br>skupina</th><th>Globální</br>skupina</th><th>Provozovna</th><th></th></tr>'; $last_group_id = 0; foreach ($select_groups AS $select_group) { if ($select_group['id_group'] % 2 == 0) {$bg = '#FDE9D9';} else {$bg= 'white';} $global_group = getGlobalGroupFromId ($mysqli,$select_group['id_global_group']); $place = getPlaceFromId ($mysqli,$select_group['id_place']); echo '<tr style="background-color:'.$bg.'">'; if ($select_group['id_group'] != $last_group_id) { echo '<td rowspan="'.$rowspan[$select_group['id_group']].'">'.$select_group['id_group'].'</td>'; } echo '<td>'.$global_group.'</td>'; echo '<td>MJ'.$place['mj'].' - '.$place['company'].' '.$place['name'].'</td>'; echo '<td><input name="delete-group" type="submit" value="Delete"/></td>'; echo '</tr>'; $last_group_id = $select_group['id_group']; } echo '</table>'; |
||
Kajman Profil |
#5 · Zasláno: 2. 11. 2016, 23:12:12
V prvním dotaze si ještě dejte order by id_group
|
||
Časová prodleva: 7 let
|
0