Habe aus nem Buch den Code abgeschrieben, der funktioniert aber nicht! Bitte entschuldigt den vielen Code, ist aber notwendig

Zweck des ganzen soll sein: Die Tags im Html-Code (eingeschlossen in {}) sollen durch aktuelle Werte ersetzt werden. Der seiten-titel und der buchstabe werden ersetzt, aber zeilen.adressen wird nicht ersetzt. Meine Nachforschungen haben ergeben, daß zwar die Variable zeilen.adresse im Array $variablen aufscheint (als $zeichenfolge ausgelesen, aber der dazugehörige Wert $$zeichenfolge leer ist (für die Variable zeilen.adresse) alles in der function adresse_sql, die Variable $vollstaendige_tabelle in der function datei_parser aber richtig belegt ist,
Der Aufruf index.php:
- Code: Select all
<?
include("vorlage.class");
$seiten_titel = "Adressbuch";
// die standardseite ruft Personen ab, deren Nachname mit 'A' beginnt
if (! isset($buchstabe) ) :
$buchstabe = "A";
endif;
$vorl = new vorlage;
$vorl->datei_registrieren("buch", "buch.html");
$vorl->variablen_registrieren("buch","seiten_titel,buchstabe");
$vorl->adresse_sql("buch","zeilen.adressen","$buchstabe");
$vorl->datei_parser("buch");
$vorl->drucke_datei("buch");
?>
Die Html-Datei buch.html:
- Code: Select all
<title>::::{seiten_titel}::::</title>
</head>
<body bgcolor="white">
<table cellpadding=2 cellspacing=2 width=600>
<h1>Adressbuch: {buchstabe}</h1>
<tr><td>
<a href="index.php?buchstabe=A">A</a> |
........
</td></tr>
{zeilen.adressen}
</table>
</body>
</html>
Und schliesslich die Datei vorlage.class:
- Code: Select all
<?
class vorlage {
var $dateien = array();
var $variablen = array();
var $sql = array();
var $oeffnend_escape = '{';
var $schliessend_escape = '}';
var $host = "localhost";
var $benutzer = "root";
var $kennwort = "";
var $db = "buch";
var $adressen_tabelle = "Adressbuch";
function datei_registrieren($datei_id, $datei_name) {
// Datei $datei_name zum Lesen öffnen oder beenden und Fehlermeldung ausgeben
$dh = fopen($datei_name,"r") or die("Datei $datei_name konnte nicht geöffnet werden!");
// Gesamten Inhalt der Datei $datei_name lesen
$datei_inhalte = fread($dh, filesize($datei_name));
// Diese Inhalte einer Position im Array zuweisen, Die Position wird durch den Schlüssel $datei_id angegeben
$this->dateien[$datei_id] = $datei_inhalte;
// Wir benötigen die Datei nicht länger, also schliessen
fclose($dh);
} // Ende datei_registrieren
function variablen_registrieren($datei_id,$variablen_name) {
// Array aus übergebenen Variablen erstellen
$eingabe_variablen = explode(",",$variablen_name);
// Variablenname der nächsten Position im $datei_id_Array zuordnen
while (list(,$wert) = each($eingabe_variablen)):
// den Wert einer neuen Position im $this->variablen_array zuordnen
$this->variablen[$datei_id][] = $wert;
endwhile;
} // Ende variablen_registrieren
function adresse_sql($datei_id, $variablen_name, $buchstabe) {
// MySQL-Serververbindung aufbauen und datenbank auswählen
mysql_connect($this->host, $this->benutzer, $this->kennwort) or die("Verbindung zu MySQL-Server nicht möglich!");
mysql_select_db($this->db) or die("Auswahl der MySQL-Datenbank nicht möglich!");
// Datenbank abfragen
$abfrage = "SELECT nachname, vorname, tel, email FROM $this->adressen_tabelle WHERE nachname LIKE '$buchstabe%'";
$ergebnis = mysql_query($abfrage);
// Datei "zeilen.adressen" öffnen und Inhalte in Variable einlesen
$dh = fopen("$variablen_name","r");
$datei_inhalte = fread($dh,filesize("zeilen.adressen"));
// Variablennamen durch Tabellendaten ersetzen
while ($zeile = mysql_fetch_array($ergebnis)):
$neue_zeile = $datei_inhalte;
$neue_zeile = str_replace($this->oeffnend_escape."nachname".$this->schliessend_escape,
$zeile["nachname"],
$neue_zeile);
$neue_zeile = str_replace($this->oeffnend_escape."vorname".$this->schliessend_escape,
$zeile["vorname"],
$neue_zeile);
$neue_zeile = str_replace($this->oeffnend_escape."telefon".$this->schliessend_escape,
$zeile["tel"],
$neue_zeile);
$neue_zeile = str_replace($this->oeffnend_escape."email".$this->schliessend_escape,
$zeile["email"],
$neue_zeile);
// Neue Tabellenzeile an vollständig ersetzte Zeichenfolge anhängen
$vollstaendige_tabelle .= $neue_zeile;
endwhile;
// Zeichenfolge für Tabellenersetzung einem SQL-Arrayschlüssel zuweisen
$sql_array_schluessel = $variablen_name;
$this->sql[$sql_array_schluessel] = $vollstaendige_tabelle;
// Schlüssel dem Variablenarray für spätere Suchläufe hinzufügen
$this->variablen[$datei_id][] = $variablen_name;
// Dateihandle schliessen
fclose($dh);
} // Ende von adresse_sql
function datei_parser($datei_id) {
// Wie viele Variablen sind für diese Datei registriert?
$varzaehler = count($this->variablen[$datei_id]);
// Wie viele Dateien sind registriert?
$schluessel = array_keys($this->dateien);
// Wenn Schlüssel $datei_id im $this->dateien_array vorliegen und einige registrierte variablen aufweist...
if ((in_array($datei_id,$schluessel)) && ($varzaehler > 0)):
//$x zurücksetzen
$x = 0;
//Wenn weitere Variablen analysiert werden müssen...
while ($x < sizeof($this->variablen[$datei_id])):
// Nächste Variable abrufen
$zeichenfolge = $this->variablen[$datei_id][$x];
//Diesen Variablenwert abrufen! Beachten Sie, dass ich eine Variablenvariable zum Abrufen des Wertes verwende.
// Dieser Wert ersetzt im Dateiinhalt den entsprechenden Variablennamen
GLOBAL $$zeichenfolge;
// Was genau wird in den Dateiinhalten erstezt?
$nadel = $this->oeffnend_escape.$zeichenfolge.$this->schliessend_escape;
// Zeichenfolgenersetzung durchführen
$this->dateien[$datei_id] = str_replace(
$nadel, // Nadel
$$zeichenfolge, // im
$this->dateien[$datei_id] // Heuhaufen
);
// Erhöhung $x
$x++;
endwhile;
endif;
} // Ende Datei_parser
function drucke_datei($datei_id) {
// Durch $datei_id referenzierte Inhalte ausdrucken
print $this->dateien[$datei_id];
} // Ende von Drucke_datei
Und nocht die Datei zeilen.adressen:
- Code: Select all
<tr><td bgcolor="#C0C0C0">
<b>{nachname},{vorname}</b>
</td></tr>
<tr><td>
<b>{telefon}</b>
</td></tr>
<tr><td>
<b><a href = "mailto:{email}">{email}</a></b>
</tr></td>