Hallo!
Ich habe in einer While Schleife eine foreach() Schleife verschachtelt. Es funktioniert soweit, nur dass die while Schleife anscheinend nach dem foreach() abgebrochen wird.
-> Alles vor und mit dem foreach() wird ausgegen, Datensätze danach nicht mehr.
Konkreter:
(vereinfacht)
Ich gruppiere (GROUP BY project_id) nach selben Einträgen und speichere dabei alle user_ids der dazugehörigen Gruppen. (GROUP_CONCAT(user_id))
Mit (COUNT(project_id) zähle ich, wieviele Resultate zusammen gruppiert wurden.
Falls es mehr als 1 Datensatz in einer Gruppe gibt, werden die einzelnen (kommagetrennten id's ($mehrere_users) in ein Array aufgetrennt. (spliti (",", $mehrere_users))
Danach wird für jeder User der Gruppe (foreach()) die Ausgabe gemacht.
Alles funktioniert so, nur beginnt danach die while-Schleife nicht von neuem.
Das heisst: Solange nur ein Datensatz pro Gruppe vorkommt (if ($zahl == 1)) geht die while-Schlaufe immer weiter, sobald aber mehrere Datensätze in einer Gruppierung (group) sind (elseif ($zahl > 1)) wird diese foreach() Schleife ausgeführt, die while-Schleife aber nicht mehr weitergeführt.
Woran liegt das? Kann man das anderst lösen?
Danke!!
Léo
Ich habe in einer While Schleife eine foreach() Schleife verschachtelt. Es funktioniert soweit, nur dass die while Schleife anscheinend nach dem foreach() abgebrochen wird.
-> Alles vor und mit dem foreach() wird ausgegen, Datensätze danach nicht mehr.
Konkreter:
PHP:
$result = mysql_query("SELECT user_id, GROUP_CONCAT(user_id), COUNT(project_id) As zahl
FROM users
GROUP BY project_id"
Ich gruppiere (GROUP BY project_id) nach selben Einträgen und speichere dabei alle user_ids der dazugehörigen Gruppen. (GROUP_CONCAT(user_id))
Mit (COUNT(project_id) zähle ich, wieviele Resultate zusammen gruppiert wurden.
PHP:
while ($row = mysql_fetch_array($result))
{
$user_id = $row[0];
$mehrere_users=$row[1];
$zahl=$row[2];
//FALLS NUR EIN DATENSATZ IN DER GRUPPE
if ($zahl == 1)
{
echo("nur ein Datensatz");
}
//FALLS MEHRERE DATENSÄTZE IN GRUPPE
elseif ($zahl > 1)
{
$mehrere_users = spliti (",", $mehrere_users);
foreach ($mehrere_users as $einer_der_users)
{
echo("<span>".$einer_der_users."</span>");
}
}
}
Falls es mehr als 1 Datensatz in einer Gruppe gibt, werden die einzelnen (kommagetrennten id's ($mehrere_users) in ein Array aufgetrennt. (spliti (",", $mehrere_users))
Danach wird für jeder User der Gruppe (foreach()) die Ausgabe gemacht.
Alles funktioniert so, nur beginnt danach die while-Schleife nicht von neuem.
Das heisst: Solange nur ein Datensatz pro Gruppe vorkommt (if ($zahl == 1)) geht die while-Schlaufe immer weiter, sobald aber mehrere Datensätze in einer Gruppierung (group) sind (elseif ($zahl > 1)) wird diese foreach() Schleife ausgeführt, die while-Schleife aber nicht mehr weitergeführt.
Woran liegt das? Kann man das anderst lösen?
Danke!!
Léo
Zuletzt bearbeitet: