Kleines eigenes Template System aber wie

Vigo

Mitglied
Schönen Abend allerseits

Hab ein kleines Problem. Ich hab mir ein Template gebastelt dazu die nötigen Eintragungen in der Datenbank+Inhalt.

Ich bekomme es nicht hin das er mir das Template 8mal untereinander schreibt und mit den entsprechenden Daten füllt.

Also bis jetzt hab ich ne funktionierende Maske um Daten einzugeben und ein Template. Leider hab ich kein Tutorial gefunden was sich mit dem Programmieren von eingen Systemen befasst sonder sich immer auf fertige stützen. Da ich aber gern die Funktionsweiße eines System kenne würde ich das gern größtenteils selbst machen. Dazu bräuchte ich aber mal ein paar Denkanstöße von euch. Was fehlt mir den noch?
Wie am besten anfangen?

Funktion ganz kurz:
Maske zur Dateneingabe -> Speichern in DB/bis hierhin geht alles) -> Die neusten 8 (per datum->id) raussuchen -> ausgabe im Template und untereinander auflisten

Danke im Vorraus für alle Mühen die ich mache.

Schöne Grüße Vigo
 
Hi!

Weißt du, wie du die neuesten n Einträge ermittelst?
Code:
SELECT .... FROM .... WHERE .... ORDER BY dein_Erstelltdatum_Feld DESC LIMIT 0, 8
Und dann musst du über eine Schleife die Ergebnisse mit deinem Template "verwursten" und ausgeben.

Ohne Code kann man dir da nur nicht mit helfen...

Mamphil
 
Moin

Also das mit dem Select is mir schon klar. Aber ich weiß nicht wie ich es anstellen soll das er mir das template mit den 8 datensätzen vollschreibt und untereinander ausgiebt!

Grüße Vigo
 
Hi!

Gib mal nen bisschen Code vom Template-System...
Du müsstest doch irgendwie die Platzhalter innerhalb des Templates (str_replace?) ersetzen und dann den Inhalt ausgeben (echo?)

Mamphil
 
*gg*
Das is da pro ich hab kein Template Sys weil ich net genau weiß wei das aufgebaut sein muss....

also ich ne ne Template Maske und weiß wie ich an die daten rankomm. Ich weiß das das Template ne extrea datei sein muss. Aber da hörts dan auch schon auf!*ggg*

Sorry hab noch net allzuviel mit php gemacht. Eingabemasken und Abfragen aber das wars dan auch.

Alos Template:

PHP:
<?php
/*
Template:
News Aktuell|Stand 08.10.04
(C) 2004 by Xenius

*/
?>

<table cellspacing="2" cellpadding="2" border="0">
<tr>
    <td rowspan="2" width="300" align="right"><?php echo $usernick; ?>|<?php echo $newsdatum; ?></td>
    <td width="300" align="center"><?php echo $userurl; ?></td>
</tr>
<tr>
    <td width="300" align="center"><?php echo $usericq; ?></td>
</tr>
<tr>
    <td colspan="2" width="600" align="center"><?php echo $newshline; ?></td>
</tr>
<tr>
    <td colspan="2" width="600"><?php echo $newseintrag; ?></td>
</tr>
</table>

Und dan die Daten die da reinsollen:
PHP:
$abfrage = "SELECT * FROM news WHERE newsart = '1' ORDER BY datum DESC LIMIT 0,8";

und noch was zu dem Select. Ich hab schon ein funktionierend User sys. Also ne extra table und um news zu schreiben braucht man einen nick und ein pw das geht auch alles.
In der news table wird der nick hinterlegt und wie schaffe ich es nun das er mir zu den news+nick noch die dazugehörigen angegebene hp adresse und icq nummer aus der user table holt

So und was brauch ich jetzt noch das er mir die Dätensätze da reinhämmert?

Danke im Vorraus und danke für deine bisherige Mühe....

*schwerer fall ist*
Grüße Vigo
 
Tutorials.de hat eine Tutorials Sektion
Diese Tutorials Sektion hat eine PHP ecke, in dieser PHP ecke befindet sich ein Tutorial über Templates.
Um es genau zu sagen wird dort Demonstriert wie du mit einer function() immer recht schnell durch eval(); ein template ausgeben kannst.

das 8 mal ausgeben schafst du dann mit hilfe einer schleife
for($i = 0; $i<8; $i++)
{
eval();
}

Ist eigentlich das was du haben willst, und darüberhinaus kannst du dies noch so umbauen das du auf Templates aus der DB zugreifst, wovon ich aber abrate da der Server diese files im gegenteil zum htm / html format im verzeichnis nicht cachen kann und somit immer wieder komplett neu lädt.
Bei Größeren Projekten kann somit der Seitenaufbau um einiges verlangsamt werden und der Serverload bekommt auch noch eines drauf.


Gruß Andy
 
Kleine Idee, ungetestet:
PHP:
$abfrage = "SELECT * FROM news WHERE newsart = '1' ORDER BY datum DESC LIMIT 0,8"; 

while ($row = mysql_fetch_array($abfrage)) {
 $usernick = $row['usernick'];
 usw.

 include_once "templatedateiname.php";

}
Besser wäre evtl., das template ohne PHP zu machen, sondern als reines HTML mit Platzhaltern, wie %usernick%
Dann müßtest Du die Datei z.b. mit
PHP:
$template = implode("",file('meintemplate.template'));
einlesen und mit z.b.
PHP:
 $template = str_replace('%usernick%', $row['usernick'], $template);
für jeden Wert in der Schleife das passende ersetzen und am Ende in der Schleife
PHP:
echo $template;
machen.
 
Code:
 <?php
 /*
 +------------------------------------------------------------------------+
 | Version : v0.1.0													   |
 | Seitenname : /class/template.class.php								 |
 | Funktion : Ersetzten der Platzhalter und Ausgabe					   |
 | Erstellt am : 15.04.2005											   |
 | Letzte Veränderung : 16.08.2005									    |
 +------------------------------------------------------------------------+
 */
 
 class template {
   var $wildcard_array = array ();
   var $template;
   
   function template () { }
   
   function file ( $wildcard_array, $file ) {
 	global $error;
 	global $text;
 	if ( file_exists ( $file ) ) {
 	  if ( function_exists ( file_get_contents ( $file ) ) ) {
 		$template = file_get_contents ( $file );
 		$template = $this -> string ( $wildcard_array, $template );
 	  } else {
 		$template = '';
 		$handle = fopen ( $file, 'r' );
 		while (!feof ( $handle ) ) {
 		  $line = fgets ( $handle, 4096 );
 		  $template .= $line;
 		}
 		fclose ( $handle );
 		$template = $this -> string ( $wildcard_array, $template );
 	  }
 	} else {
 	  $dummy  = array ();
 	  $dummy['file'] = cyCase_de_html ( $file );
 	  die ( $this -> string ( $dummy, $text['error_template_file'] ) );
 	}
 	$this -> template = $template;
 	return ( $template );
   }
   
   function string ($wildcard_array, $string) {
 	global $text;
 	if ( is_array ( $wildcard_array ) ) {
 	  foreach ( $wildcard_array as $index => $value ) {
 		$string = str_replace ( '%'.$index.'%', $value, $string );
 	  }
 	}
 	return ( $string );
   }
   
   function get_size () {
 	return ( strlen ( $this -> get_de_html () ) );
   }
   
   function get_de_html () {
 	$a = $this -> template;
 	
 	$exemplar = array ();
 	$replace = array ();
 	
 	$exemplar[] = "/&/U";
 	$replace[] = '&amp;';
 	
 	$exemplar[] = "/</U";
 	$replace[] = '&lt;';
 	
 	$exemplar[] = "/>/U";
 	$replace[] = '&gt;';
 	
 	$exemplar[] = '/ /U';
 	$replace[] = "&nbsp;";
 	
 	$exemplar[] = "/\n/U";
 	$replace[] = '<br />';
 	
 	$a = preg_replace ( $exemplar, $replace, $a );
 	return ( $a );
 	
   }
   
   function get_html () {
 	return ( $this -> template );
   }
   
   function create_template ( $file = 'template/index.html' ) {
 	$this -> file ( $this -> wildcard_array, $file );
 	return ( true );
   }
   
   function druck ( $string, $wildcard ) {
 	if ( isset ( $this -> wildcard_array[$wildcard] ) ) {
 	  $this -> wildcard_array[$wildcard] .= $string;
 	} else {
 	  $this -> wildcard_array[$wildcard] = $string;
 	}
   }
 }
 ?>

Der Aufruf erfolgt so :

$template = new template ();
$template -> druck ( 'Bla blub' , 'platzhalter' );

$template -> create_template ( 'template/index.html' );

//print ( $template -> get_de_html () ); für Quelltextansicht
print ( $template -> get_html () );


In der Datei "template/index.html" sollte dann ein bißchen HTML Quelltext stehen z.B.:
<html>
<body>
%platzhalter%
</body>
</html>

Die Funktionen "$template -> file ( array, file );" und "$template -> string ( array, string );" brauch ich glaube ich nicht mehr erklären. ;)
 
Zuletzt bearbeitet:
Zurück