problem mit newssystem und templates

Nobody
ich habe da ein problem mit meinem selbst zusammen gebauten newssystem und meinem template system

und zwar soll das Datum aller News in der Navigation angezeigt werden.

Hier mal die Funktion zum ersetzen der variable in die template variable:
php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:

<?
function newsnav() {
$sql "SELECT * FROM news ORDER BY date ASC";
$query mysql_query($sql) OR die(mysql_error());
while($row mysql_fetch_object($query)) {
$newsid $row->id;
$newsdate $row->date;
$newsnav "<a class='menu' href='news.php?show=news&id=".$newsid."'>".$newsdate."</a>";
return $newsnav;
}
}
class tpl{

    // $tpl : wenn gesetzt auswahl sonst standard layout
     function tpl($tpl='layout.tpl.php'){
          $this->tags = array('SERVERIP'=>'Server IP: '.$_SERVER['SERVER_ADDR'],
                            'COPY'=>$copy_ausgabe,
                            'ADMIN'=>shownavadmin(),
                            'NEWSNAV'=>newsnav());
        $this->tpl'templates/'.$tpl;                 // ordner der templates + dateiname
        if(!file_exists($this->tpl)){
            die("<b>Template Error:</b> Template does not exist!
                <br><small> Template Engine (version 1.2) by
                <a href='http://nobody.in-the-dark.de'><b>Nobody</b></a></small> ");
        }
    }

    // Tag nen Wert zuordnen
    function assign($tag,$value){
        $this->tags[$tag] = $value;
    }

    // tags mit werten ersetzen und die tags im tpl ersetzen
     function parse(){
        $tpl_content file_get_contents($this->tpl);
        foreach ($this->tags as $key => $val){
          $tag "<!--{".$key."}-->";         // AUSSEHEN der Tags
          $tpl_content str_replace($tag,$val,$tpl_content);
        }
    return $tpl_content;
    }
}
?>


und hier mal der code der templates:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
....

<div id="left">
  <div class="menucontainer">
   <p class="menutitle">News</p>
   <!--{NEWSNAV}-->
   <a class="menu" href=""></a>
   <a class="menu" href="index.php">Zur&uuml;ck zur Site</a>
  </div>
</div>
<br>
<div id="content">
<br>
...


vielleicht könnt ihr mir ja helfen
GreenRover
Hast du den vondir geposteten Code mal angeschaut?
Der enthält nichts was wirklich auf die news hinschliesen lassen würde.

Nur einen Verweis auf die Funktion: newsnav()
Der Coder der selbigen währe vermutlich wesentlich interessanter
Nobody
hier is mal die ganze news.php:

php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
<?
include ("inc/includes.php");

switch($_GET['show']) {
case "news":

$sql "SELECT * FROM news WHERE id='".$_GET['id']."'";
$query mysql_query($sql) OR die(mysql_error());
$row mysql_fetch_object($query);
$inhalt .= "
<b>News Nummer:</b> ".$row->id."<br>
<b>Eingetragen am:</b> ".$row->date." <b>um</b> ".$row->time." <b>Uhr</b><br>
<b>Eingetragen von (IP):</b> ".$row->ip."<br>
<b>Thema:</b> ".$row->subject."<br><br>

".$row->inhalt;

break;

case "last":

$sql "SELECT * FROM news ORDER BY date ASC LIMIT 1";
$query mysql_query($sql) OR die(mysql_error());
$row mysql_fetch_object($query);
$inhalt .= "
<b>News Nummer:</b> ".$row->id."<br>
<b>Eingetragen am:</b> ".$row->date." <b>um</b> ".$row->time." <b>Uhr</b><br>
<b>Eingetragen von (IP):</b> ".$row->ip."<br>
<b>Thema:</b> ".$row->subject."<br><br>
".$row->inhalt;

break;

default;

$inhalt .= "<h1>News Übersicht</h1><br><br>";
$sql "SELECT * FROM news ORDER BY date ASC";
$query mysql_query($sql) OR die(mysql_error());
while ($row mysql_fetch_object($query)) {
$inhalt .= "<a href='news.php?show=news&id=".$row->id."'>News vom ".$row->date."</a><br>";
}

break;
}
include ("inc/generiern.php");
$tpl = new tpl('news.tpl.php');
$tpl->assign('TITLE''News...');
$tpl->assign('SITETITLE''News vom '.$row->date);
$tpl->assign('INHALT'$inhalt);
$tpl->assign('NEWSID'$newsid);
$tpl->assign('NEWSDATE'$newsdate);
$tpl->assign('GENERIERT'$generiert_ausgabe);
echo $tpl->parse();
?>
GreenRover
Das sit es auch nicht, in irgent ienr datei muss was wie

function newsnav() {

....
.....
....
}

stehen, wobei die .... entlichen Zeilen Code sein können.

Genau, das ist es, was angepasst werden muss.
Nobody
das steht ja in der funktion
php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:

<?
function newsnav() {
$sql "SELECT * FROM news ORDER BY date ASC";
$query mysql_query($sql) OR die(mysql_error());
while($row mysql_fetch_object($query)) {
$newsid $row->id;
$newsdate $row->date;
$newsnav "<a class='menu' href='news.php?show=news&id=".$newsid."'>".$newsdate."</a>";
return $newsnav;
}
}
...
?>


nur ich weiß ja nicht wie die angepasst werden muss
GreenRover
die giebt doch nur das datum aus?!

gieb mal ein beispiel, wie du die ausgabe haben möchtest.

Dazu währe der aufbau der tabelle `news` ihr Ihahlt noch interessant
Nobody
Zitat:
Original von GreenRover
die giebt doch nur das datum aus?!

gieb mal ein beispiel, wie du die ausgabe haben möchtest.

Dazu währe der aufbau der tabelle `news` ihr Ihahlt noch interessant


natürlich gibt die nur das datum aus, es ist ja meine absicht das in der navigation die letzten 10 daten ausgegeben werden und nach dem 10. Eintrag ein link mit Archiv angezeigt wird (nur so weit war ich ja noch nich) es ist erstmal wichtig das die daten in der reihenfolge ASC (also des neuste nach oben) angezeigt werden.

der aufbau der Tabelle News ist:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
CREATE TABLE `news` (
  `id` int(11) NOT NULL,
  `name` varchar(250) NOT NULL,
  `date` varchar(250) NOT NULL,
  `subject` varchar(250) NOT NULL,
  `inhalt` text NOT NULL,
  `ip` varchar(250) NOT NULL,
  `time` varchar(250) NOT NULL,
  PRIMARY KEY  (`id`)
);


also es soll so aussehen (mal als text beispiel)

06.01.2007
04.01.2007
30.01.2007
usw.(bis 10 einträge vorhanden)
----------------
Archiv
----------------
Zurück zur Page


so sollte das ungefähr aussehen
GreenRover
versuche es mal so:


php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
<?php function newsnav() 
{
 $newsnav '';
 $sql 'SELECT `id`, `date` FROM `news` ORDER BY `date` ASC LIMIT 0, 10';
 $query mysql_query($sql) OR die(mysql_error());
 while($row mysql_fetch_assoc($query))
 {
  $newsnav .= '<a class="menu" href="news.php?show=news&id='.$row['id'].'">'.$row['date'].'</a><br />';
 }
 return $newsnav;
} ?>
Nobody
ok des funktioniert soweit nur jetzt ist ein kleiner abstand zwischen den einzelnen a tags
GreenRover
kannst du kein html / css???

mach doch ein ein style="padding-bottom: 5px;"
Nobody
Zitat:
Original von GreenRover
kannst du kein html / css???

mach doch ein ein style="padding-bottom: 5px;"


doch kann ich nur ich hab nich gesehn das du bei der $newsnav am schluss nochn <br> hingemacht hast

jetzt geht alles muss nur noch des mit den 10 einträgen machn

ich danke dir Freude
GreenRover
das macht doch das:

LIMIT 0, 10

abfragen ob es wirklich 10 sind kannst ja mit


if (mysql_num_rows($query)==10)
Nobody
Zitat:
Original von GreenRover
das macht doch das:

LIMIT 0, 10

abfragen ob es wirklich 10 sind kannst ja mit


if (mysql_num_rows($query)==10)



also soweit funktioniert alles nur die daten werden alle vermischt angezeigt

EDIT: bei den letzten news wird die 4. anstatt die 12. angezeigt verwirrt
GreenRover
Jo, das liegt daran, das du das Datum falsch abgespeichert hast.

der felt type würde date heisen und das fomat währe: YYYY-MM-DD

Und dann kannst die die ausgabe mit fogenden wieder formatieren:


DATE_FORMAT("%d.%m.%Y", `date`) AS `date`


Sonnst kannst du nur noch an Hand der ID sortieren.
Aber besser ist es natur gleich die Datenbank korrekt zu halten.