phpbar.de logo

Mailinglisten-Archive

[php] Text aus DB holen und durchsuchen nach Platzhalter + diesen ersetzen

[php] Text aus DB holen und durchsuchen nach Platzhalter + diesen ersetzen

Peter pit2071 at gmx.de
Mon Nov 8 22:20:16 CET 2004


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&auml;rmeerzeuger nach dem 01.11.1978 eingebaut?<br>
- Werden andere als fl&uuml;ssige oder gasf&ouml;rmige Brennstoffe 
eingesetzt?<br>
- Hat das Haus nur 1-2 Wohnungen, von denen eine der Eigent&uuml;rmer 
bewohnt und der Eigent&uuml;mer bleibt?<br>
- Ist es ein Niedertemperatur- oder Brennwertkessel?<br>
- Ist die Nennw&auml;rmeleistung &lt; 4 kW bzw. &gt; 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