Seite 1 von 1

Smarty: schleifenproblem

Verfasst: 16.01.2006 17:01
von witzigerkiller
Hallo, ich möchte gerne Eine Liste mit deren Benutzernamen ausgeben, welche gerade online sind:

Ich benutze dafür die Templates engine SMarty.

Mein bisheriger code sieht so aus:

Navigation.php

Code: Alles auswählen

$user_online = "SELECT `Benutzername` FROM `online`";
$user_online_query = mysql_query($user_online);

$benutzer = mysql_fetch_array($user_online_query);

$smarty->assign('daten',$benutzer);
Und die
Navigation.tpl sieht so aus:

Code: Alles auswählen

    {foreach from=$daten item=User}
    {$User.Benutzername}<br />
    {/foreach}
NUr leider wird dann immer folgendes ausgegeben:
W
W
In der Tabelle online ist nur ein Benutzername vorhanden: Witzigerkiller

aber ich verstehe nicht, warum 2mal W kommt, und warum kein ganzer name drinne steht?!?

Ich habe das alles von diesem Manuel hier:
http://smarty.php.net/manual/de/languag ... oreach.php

Wäre sehr dankbar wenn einer ne idee hätte

Verfasst: 16.01.2006 18:12
von PhilippK
Die Smarty-Funktion

Code: Alles auswählen

{debug}
kann dir bei der Fehlersuche deutlich weiterhelfen. Ein Problem ist sicherlich, dass dir mysql_fetch_array sowohl ein assoziatives als auch ein numerisches Array zurückgibt.

Gruß, Philipp

Verfasst: 16.01.2006 18:30
von witzigerkiller
das debug gibt nichts aus, rein gar nichts.

Wie kann ich das oder wie muss ich das ändern, damit es funktioniert? Bitte helf mir da!

Danke

Verfasst: 16.01.2006 18:35
von Pyramide
Mach doch mal auf PHP-Seite ein print_r($benutzer), um sicherzustellen, daß der Fehler nicht bereits dort auftritt.

Verfasst: 16.01.2006 18:46
von witzigerkiller
dann wird:

Code: Alles auswählen

Array ( [0] => Witzigerkiller [Benutzername] => Witzigerkiller )
Ausgegeben

Verfasst: 16.01.2006 19:51
von witzigerkiller
So, ich habe jetzt in der tpl alles so geändert:

Code: Alles auswählen

    {foreach from=$daten item=User}
    {$daten.Benutzername}<br />
    {/foreach}
Nun wird der komplette Name ausgegeben, aber 2mal.

Wie kann ich das ändern, das er nur einmal angezeigt wird.

Wahrscheinlich liegt es daran:

Code: Alles auswählen

Array ( [0] => Witzigerkiller [Benutzername] => Witzigerkiller )
Aber dann müsste ich in der php datei, irgendwie dieses array in ein nur assoziatives array umwandeln, weil im manuel steht da, das man assoziative braucht.

Hast du da vllt ne ahnung von?

Verfasst: 16.01.2006 20:03
von witzigerkiller
hihi, problem gelöst, aber trotzdem danke:

habe sql abfrage geändert in: mysql_fetch_assoc anstatt array