-----------------
Ausgabe gruppieren
-
martin2015 -
14. September 2015 um 18:41
-
-
Also ich verstehs nicht
Was heisst "mehrere Kalenderwochen"? (wenn es um sql GROUP BY geht: wie sieht das db Modell aus)Zur Tabelle: wie gesagt keine Ahnung, was gemeint ist.
-
-----------------
-
Weiß nich ganz ob ich Dich richtig verstanden hab.
Das wäre eine Gruppierung aller Einträge nach der KW:PHP
Alles anzeigen$source = array( array( 'ms_id' => 2, /* ... */ 'ms_KW' => 37, /* ... */ ), array( 'ms_id' => 3, /* ... */ 'ms_KW' => 37, /* ... */ ), array( 'ms_id' => 4, /* ... */ 'ms_KW' => 37, /* ... */ ), array( 'ms_id' => 9, /* ... */ 'ms_KW' => 36, /* ... */ ), array( 'ms_id' => 10, /* ... */ 'ms_KW' => 36, /* ... */ ), array( 'ms_id' => 11, /* ... */ 'ms_KW' => 36, /* ... */ ), ); $grouped = array(); // sorted destination array $group_by_key = 'ms_KW'; // the key we wanna sort/group (not recursiv) foreach ($source as $key => $item) { $item_group = $item[$group_by_key]; // the current item key we wanna group by if(!isset($grouped[$item_group])){ // if this is a new group in our destination array $grouped -> create empty array $grouped[$item_group] = array(); } $grouped[$item_group][] = $item; // push that item into our destination array } // output $current_group = null; foreach ($grouped as $ms_KW => $items) { if($current_group != $ms_KW){ // next (or first) group echo '<br>group: ' . $item['ms_KW']; $current_group = $ms_KW; } foreach ($items as $key => $item) { echo '<br>' . $item['ms_id']; } } /* out: group: 36 2 3 4 group: 37 9 10 11 */
-
-----------------
-
Ich bin ja nie voreingenommen, oder anders gesagt - ich nehme Worte im netz nie so, wie sie geschrieben stehen (zwecks falsch verstehen ect),
aber dein Ausrufezeichen am Ende sagt mir, dass Du das so meinst, was Du da schreibstNur weil hier nicht gerade 20 Mitglieder posten (keine Zeit ect) und ich Dich nicht verstehe ... deswegen ist die Diskussion doch nicht "nicht sachlich".
Ich hatte Dir ja sogar ein Bsp geschrieben.
Du brauchst nur noch dein Table da rein bauen.Ich sehe übrigens, was Du mit den Table-Head meinst.
Das kommt daher, dass Du in der foreach-Schleife immer einen neuen Table pro db-Eintrag ausgibst:PHP
Alles anzeigen// ... <?php foreach($mitarbeiterstatistik as $array){ // ... if ($group != $array['ms_KW']) { echo '<h3 class="header"> Kalenderwoche: ' . htmlspecialchars($array['ms_KW']) . "</h3>"; $group = $array['ms_KW']; } ?> <table> <thead> <tr> <th>Datum</th> <th>Neue Kunden angelegt</th> <th>Neue Erinnerungen</th> <th>Erinnerungen bearbeitet</th> </tr> </thead>
Dafür gibts 2 Lösungen:
- table und thead vor der Schleife ausgeben und in der Schleife dann nur noch eine tr pro loop/Datensatz
- einen String verketten:PHP
Alles anzeigen// obere teil des tables (soll ja nur einmal vorkommen) $table = ' <table> <thead> <tr> <th>Datum</th> <th>Neue Kunden angelegt</th> <th>Neue Erinnerungen</th> <th>Erinnerungen bearbeitet</th> </tr> </thead> <tbody> '; foreach( ... deine schleife ... ){ // ... // jeden datensatz (tr) an $table anhängen // achtung: aus <?php ... wird verketten ' . $var . ' $table .= ' <tr> <td><span style="width:20px; display:inline-block;";>' . $wochentage[date("w", $zeit)] . '</span> - ' . enDate2deDate($array['ms_datum']) . '</td> /* rest des verkettens musst du machen =) */ <td><span style="width:20px; display:inline-block; text-align: right; margin-right: 7px;";><?php if ($kdgesamt > '0'): echo $kdgesamt;?></span> davon <span style="width:20px; display:inline-block; text-align: right; font-weight: bold; margin-left: 10px;";><?php echo $array['ms_kd_aktiv']; ?></span> aktiv und <span style="width:16px; display:inline-block; text-align: right; font-weight: bold;";><?php echo $array['ms_kd_inaktiv']; ?></span> gesperrt <?php endif;?></td> <td><?php if ($array['ms_erinnerungen_n'] != ''): echo $array['ms_erinnerungen_n']; endif; ?></td> <td><?php echo $array['ms_erinnerungen_b']; ?></td> </tr> '; // ... } // und nach der schleife muss natürlich noch das "ende" des tables angehangen werden: $table .= ' </tbody> </table> '; // und jetzt hast Du einen kompletten table in der var $table die du ausgeben kannst: echo $table;
Ich empfehle trotzdem noch was ich im Post Ausgabe gruppieren geschrieben hab.
Denn wenn Du nicht sortierst
und in der db die KW nicht in geordneter Reihenfolge stehen,
dann bekommst Du mehrere von Deinen h3 KW Überschrifen der gleichen KW. -
-----------------
-
Klar "funktioniert" das nicht, weil Du es in Dein Script einarbeiten musst.
Zum PS:
Ist doch offensichtlich, dass Script von gerade eben nicht funktioniert -- es ist ja eine Hilfe, und kein fertiger Code.Ich denke Du suchst wohl fertigen Code. Dann muss ich Dich aber enttäuschen (obwohl ich eigtl oft viel schreibe - teilweise fertigen Code)
Bisschen was musst Du schon machen, damit es für Deine Bedürfnisse passt. -
-----------------
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!