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ü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
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
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.