PHP + Smarty

QMartini

Grünschnabel
Hallo zusammen,
habe gestern Abend erst begonnen mich in Smarty einzuarbeiten. Bis auf eine Kleinigkeit (?) funktioniert auch alles...

Ich habe eine Tabelle (einer MySQL Datenbank) in der 2 Datensätze gespeichert sind. Beide Datensätze erhalten neben Feldern wie "name", etc auch jeweils einen "timestamp".

Problem:
Obwohl ich den timestamp innerhalb der Schleife verarbeite, wird anscheinend für beide Datensätze der gleiche gespeichert. Oder zumindest zweimal der gleiche ausgegeben..

Vielleicht kann mir ja jemand von euch etwas auf die Sprünge helfen..

---

index.php
PHP:
<?php
 error_reporting(E_ALL);
 define('SMARTY_DIR', 'smarty/');
 require(SMARTY_DIR.'Smarty.class.php');
 $smarty = new Smarty;

 mysql_connect("localhost", "username","password");
 mysql_select_db("web1");

 $abfrage = "SELECT * FROM guestbook ORDER BY timestamp DESC";

 $ergebnis = mysql_query($abfrage);
 $eintrag = array();

 while($row = mysql_fetch_assoc($ergebnis))
  {

   $timestamp = $row['timestamp'];

   $datum = date("d.m.Y",$timestamp);
   $zeit = date("H:i",$timestamp);

   $smarty->assign('datum', $datum);
   $smarty->assign('zeit', $zeit);


   $eintrag[] = $row;
  }

 $smarty->assign('eintrag', $eintrag);
 $smarty->display('index.tpl');
?>

index.tpl
PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
 <title>Smarty Test</title>
 <meta http-equiv="Content-Type" content="text/xhtml; charset=ISO-8859-1" />
</head>

<body>

{foreach from=$eintrag item=eintrag}

<div class="eintrag">
 <div class="name">{$datum} um {$zeit} - {$eintrag.name} aus {$eintrag.ort}</div>
 <div class="kontakt"><a href="mailto:{$eintrag.email}">eMail</a> | <a href="{$eintrag.url}">www</a></div>
 <div class="text">{$eintrag.text}</div>
</div>

{/foreach}


</body>

</html>
 
Weil du die Variablen jedesmal überschreibst.

PHP:
$smarty->assign('datum', $datum);
   $smarty->assign('zeit', $zeit);

Probier es mal so:

PHP:
while($row = mysql_fetch_assoc($ergebnis))
  {

   $timestamp = $row['timestamp'];

   $row['datum'] = date("d.m.Y",$timestamp);
   $row['zeit'] = date("H:i",$timestamp);

   $eintrag[] = $row;
  }

Und dann im Template:

PHP:
<div class="name">{$eintrag.datum} um {$eintrag.zeit} - {$eintrag.name} aus {$eintrag.ort}</div>
 
Auweh, tatsächlich... ich habe bei jedem Durchgang die Variablen $datum und $zeit überschrieben. Danke für den Hinweis, es klappt jetzt tatsächlich! - Merci :)
 
Zurück