php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2006

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 04.04.2006, 18:48  
Benutzer
 
Registriert seit: 25.09.2005
Beiträge: 41
reimondo
Standard Template und Parser... was ist mit Abfrageresultat > 1??

Hallo,

ich denke, ich habe jetzt eine interessante Loesung fuer die Umsetzung meiner Seite gefunden. Ich moechte jetzt Templates verwenden.

Es klappt auch alles sehr gut. Parser funktioniert, Template-Datei passt. Nur habe ich ein Problem:

Was mache ich, wenn mein Abfrageergbnis groesser 1 Datensatz ist? Ich wuerde gerne meine Navigationsleiste ebenfalls abfragen.
Folgendes Beispiel:
  1. 1. Ich rufe eine Seite auf.
    2. ID wird mit $_GET ausgelesen.
    3. Jetzt habe ich z.B. zu ID=1 in meiner Navi-Tabelle 3 Eintraege stehen.

Wie kann ich diese 3 Eintraege meinem Platzhalter {LINK} in der Template-Datei zuweisen? Im Moment habe ich noch keinen Ansatz. Null.

Hier mal die index.php:

PHP-Code:
<?php
 
//Script zum zeilenweisen Parsen von HTML Templates
 //20.03.2003 Nils 'Jonathan' Adomeit LV1.2

 //Einbinden der Template Klasse
 
include("class_tpl_parser_lite.inc.php");

 
//Uservariablen f&uuml;r den Datenbankzugang
 
$mysql["host"] = "";
 
$mysql["user"] = "";
 
$mysql["password"] = "";
 
$mysql["database"] = "";

 
//Definition der ID, Wenn keine ID &uuml;bergeben wurde
 //nimmt das System die Standard ID
 
if(!isset($_GET["id"])) $id 1;
 if(!isset(
$id)) $id $_GET["id"];

 
//Datenbankverbindung aufbauen und Datenbank ausw&auml;hlen
 
mysql_connect($mysql["host"],$mysql["user"],$mysql["password"]);
 
mysql_select_db($mysql["database"]);

 
//Datenbankabfrage zusammenstellen
 
$sql "SELECT * FROM main_content WHERE feld_id = $id";

 
//Datenbank wird abgefragt
 
$_result mysql_query($sql);
 
//Das Ergebniss wird in dem Feld ($_array) gespeichert
 
$_array mysql_fetch_assoc($_result);

 
//Definition der Variablen durch die die Platzhalter
 //ersetzt werden.
 
$title    $_array["title"];
 
$headline $_array["headline"];
 
$text     $_array["text"];
 
$links       $_array["links"];
 
$template $_array["template"];

 
//Array mit den Platzhaltern (Keys) und den Inhalten.
 
$var_array = array("TITLE" => $title,
                    
"HEADLINE" => $headline,
                    
"TEXT" => $text,
                    
"LINKS" => $links);

 
//Initialisierung der Klasse und Parsen des Templates
 
$tpl = new parser($template$var_array);
?>

und die Parser-Klasse:
PHP-Code:
<?php
 
//Klasse zum Parsen von HTML Templates
 //Lite Version

 //20.03.2003 Nils 'Jonathan' Adomeit LV1.2
 
Class parser
 
{
  var 
$template;
  var 
$temp_content;

  function 
parser($template$var_array)
  {
   
$this->template $template;
   
$this->temp_content file($this->template);
   
$parsed $this->rplc($var_array);
   echo(
implode(""$this->temp_content));
  }

  function 
rplc($var_array)
  {
   foreach(
$var_array as $key => $value)
   {
    
//$regex[var_name] : {VARIABLE}
    
$regex['var_name'] = "#{[[:space:]]*?(".strtoupper($key)."){1,}?[[:space:]]*?}#si";
    
$this->temp_content preg_replace($regex['var_name'], $value$this->temp_content);
   }
  }
 }
?>
Das übrigens die Vorlage von tutorials.de.
Danke schon mal für eure Hinweise...
Gruß
reimondo
reimondo ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 04.04.2006, 21:40  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Arrays "nachbauen".

{LINK[1]} oder {LINK.1}

Aber ganz ehrlich, irgendwann wirds haderig, wenn du auch noch Bedingungen und Schleifen in dein eigenes Template-System bauen willst. Es geht zwar, aber Smarty kann doch das alles schon, warum also sich die Mühe machen?
Zergling-new ist offline  
Alt 04.04.2006, 23:37  
Benutzer
 
Registriert seit: 25.09.2005
Beiträge: 41
reimondo
Standard

Hm... wer oder was ist Smarty?
reimondo ist offline  
Alt 04.04.2006, 23:46  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Eine sehr mächtige Template-Engine:
http://smarty.php.net/
Zergling-new ist offline  
Alt 05.04.2006, 00:04  
Benutzer
 
Registriert seit: 25.09.2005
Beiträge: 41
reimondo
Standard

Danke für den Hinweis. Werde morgen da mal schauen.

Noch was anderes zu Templates:

Kann ich in der index.php auch mehrere Templates erstellen?
Etwa so:

PHP-Code:
$tpl1 = new parser($template1$var_array1);
$tpl2 = new parser($template2$var_array2);
$tpl3 = new parser($template3$var_array3); 
wobei ich dann verschiedene Template-Dateien verwenden kann?

Muss eine Template-Datei immer eine komplette html-Datei sein, oder kann sie auch nur einen html-Schnipsel wie z.B. nur

Code:
{LINKNAME1} 
enthalten, den ich dann etwa in einer Schleife aufrufen kann?

Danke schon mal und Gute Nacht :wink: [/php]
reimondo ist offline  
Alt 05.04.2006, 00:16  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Na du musst doch deine Template-Engine selber kennen

Aber natürlich geht das. Ich mach das so, dass ich Templates in 3 Teile teile.
- den Header mit DOCTYPE, <head>, <meta>, <body>, Navigation usw.
- den Content
- und den Footer mit </body></html> und was evtl. sonst noch hin muss.

Ist dann aber natürlich nicht mehr so einfach vom Designer anzupassen, der zB jetzt mit Dreamweaver sein Layout für dich umsetzt. Zumindest sieht ers jetzt nicht mehr komplett gleich. Aber das ist ja seltener der Fall.

Außerdem musst du drauf achten, dass du trotzdem zuerst die Programmlogik für den Content ausführt, und danach erst das header-Template ausgibst, sonst kannst du ja nur schwer den <title> und evtl. <meta description/keyword>s setzen und header-Weiterleitungen kansnt du dann auch nicht machen wenn du den Header schon an den Browser gesendet hast.

(und nix für ungut, ich hab den Thread mal verschoben )
Zergling-new ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Datenbankfelder direkt im Template verfügbar phpbeginner Datenbanken 3 29.07.2006 20:30
Eckige Klammern in Template nutshell PHP Tipps 2006 9 05.06.2006 19:12
BBCode Parser Mutatos PHP Tipps 2006 1 05.01.2006 12:19
template in template einfuegen tonne PHP Tipps 2005-2 8 10.11.2005 22:24
Wordpress Template HTML, Usability und Barrierefreiheit 8 22.08.2005 11:21
Template verständniss problem; referenz PHP Tipps 2005 17 19.05.2005 06:06
Template: Verschachteln von foreach PHP Tipps 2005 2 12.05.2005 15:37
[Erledigt] Text_Wiki transform in Smarty Template PHP Tipps 2005 0 09.05.2005 14:59
Php Code als Variable definieren und in Template darstellen PHP Tipps 2004-2 4 31.12.2004 16:22
suche ein bestimmtes template system PHP Tipps 2004-2 2 07.11.2004 19:49
[Erledigt] Template Parser PHP-Fortgeschrittene 9 06.10.2004 23:04
Template Parser PHP Tipps 2004 10 23.07.2004 15:35
Template Parser Script Suckd PHP-Fortgeschrittene 2 11.07.2004 17:20
Suche Template Parser - Muss PHP Datein includen können Schaelle PHP Tipps 2004 0 01.07.2004 20:48
[Erledigt] Template Scripting PHP-Fortgeschrittene 2 04.06.2004 18:34

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
template und parser, eigenes templatesystem bauen, script zum zeilenweisen parsen von html templates

Alle Zeitangaben in WEZ +2. Es ist jetzt 11:30 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.