88871
Goto Top

PHP mySQL Daten gruppiert ausgeben

Hallo. Ich komme nicht auf eine Anständige Lösung wie ich Daten aus einer mySQL gruppiert ausgeben soll.

In der DB stehen user. zu jedem user gehört eine FIRMA.

die FIRMA soll dann gruppiert ausgegeben werden damit ich die FIRMA sehe und alle User dazu

Anbei ein paar bilder


DB Inhalt, so wie es gespeichert wird
da46e192e8787e94270bb99a0cc13583
So sollte es Grupiert ausgegeben werden.
f06e326ca34c6e0125517f58a98ba372


Merci fuer eure tipps

Content-Key: 174121

Url: https://administrator.de/contentid/174121

Printed on: April 23, 2024 at 16:04 o'clock

Member: nxclass
nxclass Oct 04, 2011 at 13:24:34 (UTC)
Goto Top
... user. zu jedem user gehört eine FIRMA.
... einfach deine Tabelle nach Firma sortieren
SELECT `firma`, `name`
FROM `tabelle`
ORDER BY `firma`
;
Member: SlainteMhath
SlainteMhath Oct 04, 2011 at 13:25:25 (UTC)
Goto Top
Moin,

Das Query sieht so aus:
SELECT * FROM tabelle ORDER BY Firma ASC, username ASC"  

Im Code prüfst du dann ob sich das Firma-Feld gegenüber dem letzten Datensatz verändert hat, oder immer noch gleich ist.
Wenn gleich => Ausgabe : (leer) | Username | ....
Wenn Ungleich => Ausgabe: Firma | Username | ...

lg,
Slainte
Mitglied: 88871
88871 Oct 04, 2011 at 13:29:07 (UTC)
Goto Top
Zitat von @SlainteMhath:


Im Code prüfst du dann ob sich das Firma-Feld gegenüber dem letzten Datensatz verändert hat, oder immer noch gleich
ist.
Wenn gleich => Ausgabe : (leer) | Username | ....
Wenn Ungleich => Ausgabe: Firma | Username | ...

lg,
Slainte

Hi Slainte. Wie prüfe ich denn einen Datensatz vor einem anderen in derselben Abfrage ?
Mitglied: 88871
88871 Oct 04, 2011 at 13:31:15 (UTC)
Goto Top
hi nxclass. dann habe ich eben keine gruppierung, resp moechte die firma nur 1x anzeigen lassen und nicht bei jedem user.
Member: SlainteMhath
SlainteMhath Oct 04, 2011 at 13:32:10 (UTC)
Goto Top
Hi Slainte. Wie prüfe ich denn einen Datensatz vor einem anderen in derselben Abfrage ?
Die Prüfung erfolgt nicht in der Abfrage, sondern in PHP
Mitglied: 88871
88871 Oct 04, 2011 at 13:36:06 (UTC)
Goto Top
Hiaz

klaro. frage mich nun nur nach der syntax.


if $row[firma] == $row[firma]
{
echo "";
}
else
{
echo "Firma";
}


klappt natuerlich nicht face-smile
Member: nxclass
nxclass Oct 04, 2011 at 13:36:45 (UTC)
Goto Top
... mit der Ergebnismenge zu arbeiten wird dann aber nicht sehr schön.
Dann lieber:
SELECT `firma`, GROUP_CONCAT(', ', `name`)  
FROM `tabelle`
GROUP BY `firma`
ORDER BY  `firma`
;
..in php kannst du dann mit explode(', ', $namen) die namen auch wieder trennen.
Member: dog
dog Oct 04, 2011 at 13:37:06 (UTC)
Goto Top
Du musst eine temporäre Variable mit dem Wert der vorherigen Zeile einführen.
Member: SlainteMhath
SlainteMhath Oct 04, 2011 at 13:38:05 (UTC)
Goto Top
Zitat von @dog:
Du musst eine temporäre Variable mit dem Wert der vorherigen Zeile einführen.
Korrekt.
Mitglied: 88871
88871 Oct 04, 2011 at 13:40:21 (UTC)
Goto Top
aah dang, alles klar! versuche ich gleich. thanx alot!
Mitglied: 88871
88871 Oct 04, 2011 at 13:49:55 (UTC)
Goto Top
hmm alles logisch. frage mich nun aber doch wie ich die firma aus dem letzten datensatz in eine variable schreibe.....dad will nicht so richtig

meine query
    $query = mysql_query("SELECT * FROM xxx ORDER BY firma ASC, username ASC") or die(mysql_error());  

zuerst setze ich diese temporäre variable aus der ausgelesenen row
$firmaname= $row['firma'];  

dann die entscheidung beim aufbau der tabelle
                // gruppieren der firmen
                if ($row['firma'] != $firmaname)  
                {
                    echo "Firma";  
                }
                    else
                    {
                        echo "";  
                    }
Member: SlainteMhath
SlainteMhath Oct 04, 2011 at 13:55:53 (UTC)
Goto Top
Das Setzen
$firmaname= $row['firma'];  

muss NACH der If-Abfrage Kommen, ist ist $row['firma'] != $firmaname ja niemals TRUE.
Mitglied: 88871
88871 Oct 04, 2011 at 13:56:50 (UTC)
Goto Top
lol ja, ist mir eben aufgefallen. muss die temp var danach setzen :----)
Mitglied: 88871
88871 Oct 04, 2011 at 14:19:45 (UTC)
Goto Top
ja, geht bestens.

herzlichen dank an euch alle ! great work
Mitglied: 88871
88871 Oct 04, 2011 at 14:21:01 (UTC)
Goto Top
danke dir, habs nun einfacher gelöst, siehe unten. eigentlich simpel....