for-Schleife in einer Variabel

pascal007

Grünschnabel
Hallo :D

Ich schlage mich gerade mit einem Problem rum: ich lese Smilies aus einer DB aus (Spalten: id, smiliename, smilieimage). Das ganze will ich dann in einer Tabelle zu je 4 Smilies pro Zeile, dann soll eine neue Zeile kommen. Der unten angefügte Code läuft ohne Probleme, aber nur wenn ich den Code direkt als Echo ausgebe. Wenn ich anstatt das ganze als Echo ausgebe in eine Variable speichere und danach später wieder aufrufen will, wird nur das erste Smilie angezeigt (hier die Beispielseite). Irgnedwo muss also ein Logikfehler oder ein Programmierfehler sein, aber ich habe keine Ahnung wo.

PHP:
<?php

include("includes/config.php");

include("includes/class_template.inc.php");

//
// Smiliefunction
//
$selectsmilies = mysql_query("SELECT * FROM ".$tblpre."smilies GROUP BY smilieimage LIMIT 0,16");
$countsmilies = mysql_num_rows($selectsmilies);

echo"<table><tr>";
for($i=1;$smilie=mysql_fetch_row($selectsmilies);$i++)  
{
  echo $smilies = '<td align=\"center\">'.$smilie[2].' <b>LIKE</b> '.$smilie[1].'</td>';
  if ($i % 4 == 0)
  {
  echo $smilies = '</tr><tr>';
  }
}
echo"</tr></table>";

echo"<table border=\"1\"><tr>$smilies</tr></table>";

?>

Das Schlimme: ich hatte es schon mal korrekt hinbekommen, aber dann weiter gemacht und die History in meinem Editor ging nicht mehr so weit zurück. Ich hab keine Ahnung mehr was ich da anders gemacht habe.

Ich hoffe ihr könnt mir weiterhelfen :D.
 
Nein ich speichere es in eine einfache Variable "$smilies". Wäre ein Array eine bessere Lösung und wie würde das genau aussehen?

Ich will die ganze Tablle die dabei erstell wird aber am Schluss in einer Variabel haben, da ich ein Template-System nutze.

EDIT Ah hab das Problem gefunden habe zwei "." Punkte vergessen. So t der Code wunderbar:

PHP:
<?php

include("includes/config.php");

include("includes/class_template.inc.php");

//
// Smiliefunction
//
$selectsmilies = mysql_query("SELECT * FROM ".$tblpre."smilies GROUP BY smilieimage LIMIT 0,16");
$countsmilies = mysql_num_rows($selectsmilies);

echo"<table><tr>";
for($i=1;$smilie=mysql_fetch_row($selectsmilies);$i++)  
{
  echo $smilies .= '<td align=\"center\">'.$smilie[2].' <b>LIKE</b> '.$smilie[1].'</td>';
  if ($i % 4 == 0)
  {
  echo $smilies .= '</tr><tr>';
  }
}
echo"</tr></table>";

echo"<table border=\"1\"><tr>$smilies</tr></table>";

?>
 
Zuletzt bearbeitet:
du überschreibst doch mit jedem schleifendurchlauf die Variable du musst wenn dus innen array speichern willst einfach $smilies[] anstat $smilies schreiben. Diese Variable dann einfach per Schleife wieder ausgeben.
 
Zurück