mySQL abfrage mit mehreren Resultaten?

L

leo-magic

Aktives Mitglied
Thread Starter
Dabei seit
24.12.2004
Beiträge
1.178
Reaktionspunkte
4
Hallo!

In einer mySQL Abfrage gruppiere ich mit "GROUP" Datensätze nach selber ID.
Wenn nun zB. 3 Datensätze so gruppiert wurden, wie kann ich mit PHP alle diese 3 Datensätze untereinander ausgeben?

PHP:
$result = mysql_query("SELECT j.user_id p.project_name, j.status, COUNT(j.project_id) As zahl
FROM projects p, user_projects j, users u
WHERE j.user_id = u.user_id
GROUP BY j.project_id");

while ($row = mysql_fetch_array($result))
{
...
mein Code gibt immer nur ein Resultat aus...

Danke für die Hilfe!!
Léo
 
mit foreach

PHP:
foreach($result as $key){
   
   echo $key;
}
 
Eben, es gibt ja nur EIN Array als Ergebnis.

Alternative:
while ($row = mysql_fetch_array($result, MYSQL_BOTH))
{
$inhalt = $row['inhalt'];
}
mysql_free_result($result);
 
mit foreach

PHP:
foreach($result as $key){
   
   echo $key;
}

Hmm, ich hab das probiert aber ich bringe es leider nicht zustande...

Kann ich...
PHP:
while ($row = mysql_fetch_array($result))
{
$user_id = $row[0];
$user_firstname = $row[1];

...

foreach($user_firstname as $key){
   
   echo $key;
}

...

Sollte das theoretisch klappen? Klappt bei mir nämlich nicht... :confused:

Danke für Eure Hilfe!
Léo
 
Mmmh, keine Ahnung, ob das wirklich so klappen sollte.
Eventuell fehlt auch etwas Quelltext ?

Wo geht die while-Schleife wieder zu ?
In dem foreach() tust Du so , als ob die Variable $user_firstname ein Array ist, aber das ist ein String.

In einer for-Schleife würdest Du so hächstens die einzelnen Buchstaben des Strings ausgeben.
Was bei dem foreach funktioniert, habe ich noch nie ausprobiert. ;-)

Gib doch in der While-Schleife einfach mal die Ergebnissemit print_r($row); aus, dann siehst Du ja, was da drin ist.
Ansonsten las Dir mal mit mysql_error() einfach ausgeben, ob beo der Abfrage etwas schief gelaufen ist.
 
Hmm, ich habe weiter dran rumgetüftelt und komme leider zu keinem Resultat...

In meiner DB hat es zB. diese Einträge:

ID USER
1 Max
2 Hugo
1 Fritz


Ich möchte nun alle ID's anzeigen aber nicht doppelt, also gruppiert:

1
2

Dazu möchte ich alle USERs anzeigen:

1 - Max, Fritz
2 - Hugo


PHP:
$result = mysql_query("SELECT id, user COUNT(id) As zahl
FROM db
GROUP BY id");

while ($row = mysql_fetch_array($result))
{
$id = $row[0];
$user = $row[1];

$zahl=$row['zahl'];

echo($id.' - ' .$user);
}
(sehr vereinfacht)
Dies gibt mir aus:

1 - Max
2 - Hugo

Ich möchte aber beide Namen bei 1.

Wo ist mein Fehler?

Danke!!
Léo
 
Ich möchte aber beide Namen bei 1.

Wo ist mein Fehler?
Das geht nicht.

Du machst ja ein GROUP BY, um nur ein Ergebnis je ID zu haben und genau das bekommst Du auch.

Wenn Du alle Benutzer haben möchtest, lass das GROUP BY weg und sortiere die User in einem Array ein.

PHP:
$ret = array();
while ($row = mysql_fetch_array($result,  MYSQL_ASSOC)){
$ret[$row["id"]][] = $row;
}
 
Das müsste mit der Funktion group_concat funktionieren.
 
  • Gefällt mir
Reaktionen: leo-magic und rm -r *
Danke schonmal!

habe es nun mit GOUP_CONCAT probiert.
Es funktioniert soweit, wenn man nach dem mysql_query
PHP:
$allusers=array($row[9]);
Ohne das array() um den Wert gibt es nur eine Fehlermeldung.

Mit:
PHP:
foreach ($allusers as $alluser_firstname)
	{
echo($alluser_firstname);
}

Gibt es mir aus:


Wie kann ich nun die Zweite Zeile (Max,Dominik) als Array speichern um da nochmals foreach() anzuwenden?

Danke!!
Léo
 
Hallo nochmals!

Habe weiter daran rumgetüftelt und bin immer noch nicht zum gewünschten Ergebnis gekommen...
Das Problem ist, dass das Ergebnis der Abfrage nun etwas so aussieht:

Max
Max,Dominik

Wie kann ich nun die Zweite Zeile (Max,Dominik) als Array speichern um da nochmals foreach() anzuwenden?? Momentan wird "Max,Dominik" also eine Zeichenkette betrachtet, man müsste die wie aufsplitten...

Wer kann mir helfen? Danke!!
Léo
 
Die Sache würde deutlich einfacher werden wenn Du uns die Struktur der Tabelle verraten würdest.
Wenn in EINEM Feld, nennen wir es einfach mal NAME "Max, Dominik" drinsteht wird es ungleich komplizierter als wenn es zwei Felder sind (VORNAME, NACHNAME).

Alos liefere mal ein paar mehr Details..
 
Ich habe in der Zwischenzeit recht viel daran verändert, ich habe der Übersicht halbe deshalb ein neues Thema aufgemacht. Da ist es (hoffentlich) auch etwas klarer beschrieben. Ich danke für jede Hilfe! Hier ist das neue Thema. Danke!

Léo
 
Zurück
Oben Unten