Ich lasse eine Liste im Tabellenlayout aus einer DB ausgeben. Jetzt möchte ich dem Benutzter anzeigen welcher Eintrag neu ist und welcher nicht.
Das Problem ist, er zeigt mir immer die gleiche Grafik an.
echo "<p><table width=\"100%\" border=\"0\" cellspacing=\"2\" cellpadding=\"1\" bgcolor=\"#f5f6fa\">";
echo "<tr class=\"txt\">";
echo "<p>";
if ($alt = $row->rid);
$isnew = '5';
$isnewtime = time() - $isnew;
if ( $row->zeit > $isnewtime ){
echo "<td width=\"30\" height=\"14\">
<div align=\"center\"><img src=\"new.gif\" alt=\"Neu\" align=\"absmiddle\" width=\"30\" height=\"14\"></div></td>";
}
if ( $row->zeit < $isnewtime ){
echo "<td width=\"30\" height=\"14\">
<div align=\"center\"><img src=\"cat.gif\" alt=\"Cat\" align=\"absmiddle\" width=\"10\" height=\"9\"></div></td>";
}
echo "<td colspan=\"4\" width=\"100%\"><a href =$row->url class=\"menü\">$row->titel </a> </td>";
echo "<td height=\"15\" width=\"50\"><div align=\"center\"> ($row->hits) </div></td>";
echo "<td height=\"15\" width=\"50\"></td>";
echo "<td height=\"15\" width=\"50\"></td>";
echo "</tr>";
echo "</table> <p>";
was soll das?if ($alt = $row->rid);
ok, hier ist mal der kompl. Code.
<?php
###############################################
# Die Datensätze auf mehrere Seiten aufteilen
###############################################
// Stellt fest ob eine Seitenzahl übermittelt worden ist
$_GET['p'] = (!isset($_GET['p']) || $_GET['p'] == 0 || empty($_GET['p'])) ? 1 : $_GET['p'];
// Anzahl der Datensätze pro Seite
$perpage = 5;
// Das obere und untere Limit
$limitlower = ($_GET['p']-1)*$perpage+1;
$limitupper = $_GET['p'] * $perpage;
$action = ( isset($_GET['action']) && !empty($_GET['action']) && (trim($_GET['action'])!="") ) ? $_GET['action'] : FALSE;
$id = ( isset($_GET['id']) && !empty($_GET['id']) && (trim($_GET['id'])!="") ) ? $_GET['id'] : FALSE;
if($action == ""){
$sql = "SELECT a.id,a.rid,a.titel,a.url,a.beschreibung,a.zeit,a.hits,
b.rid,b.rubrik
FROM links a INNER JOIN linkrubrik b
USING (rid)
WHERE a.rid=b.rid ORDER BY a.rid,a.id limit ".($limitlower-1).",".$perpage;
}
if($action == "sort"){
$sql = "SELECT a.id,a.rid,a.titel,a.url,a.beschreibung,a.zeit,a.hits,
b.rid,b.rubrik
FROM links a INNER JOIN linkrubrik b
USING (rid)
WHERE a.rid=$_GET[id] ORDER BY a.id limit ".($limitlower-1).",".$perpage;
}
// Enthält die Anzahl der Datensätze
$sql_hits = "select count(*) as hits from links";
if($id)$sql_hits .= " WHERE rid = $id ";
$r_sql_hits = mysql_query($sql_hits);
$r_sql = mysql_query($sql);
if($r_sql){
$hits = mysql_fetch_row($r_sql_hits);
$hits = $hits[0];
$limitupper = ($limitupper > $hits) ? $hits : $limitupper;
$limitlower = ($limitlower > $hits) ? $hits - $perpage : $limitlower;
$limitlower = ($limitlower <= 0) ? 1 : $limitlower;
if($hits==0){
echo " <div align=\"center\"> «« Keine Datensätze vorhanden »» </div>";
}
else
{
echo '</p>';
$alt='0';
while ($row = mysql_fetch_object($r_sql))
{
// Kategorien
if($row->rid != $alt)
{
echo "<table border=\"0\" cellspacing=\"1\" cellpadding=\"2\" width=\"100%\" bgcolor=\"#333333\">";
echo "<tr>";
echo "<td width=\"100%\" height=\"14\" class=\"cattitel\">.: $row->rubrik</td>";
echo "</tr>";
echo "</table> ";
}
// Wenn die Kategorien gleich sind dann
echo "<p><table width=\"100%\" border=\"0\" cellspacing=\"2\" cellpadding=\"1\" bgcolor=\"#f5f6fa\">";
echo "<tr class=\"txt\">";
echo "<p>";
if ($alt = $row->rid);
$isnew = '5';
$isnewtime = time() - $isnew;
if ( $row->zeit > $isnewtime ){
echo "<td width=\"30\" height=\"14\">
<div align=\"center\"><img src=\"new.gif\" alt=\"Neu\" align=\"absmiddle\" width=\"30\" height=\"14\"></div></td>";
}
if ( $row->zeit < $isnewtime ){
echo "<td width=\"30\" height=\"14\">
<div align=\"center\"><img src=\"cat.gif\" alt=\"Cat\" align=\"absmiddle\" width=\"10\" height=\"9\"></div></td>";
}
echo "<td colspan=\"4\" width=\"100%\"><a href =$row->url class=\"menü\">$row->titel </a> </td>";
echo "<td height=\"15\" width=\"50\"><div align=\"center\"> ($row->hits) </div></td>";
echo "<td height=\"15\" width=\"50\"></td>";
echo "<td height=\"15\" width=\"50\"></td>";
echo "</tr>";
echo "</table> <p>";
}
}
// Feststellen ob alles auf eine Seite passt
$page = ($hits<$perpage) ? 1 : ceil($hits/$perpage);
if($_GET['p'] > 1){
$left_arrow = '<a href=index.php?p='.($_GET['p']-1).' class=nav> Back </a>';
}else{
$left_arrow = '<span class="title"></span>';
}
if($_GET['p'] > $page){
$right_arrow = '<a href="index.php?p='.($_GET['p']+1).'" class="nav"> Next </a>';
}else{
$right_arrow = '<span class="nav"> </span>';
$lastpage = '<span class="nav"> </span>';
}
}
?>
schaust du dir bitte mal meinen oberen post an, analysierst diesen und stellst den/die fehler ab ...
Big Chief
06-05-2004, 13:46
Original geschrieben von maffy
$isnew = '5';
$isnewtime = time() - $isnew;
Also hier fallen mir schonmal zwei Sachen auf:
1. du weisst $isnew einen String zu und willst diesen dann von einer Zahl subtrahieren und ich weiss nicht, ob PHP das richtig berechnet (bin z.Z. eher mit Java zu Gange ... und das würde jedenfalls aufschreien ;) )
2. $isnew sind ja nur 5 Sekunden ... also zeigt er nur Sachen als "neu" an, die höchsten 5 Seks in der DB stehen .. is das nich bissi wenig?
Eigendlich soll das so sein, dass er mir die Einträge der letzten 5 Tage als neu anzeigt.
du weisst $isnew einen String zu und willst diesen dann von einer Zahl subtrahieren und ich weiss nicht, ob PHP das richtig berechnet Das juckt php normalerweise nicht.
@maffy
für die letzten fünf tage muss $isnew=432000 sein (Sekunden von fünf tagen)
Ich habe das jetzt so gemacht. Die Zeit muss ich noch entsprechend auf fünf Tage erhöhen.
$time = time();
$diff = round("$time" - "86400");
if ( $row->zeit > $diff ){
echo "<td width=\"30\">
<div align=\"center\"><img src=\"new.gif\" alt=\"Neu\" align=\"absmiddle\" width=\"30\" height=\"14\"></div></td>";
}else{
echo "<td width=\"30\">";
echo "<div align=\"center\"><img src=\"cat.gif\" alt=\"Cat\" align=\"absmiddle\" width=\"10\" height=\"9\"></div>";
echo "</td>";
}
Big Chief
07-05-2004, 11:24
Und haut es nun hin, oder funktioniert es immernoch nicht ....
Wobei ich nicht kapiere, wozu das round() gut sein sein soll ... time() liefert immer ganze Zahlen zurück.
$diff = time()-86400;
Das würde es auch tun ... nur so als Zusatzinfo ;)