Frage zum letzten Datensatz eine DB-Abfrage

Der_Jan

Der_Jan

Aktives Mitglied
Thread Starter
Dabei seit
06.01.2004
Beiträge
712
Reaktionspunkte
30
Moin,

ich frage eine Datenbank ab, als zurückgeliefertes Ergebnis bekomme ich mehrere Datensätze. Diese möchte als Aufzählung ausgeben, getrennt durch Kommata. Also eine Schleife durchlaufen lassen und jeweils das Satzzeichen anfügen. Wie bekomme ich es hin, dass nach dem letzten Datensatz kein Komma angezeigt wird?

Danke!
Der Jan
 
Zuletzt bearbeitet:
lass die schleife nicht so weit laufen und hänge den letzten Datensatz nach der Schleife noch an. Wäre eine Möglichkeit! Oder du schneidest das letzte Zeichen wieder weg. Wäre eine zweite Möglichkeit.
 
ThaHammer schrieb:
lass die schleife nicht so weit laufen und hänge den letzten Datensatz nach der Schleife noch an. Wäre eine Möglichkeit!

Das stellt mich vor Probleme. Mein Code sieht wie folgt aus:

PHP:
$request=mysql_query("SELECT ID FROM user WHERE blablabla");

if($request)

{
while ($result=mysql_fetch_array($request))
					
	{ echo"$result[ID],"; }

}

Wie und wo kann ich hier eine Sperre setzen, damit $i-1 Datensätz die Schleife durchlaufen? Und wie spreche ich anschließend den letzten Datensatz an?

Bin für jeden weiteren sachdienlichen Hinweis dankbar.

Der Jan
 
Ich würd alles in einen String schreiben und dann die letze(n)
überflüssige(n) Stelle(n) mit substr abschneiden…
Ist in meinen Augen einfacher… :)


lea
 
Oder eine Zeile allein abholen und erst dann in die Schleife gehen.
Dann kann man das Komma an den Anfang stellen ;).
 
lea schrieb:
Ich würd alles in einen String schreiben und dann die letze(n)
überflüssige(n) Stelle(n) mit substr abschneiden…
Ist in meinen Augen einfacher… :)


lea

Wird bei seiner Schleife das einfachste sein!
 
Oder:

Du schreibst die Werte zuerst nacheinander in ein Array, und fügst die dann mit "implode()" zusammen.
Sofern es sich um PHP handelt.

Allerdings solltest du da mit mysql_fetch_array aufpassen, da in dem Ergebnissarray jeder Satz zweimal vorkommt (einmal mit dem Zahlindex des Arrays, und einmal mit dem Spaltennamen als Array-Bezeichner. Lässt sich umgehen, indem man als zweites Parameter von mysql_fetch_array() die Konstante MYSQL_ASSOC angibt.
Aber diesbezüglich lässt sich das ganze mit Testausgaben via print_r() besser erkennen :)

Also: Ergbnisse aus einer Datenbank in ein Array speichern, und die einzelnen Punkte mit implode() zusammenfügen :)

gruß
Lukas
 
Klappt

Guten Morgen,
hab mir das Thema Arrays genauer angesehen und es funktioniert. :)

PHP:
{
while ($result=mysql_fetch_array($request))
							
	{
	$array[]=" $result[ID]";
	}
						
$stringmitkommata=implode(",",$array);
}

Oder ist das noch immer zu kompliziert? Als PHP-Einsteiger denk ich gelegentlich etwas komplizierter als i.d.R. nötig (war schon dabei, für das Komma-Problem eine vielzeilige (>100) if-elseif-else-Konstruktion aufzubauen). Danke für die verschiedenen Lösungsansätze.

Der Jan
 
Das wäre jetzt auch mein Vorschlag gewesen.. ist sicher am praktischsten!
 
Der_Jan schrieb:
Oder ist das noch immer zu kompliziert? Als PHP-Einsteiger denk ich gelegentlich etwas komplizierter als i.d.R. nötig (war schon dabei, für das Komma-Problem eine vielzeilige (>100) if-elseif-else-Konstruktion aufzubauen). Danke für die verschiedenen Lösungsansätze.

Ob es Dir zu kompliziert ist, wirst nur Du entscheiden können :)
Aber es ist, soweit ich weiß, die zeilenärmste Variante.

Bezüglich der if-eliseif-else-Konstruktion:
Da möchte ich nur kurz den switch-case-Befehl in den Raum werfen.
Damit lässt sich in der Regel ein if-elseif-else vermeiden :)

gruß
Lukas
 
Minimal-Ergänzung: Ich würde das Leerzeichen hinter dem Komma mit in den implode() nehmen und nicht ins Array stecken:

PHP:
{
while ($result=mysql_fetch_array($request))
							
	{
	$array[]=$result[ID];
	}
						
$stringmitkommata=implode(", ",$array);
}
(so hast Du kein Leerzeichen am Anfang und Dein Array ist besser aufgebaut, falls Du es nochmal für was anderes benutzen möchtest)
 
Zurück
Oben Unten