Mailinglisten-Archive |
Hallo,
ich frage jetzt mal ganz allgemein:
Ich hole News-Beiträge per PHP von einer mysql Datenbank und zeige diese
dann auf einer Website an. Das funktioniert auch!
Jetzt wirds komplizierter:
Nun möchte ich diesen importierten Text nach einem Platzhalter
durchsuchen und diesen mit einem include ersetzen.
Leider wird dieser include nicht ausgeführt.
Der Hintergrund ist der, dass ich an bestimmten Stellen irgendwelche
Tabellen oder sonstiges HTML per include aus einer anderen Datei
einfügen möchte.
Beispiel - Man soll folgendes in ein Webformular im Browser eingeben können:
Am 12.10.2004 ist ein Infotag. Die Uhrzeiten entnehmen Sie folgender
Tabelle.
###inc###infozeit.htm###
Wir freuen uns auf Ihren Besuch.
---
Jetzt möchte ich diese include Zeile durch den richtigen include Befehl
ersetzen.
Aber ich habe das bisher nicht so geschafft, denn der richtig include
Befehl wird zwar korrekt ersetzt, jedoch nicht ausgeführt.
Ich habe bisher mit preg_replace probiert.
--
Eigentlich möchte ich dem Kunden nur die Möglichkeit bieten, per
Webformular einen neuen Newspunkt zu erstellen. Da gibt er ja nur Texte ein.
Wenn dann irgendwelche komplizierteren HTML Geschichten (das müssen
nicht nur Tabellen sein) eingebunden werden sollen, dann erstelle ich
diese und er gibt nur den Dateinamen ein, an der Stelle, an der das
platziert werden soll.
---
Hat schomal jemand so etwas gemacht?
Ich komme auf jeden Fall nicht weiter und wäre dankbar über
Lösungsvorschläge.
Gruss
Peter
---
Quellcode:
Das ist die Datei, die im Browser aufgerufen wird:
<html>
<head>
<title>Test</title>
</head>
<body>
<?php
$dateiname = basename($_SERVER["PHP_SELF"]); // basename() = Dateinamen
aus Pfad extrahieren
$teildn = substr_replace($dateiname, '', -5); // für variablen
Dateinamen: ref1.php wird ref
include("connect.php"); // Datenbankverbindung oeffnen
$abfrage = mysql_query("SELECT * FROM aktuell ORDER BY sort");
while ($zeile = mysql_fetch_array($abfrage)) {
foreach ($zeile as $schluessel => $wert) {
$$schluessel = $wert;
// $text wird erstellt aus db text
$suchmuster = array(
"/###link###(.*)###(.*)###/",
"/###xlink###(.*)###(.*)###/",
"/###bild###(.*)###/",
"/###bildlink###(.*)###(.*)###/",
"/###inc###(.*)###/"
);
$ersetzung = array(
"<a href='http://\$2'>\$1</a>",
"<a href='http://\$2' target='_blanc'>\$1</a>",
"<img src='../img/\$1' alt='' width='' height='' border='0'>",
"<a href='http://\$2' target='_blanc'><img src='../img/\$1' alt=''
width='' height='' border='0'></a>",
"<?php include '../html/\$1'; ?>"
);
$text = preg_replace($suchmuster, $ersetzung, $text);
} // ende foreach
print nl2br($text);
} // ende while
mysql_close($link);
?>
</body>
</html>
----------
Das ist der Quellcode des erzeugten Dokuments und da sieht man schon,
dass die 3.letzte Zeile nicht ausgeführt wurde, also der include.
<html>
<head>
<title>Test</title>
</head>
<body>
Link der in einem neuen Fenster geladen wird:<br />
<a href='http://www.wein.de' target='_blanc'>Link extern</a><br />
<br />
Link der auf derselben Seite geladen wird:<br />
<a href='http://www.spass.de'>Link intern</a><br />
<br />
Bild anzeigen, ohne Link (nicht anklickbar): <br />
<img src='../img/logo.gif' alt='' width='' height='' border='0'><br />
<br />
Bild anzeigen, mit Link extern (anklickbar):<br />
<a href='http://www.neues.de' target='_blanc'><img src='../img/lea.jpg'
alt='' width='' height='' border='0'></a><br />
<br />
Includes (funktioniert leider noch nicht):<br />
<?php include '../html/1.php'; ?><br />
</body>
</html>
-----------
und das sollte zB dort einefügt werden, also die Datei 1.php ist folgende:
<table width="500" border="0" cellpadding="0" cellspacing="5">
<tr>
<td width="85" rowspan="8" class="mittig oben blau rahmen"> Frist bis<br>
01.11.2004<br>
nach<br>
1. BlmSchV </td>
<td colspan="2" class="mittig rahmen">Werden die Grenzwerte nach 1.
BlmSchV eingehalten?</td>
</tr>
</table>
<p>- Wärmeerzeuger nach dem 01.11.1978 eingebaut?<br>
- Werden andere als flüssige oder gasförmige Brennstoffe
eingesetzt?<br>
- Hat das Haus nur 1-2 Wohnungen, von denen eine der Eigentürmer
bewohnt und der Eigentümer bleibt?<br>
- Ist es ein Niedertemperatur- oder Brennwertkessel?<br>
- Ist die Nennwärmeleistung < 4 kW bzw. > 400 kW? </p>
----------
Wenns hilft, hier auch noch die mysql Datenbank:
CREATE TABLE `aktuell` (
`ID` int(11) NOT NULL auto_increment,
`sort` char(3) default NULL,
`menutext` varchar(255) default NULL,
`ueber` varchar(255) default NULL,
`text` text,
PRIMARY KEY (`ID`)
) TYPE=MyISAM COMMENT='Aktuell' AUTO_INCREMENT=37 ;
#
# Daten für Tabelle `aktuell`
#
INSERT INTO `aktuell` VALUES (15, '1', 'Test Menütext', 'Test', 'Link
der in einem neuen Fenster geladen wird:\r\n ###xlink###Link
extern###www.wein.de###\r\n\r\nLink der auf derselben Seite geladen
wird:\r\n###link###Link intern###www.spass.de###\r\n\r\nBild anzeigen,
ohne Link (nicht anklickbar): \r\n###bild###logo.gif###\r\n\r\nBild
anzeigen, mit Link extern (anklickbar):\r\n
###bildlink###lea.jpg###www.neues.de###\r\n\r\nIncludes (funktioniert
leider noch nicht):\r\n###inc###1.php###\r\n');
----------
Also ich hab alles mit eval probiert, weiss aber nicht genau, wo ich das
ansetzen soll, bzw. wie ich die Datei 1.php an der Stelle einsetzen kann?
Habe ich einen Denkfehler, oder wirklich ein unlösbares Problem?
php::bar PHP Wiki - Listenarchive