| 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: 9 let
|
|||
0