Frage zum letzten Datensatz eine DB-Abfrage

Der_Jan

Mitglied
Thread Starter
Registriert
06.01.2004
Beiträge
680
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:

ThaHammer

Aktives Mitglied
Registriert
01.06.2004
Beiträge
3.304
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.
 

Der_Jan

Mitglied
Thread Starter
Registriert
06.01.2004
Beiträge
680
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
 

miss.moxy

Aktives Mitglied
Registriert
15.05.2004
Beiträge
6.612
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
 

maceis

Aktives Mitglied
Registriert
24.09.2003
Beiträge
16.880
Oder eine Zeile allein abholen und erst dann in die Schleife gehen.
Dann kann man das Komma an den Anfang stellen ;).
 
K

koli.bri

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
 

Der_Jan

Mitglied
Thread Starter
Registriert
06.01.2004
Beiträge
680
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
 

scope

Aktives Mitglied
Registriert
24.01.2005
Beiträge
4.115
Das wäre jetzt auch mein Vorschlag gewesen.. ist sicher am praktischsten!
 
K

koli.bri

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
 

Jakob

Aktives Mitglied
Registriert
05.01.2004
Beiträge
1.070
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)
 
Oben Unten