letzten Datensatz unterschiedlich darstellen
letzten Datensatz unterschiedlich darstellen
am 21.04.2005 18:32:25 von ingo.stoecker
Hallo,
ich habe das Problem den letzten ausgewählten Datensatz aus mySQL
unterschiedlich darzustellen. Ich möchte Personen (hier Spieler einer
Mannschaft) hintereinander mit Komma getrennt in eine Zeile schreiben.
Hinter dem letzten Namen sollte kein Komma stehen, da es einfach blöd
aussieht. Habe bereits eine Möglichkeit (Zählervariable mit count(liste) auf
Gleichheit gecheckt) probiert, leider ohne Erfolg. Wer weis Rat?
// Angaben zu nicht eingesetzten oder fehlenden Spielern
$zaehler = 0;
echo "folgende Spieler haben gefehlt oder wurden nicht
eingesetzt:
";
$query = "SELECT vorname, name FROM `stats_04_05_02_01` WHERE einsatz = 0
ORDER BY name ASC";
$result = mysql_query($query);
while (list($vorname,$name) = mysql_fetch_row($result))
{
$zaehler++;
if ($zaehler == count($list))
echo $vorname." ".$name;
else
echo $vorname." ".$name.", ";
}
mysql_free_result($result);
echo "
";
--
MfG,
Ingo Stöcker
www.kobe8.de
www.svwassmannsdorf.de
www.asbh-potsdam.de
www.ihrkuechenpartner.com
Re: letzten Datensatz unterschiedlich darstellen
am 21.04.2005 18:58:35 von Carsten Wiedmann
"Ingo Stöcker" schrieb:
> ich habe das Problem den letzten ausgewählten Datensatz aus mySQL
> unterschiedlich darzustellen. Ich möchte Personen (hier Spieler einer
> Mannschaft) hintereinander mit Komma getrennt in eine Zeile
> schreiben. Hinter dem letzten Namen sollte kein Komma stehen, da es
> einfach blöd aussieht. Habe bereits eine Möglichkeit (Zählervariable
> mit count(liste) auf Gleichheit gecheckt) probiert, leider ohne
Das mit dem Zähler würde so nur gehen, wenn count das Ergebnis von
mysql_num_rows() wäre, welches dir mitteilt, wieviel row's überhaupt zum
Ausgeben sind.
Eine einfache Möglichkeit wäre noch, in der while-Schleife die
Ergebnisse nicht direkt auszugeben, sondern in einem String zu sammeln.
Diesen String nach der while-Schleife um 2 Stellen kürzen und dann erst
mit echo ausgeben.
Gruß
Carsten
Re: letzten Datensatz unterschiedlich darstellen
am 21.04.2005 19:07:24 von Andreas Mussgiller
Ingo Stöcker wrote:
> Hallo,
>
> ich habe das Problem den letzten ausgewählten Datensatz aus mySQL
> unterschiedlich darzustellen. Ich möchte Personen (hier Spieler einer
> Mannschaft) hintereinander mit Komma getrennt in eine Zeile schreiben.
> Hinter dem letzten Namen sollte kein Komma stehen, da es einfach blöd
> aussieht. Habe bereits eine Möglichkeit (Zählervariable mit count(liste)
> auf Gleichheit gecheckt) probiert, leider ohne Erfolg. Wer weis Rat?
Der Ansatz ist schon nicht schlecht, allerdings willst du $zaehler
mit der Anzahl "gefetchter" Zeilen vergleichen und nicht mit der
der Anzahl der Elemente in der Liste (hier 2). Also:
$zaehler = 0;
$result = mysql_query($query);
$nRows = mysql_num_rows($result);
while (list($vorname,$name) = mysql_fetch_row($result)) {
$zaehler++;
if ($zaehler == $nRows) {
blah blah blah
Andreas
--
.... sometimes evil drives a minivan ...
Re: letzten Datensatz unterschiedlich darstellen
am 21.04.2005 19:47:54 von Anselm Helbig
At Thu, 21 Apr 2005 18:32:25 +0200,
"Ingo Stöcker" wrote:
>=20
> Hallo,
>=20
> ich habe das Problem den letzten ausgewählten Datensatz aus mySQL
> unterschiedlich darzustellen. Ich möchte Personen (hier Spieler einer
> Mannschaft) hintereinander mit Komma getrennt in eine Zeile schreiben.
> Hinter dem letzten Namen sollte kein Komma stehen, da es einfach blöd
> aussieht. Habe bereits eine Möglichkeit (Zählervariable mit cou=
nt(liste) auf
> Gleichheit gecheckt) probiert, leider ohne Erfolg. Wer weis Rat?
>=20
>
>=20
> // Angaben zu nicht eingesetzten oder fehlenden Spielern
> $zaehler =3D 0;
> echo "folgende Spieler haben gefehlt oder wurden nicht
> eingesetzt:
";
> $query =3D "SELECT vorname, name FROM `stats_04_05_02_01` WHERE einsatz =
=3D 0
> ORDER BY name ASC";
> $result =3D mysql_query($query);
> while (list($vorname,$name) =3D mysql_fetch_row($result))
> {
> $zaehler++;
> if ($zaehler == count($list))
> echo $vorname." ".$name;
> else
> echo $vorname." ".$name.", ";
> }
> mysql_free_result($result);
> echo "
";
>=20
>
>=20
ich finde es am elegantesten, die ergebnisse erst in einem array zu
sammeln und dann die kommata mit join() einzufügen. braucht dafür=
eine
variable mehr, und etwas mehr speicher. und, man sollte das array
unbedingt initialisieren, für den fall, dass der query mal kein
ergebnis wirft, sonst meckert join() fürchterlich. 8;-)
$namen =3D array();
while (list($vorname, $name) =3D mysql_fetch_row($result)) {
$namen[] =3D $vorname . " " . $name;
}
echo join(", ", $namen);
have fun,=20
anselm
Re: letzten Datensatz unterschiedlich darstellen
am 21.04.2005 20:18:12 von Stefan Ohrmann
Hallo,
ich habs mal sinnvoll gekürzt.
Am 21.04.2005 18:32 schrieb Ingo Stöcker:
>
> while (list($vorname,$name) = mysql_fetch_row($result))
> {
$result[] = $vorname." ".$name;
> }
echo implode(', ', $result);
>
MfG
Stefan
--
The computing field is always in need of new cliches.
- Alan Perlis
Re: letzten Datensatz unterschiedlich darstellen
am 21.04.2005 20:25:20 von ingo.stoecker
Hallo Anselm,
habe alle Vorschläge probiert und deine klappt am besten und ist eigentlich
der trivialiste. Man müsste halt mal alle PHP-Funktionen auswendig lernen
;-)
MfG,
Kobe #8
"Anselm Helbig" schrieb im Newsbeitrag
news:87ll7cqawl.wl@nospam.anselm.chemie.fu-berlin.de...
At Thu, 21 Apr 2005 18:32:25 +0200,
"Ingo Stöcker" wrote:
>
> Hallo,
>
> ich habe das Problem den letzten ausgewählten Datensatz aus mySQL
> unterschiedlich darzustellen. Ich möchte Personen (hier Spieler einer
> Mannschaft) hintereinander mit Komma getrennt in eine Zeile schreiben.
> Hinter dem letzten Namen sollte kein Komma stehen, da es einfach blöd
> aussieht. Habe bereits eine Möglichkeit (Zählervariable mit count(liste)
auf
> Gleichheit gecheckt) probiert, leider ohne Erfolg. Wer weis Rat?
>
>
>
> // Angaben zu nicht eingesetzten oder fehlenden Spielern
> $zaehler = 0;
> echo "folgende Spieler haben gefehlt oder wurden nicht
> eingesetzt:
";
> $query = "SELECT vorname, name FROM `stats_04_05_02_01` WHERE einsatz = 0
> ORDER BY name ASC";
> $result = mysql_query($query);
> while (list($vorname,$name) = mysql_fetch_row($result))
> {
> $zaehler++;
> if ($zaehler == count($list))
> echo $vorname." ".$name;
> else
> echo $vorname." ".$name.", ";
> }
> mysql_free_result($result);
> echo "
";
>
>
>
ich finde es am elegantesten, die ergebnisse erst in einem array zu
sammeln und dann die kommata mit join() einzufügen. braucht dafür eine
variable mehr, und etwas mehr speicher. und, man sollte das array
unbedingt initialisieren, für den fall, dass der query mal kein
ergebnis wirft, sonst meckert join() fürchterlich. 8;-)
$namen = array();
while (list($vorname, $name) = mysql_fetch_row($result)) {
$namen[] = $vorname . " " . $name;
}
echo join(", ", $namen);
have fun,
anselm
Re: letzten Datensatz unterschiedlich darstellen
am 22.04.2005 00:24:18 von Niels Braczek
Stefan Ohrmann schrieb:
> ich habs mal sinnvoll gekürzt.
^^^^^^^^
Das wage ich mal zu bezweifeln.
> Am 21.04.2005 18:32 schrieb Ingo Stöcker:
>
>>
>> while (list($vorname,$name) = mysql_fetch_row($result))
^^^^^^^
>> {
> $result[] = $vorname." ".$name;
^^^^^^^
Damit hast du die Verbindung zu den Daten gekappt.
>> }
> echo implode(', ', $result);
>>
Eine eigene Variable für das Array einzuführen war durchaus eine
sinnvolle Idee.
MfG
Niels
Re: letzten Datensatz unterschiedlich darstellen
am 22.04.2005 00:29:00 von Anselm Helbig
> ich habs mal sinnvoll gekürzt.
>=20
> >
> > while (list($vorname,$name) =3D mysql_fetch_row($result))
> > {
> $result[] =3D $vorname." ".$name;
> > }
> echo implode(', ', $result);
> >
na, das kann aber nicht funktionieren. in $result steht doch schon die
ergebnis-resource. ausserdem ist das $name =3D array(); nicht
überflüssig: wenn der query 0 rows zurückliefert ist $name
uninitialisiert, mithin kein array, implode/join geben dann einen
fehler zurück. hab ich schon oft genug gesehen. 8;-)
gruss,=20
anselm
Re: letzten Datensatz unterschiedlich darstellen
am 22.04.2005 20:31:26 von Juergen Wille
On Thu, 21 Apr 2005 18:32:25 +0200, Ingo Stöcker wrote:
hallo,
habe jetzt Deine Umgang mit mysql-Befehlen nicht überprüft, aber das mit
dem Komma (oder was anderem, z.B. die Anwendung eines styles) geht am
einfachsten so:
$trenner = ",";
$zeigeTrenner = false;
> while (list($vorname,$name) = mysql_fetch_row($result)) {
if ($zeigeTrenner){
echo $trenner;
}else{
$zeigeTrenner=TRUE;
}
> echo $vorname." ".$name;
}
Gruß Jürgen
Re: letzten Datensatz unterschiedlich darstellen
am 24.04.2005 14:30:31 von Peter
Ingo Stöcker wrote:
> Hallo,
>
> ich habe das Problem den letzten ausgewählten Datensatz aus mySQL
> unterschiedlich darzustellen. Ich möchte Personen (hier Spieler einer
> Mannschaft) hintereinander mit Komma getrennt in eine Zeile schreiben.
> Hinter dem letzten Namen sollte kein Komma stehen, da es einfach blöd
> aussieht. Habe bereits eine Möglichkeit (Zählervariable mit count(liste) auf
> Gleichheit gecheckt) probiert, leider ohne Erfolg. Wer weis Rat?
>
>
>
> // Angaben zu nicht eingesetzten oder fehlenden Spielern
> $zaehler = 0;
> echo "folgende Spieler haben gefehlt oder wurden nicht
> eingesetzt:
";
> $query = "SELECT vorname, name FROM `stats_04_05_02_01` WHERE einsatz = 0
> ORDER BY name ASC";
> $result = mysql_query($query);
---schnipp---
> while (list($vorname,$name) = mysql_fetch_row($result))
> {
> $zaehler++;
> if ($zaehler == count($list))
> echo $vorname." ".$name;
> else
> echo $vorname." ".$name.", ";
> }
---schnipp---
> mysql_free_result($result);
> echo "
";
>
>
>
Hi Ingo,
list($vorname,$name) = mysql_fetch_row($result);
echo $vorname." ".$name;
while (list($vorname,$name) = mysql_fetch_row($result))
{
echo ", ".$vorname." ".$name;
}
sollte das tun.
Schöne Grüße,
Peter
--
http://www.peter-kuehnlein.net
"A man talking sense to himself is no madder than
a man talking nonsense not to himself."
(Rosencrantz & Guildenstern are Dead)
Re: letzten Datensatz unterschiedlich darstellen
am 26.04.2005 13:18:22 von werbung
Juergen Wille schrieb:
> On Thu, 21 Apr 2005 18:32:25 +0200, Ingo Stöcker wrote:
>=20
> hallo,
> habe jetzt Deine Umgang mit mysql-Befehlen nicht überprüft, aber da=
s mit
> dem Komma (oder was anderem, z.B. die Anwendung eines styles) geht am
> einfachsten so:
>=20
> $trenner =3D ",";
> $zeigeTrenner =3D false;
>=20
>> while (list($vorname,$name) =3D mysql_fetch_row($result)) {
>=20
> if ($zeigeTrenner){
> echo $trenner;
> }else{
> $zeigeTrenner=3DTRUE;
> }
>=20
>> echo $vorname." ".$name;
>=20
> }
>=20
> Gruß Jürgen
Noch ein wenig kürzer: ;-)
$trenner =3D '';
while(list($vorname,$name) =3D mysql_fetch_row($result)) {
echo $trenner.$vorname.' '.$name;
$trenner =3D ', ';
}
Ren=E9
--=20
Informatiker haben Humor, allerdings lässt sich der nur schwer
im Quelltext ausdrücken. Ausnahme Microsoft: Dort arbeiten die
Kabarettisten der Informatik, die sogar lustigen Quelltext schreiben
können. [Oliver Schad in dclpm=
]