Gleiche Zeilen aus der Datenbank zusammenfassen
Hallo Experten!
Ich bin ein PHP-Anfänger und brauche Eure Hilfe!
Ich habe folgene Tabelle:
Mit diesem Code:
sieht meine Ausgabe so aus:
Ich möchte aber erreichen, dass die Ausgabe so aussieht:
Ich habe schon einiges probiert (for, foreach), auch viel geucht und gelesen aber ich kriege es einfach nicht hin.
Wie muss ich while-Schleife erweitern, damit es funktioniert.
Ich bedanke mich schon mal Voraus für jeden Tip!
Gruß
highpriest
Ich bin ein PHP-Anfänger und brauche Eure Hilfe!
Ich habe folgene Tabelle:
Auftrag | Artikel | Menge |
1 | A1 | 1 |
2 | A2 | 3 |
2 | A5 | 2 |
2 | A4 | 5 |
3 | A7 | 1 |
3 | A1 | 2 |
Mit diesem Code:
$sql = "SELECT * FROM Tabelle WHERE ...;
$db_erg = odbc_exec( $db_link, $sql );
echo '<table>';
echo '<thead style="border-bottom: 2px solid black">';
echo '<tr>';
echo '<th>Auftrag</th>';
echo '<th>Artikel</th>';
echo '<th>Menge</th>';
echo '</tr>';
echo '</thead>';
echo '<tbody>';
echo "<tr>";
while ($zeile = odbc_fetch_array( $db_erg))
{
echo "<tr>";
echo "<td style='border-bottom:1px solid #a5a5a5'>" . $zeile['Auftrag'] . "</td>";
echo "<td style='border-bottom:1px solid #a5a5a5'>" . $zeile['Artikel'] . "</td>";
echo "<td style='border-bottom:1px solid #a5a5a5'>" . $zeile['Menge'] . "</td>";
echo "</tr>";
}
echo '</tbody>';
echo "</table>";
sieht meine Ausgabe so aus:
Auftrag | Artikel | Menge |
1 | A1 | 1 |
2 | A2 | 3 |
2 | A5 | 2 |
2 | A4 | 5 |
3 | A7 | 1 |
3 | A1 | 2 |
Ich möchte aber erreichen, dass die Ausgabe so aussieht:
Auftrag | Artikel | Menge |
1 | A1 | 1 |
2 | A2 A5 A4 | 3 2 5 |
3 | A7 A1 | 1 2 |
Ich habe schon einiges probiert (for, foreach), auch viel geucht und gelesen aber ich kriege es einfach nicht hin.
Wie muss ich while-Schleife erweitern, damit es funktioniert.
Ich bedanke mich schon mal Voraus für jeden Tip!
Gruß
highpriest
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 570974
Url: https://administrator.de/forum/gleiche-zeilen-aus-der-datenbank-zusammenfassen-570974.html
Ausgedruckt am: 23.12.2024 um 05:12 Uhr
7 Kommentare
Neuester Kommentar
Moin,
ich würde das direkt im SQL-Statement abfrühstücken:
Deine Freunde hier: STUFF und FOR XML PATH:
https://sqlwhisper.wordpress.com/2013/03/24/stuff-and-for-xml-path-for-s ...
und als "Delimiter" ein CHAR(10) einfügen.
Achja, obiges Gilt nur für MS SQL...
Gruß
em-pie
ich würde das direkt im SQL-Statement abfrühstücken:
Deine Freunde hier: STUFF und FOR XML PATH:
https://sqlwhisper.wordpress.com/2013/03/24/stuff-and-for-xml-path-for-s ...
und als "Delimiter" ein CHAR(10) einfügen.
Achja, obiges Gilt nur für MS SQL...
Gruß
em-pie
ich würde das direkt im SQL-Statement abfrühstücken:
Me too, bei MySQL z.B. mit GROUP_CONCATSELECT
Auftrag,
GROUP_CONCAT(Artikel SEPARATOR '<br/>') as Artikel,
GROUP_CONCAT(Menge SEPARATOR '<br/>') as Mengen
FROM Tabelle
GROUP BY Auftrag
ORDER BY Auftrag;
Tausche doch mal Zeile 34 und 35 gegeneinander aus. Aktuell hast du den Zeilenabschluss der Tabelle ausserhalb deiner Schleife.
Dann wirst du noch ein Problem bekommen das du unterschiedliche Spaltenzahlen hast. Sprich du brauchst eine leere Zelle mit einer anderen Rahmenvormatierung.
Ich würde dir mal raten den HTML Code der Tabelle mit der Hand zu schreiben und dann mit dem von PHP erzeugten Code zu vergleichen.
Du könntest auch mit Rowspan arbeiten um die Spalten wirklich zu verbinden.
Dann würd ich persönlich nicht den Styleattribut in jedes einzelne Feld schreiben sonder mit CSS Klassen Arbeiten.
Dann wirst du noch ein Problem bekommen das du unterschiedliche Spaltenzahlen hast. Sprich du brauchst eine leere Zelle mit einer anderen Rahmenvormatierung.
Ich würde dir mal raten den HTML Code der Tabelle mit der Hand zu schreiben und dann mit dem von PHP erzeugten Code zu vergleichen.
Du könntest auch mit Rowspan arbeiten um die Spalten wirklich zu verbinden.
Dann würd ich persönlich nicht den Styleattribut in jedes einzelne Feld schreiben sonder mit CSS Klassen Arbeiten.
Zitat von @highpriest:
@em-pie, @144260
Es funktioniert leider nicht, bekomme immer SQL- Fehlermeldung.
Liegt es vielleicht daran, dass es ein Acces-Datenbank ist?
OK, die Info wäre ganz hilfreich gewesen.@em-pie, @144260
Es funktioniert leider nicht, bekomme immer SQL- Fehlermeldung.
Liegt es vielleicht daran, dass es ein Acces-Datenbank ist?
Wobei man fairerweise ja sagen muss, dass du ja nicht nach einer SQL- bzw. Query-Lösung gefragt/ gesucht hast.
Was dir dennoch helfen könnte:
https://stackoverflow.com/questions/21380730/ms-access-equivalent-of-for ...
Ansatz hier: ConcatRelated()