Template Parser - ID austauschen mit Text?

PHP CODE:
PHP:
<?php 
error_reporting(E_ALL);

//Script zum zeilenweisen Parsen von HTML Templates 
//20.03.2003 Nils 'Jonathan' Hitze LV1.3 

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

//Uservariablen fuer den Datenbankzugang 
$mysql["host"] = "127.0.0.1";            //Datenbankserver 
$mysql["user"] = "nutzer";                  //Datenbanknutzer 
$mysql["password"] = "passwort";  //Datenbankpasswort 
$mysql["database"] = "datenbank"; //Datenbank 

//Definition der KATEGORIE, Wenn keine KAT uebergeben wurde 
//nimmt das System die Standard KAT 
if(!isset($_GET["kat"])){ $kat = home; }
if(!isset($kat)){ $kat = $_GET["kat"];}

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

//Datenbankabfrage zusammenstellen 
$sql = "SELECT * FROM doc_desc, doc_text " 
      . "WHERE doc_desc.kat = doc_text.kat AND doc_text.kat = '".$kat."'"; 

//Datenbank wird abgefragt 
$_result = mysql_query($sql) or die("Fehler: ".mysql_error()."<br>SQL-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"]; 
$css      = $_array["css"]; 
$template = $_array["template"]; 
$text     = $_array["text"]; 

//Array mit den Platzhaltern (Keys) und den Inhalten. 
$var_array = array("TITLE" => $title, 
                    "CSS" => $css, 
                    "TEXT" => $text); 

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

Datenbank:
Code:
CREATE TABLE `doc_desc` (
`id` INT NOT NULL AUTO_INCREMENT ,
`title` VARCHAR( 255 ) NOT NULL ,
`template` VARCHAR( 255 ) NOT NULL ,
`css` VARCHAR( 255 ) NOT NULL ,
`kat` VARCHAR( 255 ) NOT NULL ,
PRIMARY KEY ( `id` ) 
) TYPE = MYISAM ;

INSERT INTO doc_desc VALUES (1,'test','test.htm','test.css','home');
INSERT INTO doc_desc VALUES (2,'test1','test1.htm','test1.css','next_kat');

CREATE TABLE `doc_text` (
`id` INT NOT NULL AUTO_INCREMENT ,
`text` LONGTEXT NOT NULL ,
`kat` VARCHAR( 255 ) NOT NULL ,
PRIMARY KEY ( `id` ) 
) TYPE = MYISAM ;

INSERT INTO doc_text VALUES (1,'Hier steht irgendein Text.\n z.B.:\n\n Test test test.','home');
INSERT INTO doc_text VALUES (2,'Dies ist ein Testeintrag.\nEr dient dazu, den Templateparser zu testen.','next_kat');

Falls wieder was nicht geht, schreibe bitte die Fehlermeldung, wenn es eine gibt, oder beschreibe den Fehler.
 
Zuletzt bearbeitet:
Ah sorry. Dummheitsfehler meinerseits :): Mach mal in der SQL Abfrage aus
WHERE doc_desc.c_kat
Das
WHERE doc_desc.kat
 
Allmählich frage ich mich, wo ich meinen Kopf hatte, als ich das schrieb!
Ändere mal das $kat in der Abfrage in '".$kat."'
 
Aber noch was :)

Wenn man eine falsche Kategorie in der url angibt, kommt eine Fehlermeldung:

Warning: implode(): Bad arguments. in /www/htdocs/xxxxx/test/tpl_parser.php on line 16

Kann man statt des fehlers die standart Kategorie anzeigen lassen?

tpl_parser.php
PHP:
<?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);
   }
  }
 }
?>
 
Schreib mal vor das mysql_fetch_assoc() noch diesen Code
PHP:
if(mysql_num_rows($_result) != 1)
{
    $sql = "SELECT * FROM doc_desc, doc_text " 
      . "WHERE doc_desc.kat = doc_text.kat AND doc_text.kat = 'home'";
    $_result = mysql_query($sql);
}
 
Hmm wo genau hin damit?

Habe es jetzt versucht das in verschiedene stellen einzubauen, aber dann kommt nur fehler.
 
Das Script kommt in die PHP Datei, in der die DB Abfrage ist. VOR das mysql_fetch_assoc(). Steht ca. in Zeile 30.
 
Zurück