Der Befehl lautet eval
Du hast ja alles in einem String. Die Funktion wertet den String aus, als wenn es PHP-Code wäre.
Hallo an die Dynamik-Experten!
Ich scheine Denkblockade zu haben. Folgendes: Ich habe eine index.php, die aus einer SQL-Datenbank je nach URL-ID Inhalt anzeigen soll. Das tut sie auch. Nun habe ich eben im DB-Feld „content“ sowohl HTML, als auch PHP-Befehle (siehe unten Code 2) gehabt.
Wenn ich nun sage:
wird die folgende Tabelle zwar angezeigt, die PHP-Befehle jedoch ignoriert.PHP-Code:<?php $Artikel = $row_inhalte['content'];
// $Artikel = ereg_replace("ß", "ß", $Artikel);
$Artikel = ereg_replace("ö", "ö", $Artikel);
$Artikel = ereg_replace("ä", "ä", $Artikel);
$Artikel = ereg_replace("ü", "ü", $Artikel);
$Artikel = ereg_replace("Ö", "Ö", $Artikel);
$Artikel = ereg_replace("Ä", "Ä", $Artikel);
$Artikel = ereg_replace("Ü", "Ü", $Artikel);
echo $Artikel; ?>
Meine Hypothese: Der echo-Befehl gibt zwar Datenbankfelder wieder, ist aber nicht in der Lage Code zu verarbeiten. Richtig? Hilfe!HTML-Code:<table width="520" border="0" cellspacing="0" cellpadding="0"> <tr> <th height="25" style="padding-left: 8px;"><b>Datum</b></th> <th height="25"><b>Veranstaltung</b></th> <th height="25"><b>Ort</b></th> </tr> <?php do { ?> <tr> <td height="5" colspan="3"> </td> </tr> <tr> <td width="150" height="40" valign="top" style="padding-left: 8px;"><b><?php echo $row_kalender['wochentag']; ?>, <?php echo $row_kalender['datum']; ?></b><br> <?php echo $row_kalender['uhrzeit']; ?> </td> <td width="270" height="40" valign="top" > <p class="event"><?php echo $row_kalender['veranstaltung']; ?></p></td> <td width="100" height="40" valign="top"><?php echo $row_kalender['ort']; ?></td> </tr> <?php if (isset($row_kalender['bemerkung'])) { ?> <tr valign="middle"> <td height="25" style="padding-left: 8px;"><em>Bemerkungen:</em></td> <td colspan="2" class="bemerkung"><?php echo $row_kalender['bemerkung']; ?></td> </tr> <?php } ?> <tr valign="middle"> <td height="25" colspan="3" style="padding-left: 8px;"><hr size="1" noshade color="#cc0000"></td> </tr> <?php } while ($row_kalender = mysql_fetch_assoc($kalender)); ?></table> <?php } // Show if recordset not empty else echo "<p>Es liegen zur Zeit keine gespeicherten Termine vor.</p>"; ?>![]()
Was muss ich tun, damit meine PHP-Codes aus der Datenbank-Tabelle gelesen werden und die Tabelle (Code 2) somit gefüllt wird? Gibt es da einen anderen PHP-Befehl? (Wie ihr vielleicht merkt, habe ich gerade erst mit PHP begonnen ...)
Viele Grüße,
Torben
Geändert von th_03 (01.07.2005 um 20:22 Uhr)
Moje zycie jest jak papier toaletowy: Dlugie, szare ... y do dupy!
Der Befehl lautet eval
Du hast ja alles in einem String. Die Funktion wertet den String aus, als wenn es PHP-Code wäre.
TYPO3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
Ähm ... danke, aber ich bin zu blöd ... das klappt nicht:
Parse error: syntax error, unexpected T_LNUMBER in E:\apachefriends\xampp\htdocs\SC_Rothenhausen_2005\index.php(101) : eval()'d code on line 4
Ich bekomme eine Fehlermeldung, demnach ist
nicht richtig. Ich bin total verwirrt. Wie muss das denn jetzt heißen? Oh Gott, ist das peinlich. Das kommt davon, wenn man seit heute Morgen am Rechner sitztPHP-Code:eval ("\$Artikel = \"$Artikel\";");
echo $Artikel; ?>
.
Geändert von th_03 (01.07.2005 um 20:08 Uhr)
Moje zycie jest jak papier toaletowy: Dlugie, szare ... y do dupy!
Nebenfrage - wieso ersetzt Du die Umlaute umständlich "manuell", und nicht z.B. mit htmlentities?
“My software never has bugs. It just develops random features ...”
» DevShack - die Website des freien Webentwicklers Boris
@Boris: Nun, ich glaube, dass hing damit zusammen, dass die Ausgabe mit htmlentities nicht nur umgeformte Umlaute, sondern auch andere Sonderzeichen zur Folge hatte ... auf jeden Fall sah es nicht so aus, wie es hätte aussehen sollen.
Moje zycie jest jak papier toaletowy: Dlugie, szare ... y do dupy!
Also, kleiner Nachtrag:
Jetzt wird zwar der HTML-Teil der Datenbank-Zelle ausgegeben, also auch die Tabelle an sich, aber trotzdem bleibt sie leer. Die PHP-Befehle werden nach wie vor im Quelltext angezeigt, aber nicht ausgeführt![]()
Moje zycie jest jak papier toaletowy: Dlugie, szare ... y do dupy!
so wärs ja auch ein büschen einfach
Du hast einen HTML-Block mit eingebettetem php.
extrahiere den <?php ... ?> , lösche die Tags und führe nur diesen Block in eval aus.
TYPO3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
Wie soll denn die PHP-Befehle extrahieren? Ich verstehe jetzt gar nichts mehr. Wenn ich nun ... nein, zu suspekt, was ich hier gerade denke. Es tut mir Leid, aber im normalen Leben bin ich nicht so schwer von Begriff ... hoffe ich für meine Mitmenschen zumindest. Kannst du mit bitte noch mal ganz langsam für ganz Blöde erklären, wie das geht, was du da meinst.
Nochmal eine Notiz für mich: Die PHP-Befehle befinden sich in einer HTML-Tabelle, die angezeigt wird. Immerhin ein halber Erfolg ;-).
Moje zycie jest jak papier toaletowy: Dlugie, szare ... y do dupy!
Also, in einem anderen Forum wurde mir folgender Tipp gegeben:
... funktioniert aber auch nicht. Funktioniert eval überhaupt mal irgendwann? Jetzt motzt eval rum, weil er eine Klammer nicht haben will:PHP-Code:eval('?>'.$Artikel.'<?); ?>
Parse error: syntax error, unexpected '}' in E:\apachefriends\xampp\htdocs\SC_Rothenhausen_2005\index.php(101) : eval()'d code on line 31
Was soll denn das ständig? Kann das nicht einfach mal funktionieren?
Moje zycie jest jak papier toaletowy: Dlugie, szare ... y do dupy!
Solang Dir nicht klar ist, wo der Fehler liegt, nicht ... denn er bemängelt eine } Klammer, und keinen Teil des von dir gezeigten CodesWas soll denn das ständig? Kann das nicht einfach mal funktionieren?
Zeig uns doch mal alles!![]()
“My software never has bugs. It just develops random features ...”
» DevShack - die Website des freien Webentwicklers Boris
Na ja, gut, das mit der }-Klammer ist mir schon klar. Bin sehr frustiert. Also, jetzt gibts also den gesamten Code der index.php (du hast es ja so gewollt):
Sooo, es folgt nochmal der Inhalt der besagten Tabellen-Zelle namens „content“:PHP-Code:<?php require_once('Connections/SC_R_2005.php'); ?>
<?php
$maxRows_news = 3;
$pageNum_news = 0;
if (isset($HTTP_GET_VARS['pageNum_news'])) {
$pageNum_news = $HTTP_GET_VARS['pageNum_news'];
}
$startRow_news = $pageNum_news * $maxRows_news;
mysql_select_db($database_SC_R_2005, $SC_R_2005);
$query_news = "SELECT * FROM news ORDER BY datum DESC";
$query_limit_news = sprintf("%s LIMIT %d, %d", $query_news, $startRow_news, $maxRows_news);
$news = mysql_query($query_limit_news, $SC_R_2005) or die(mysql_error());
$row_news = mysql_fetch_assoc($news);
if (isset($HTTP_GET_VARS['totalRows_news'])) {
$totalRows_news = $HTTP_GET_VARS['totalRows_news'];
} else {
$all_news = mysql_query($query_news);
$totalRows_news = mysql_num_rows($all_news);
}
$totalPages_news = ceil($totalRows_news/$maxRows_news)-1;
$maxRows_kalender = 1;
$pageNum_kalender = 0;
if (isset($HTTP_GET_VARS['pageNum_kalender'])) {
$pageNum_kalender = $HTTP_GET_VARS['pageNum_kalender'];
}
$startRow_kalender = $pageNum_kalender * $maxRows_kalender;
mysql_select_db($database_SC_R_2005, $SC_R_2005);
$query_kalender = "SELECT * FROM veranstaltungskalender ORDER BY datum ASC";
$query_limit_kalender = sprintf("%s LIMIT %d, %d", $query_kalender, $startRow_kalender, $maxRows_kalender);
$kalender = mysql_query($query_limit_kalender, $SC_R_2005) or die(mysql_error());
$row_kalender = mysql_fetch_assoc($kalender);
if (isset($HTTP_GET_VARS['totalRows_kalender'])) {
$totalRows_kalender = $HTTP_GET_VARS['totalRows_kalender'];
} else {
$all_kalender = mysql_query($query_kalender);
$totalRows_kalender = mysql_num_rows($all_kalender);
}
$totalPages_kalender = ceil($totalRows_kalender/$maxRows_kalender)-1;
$colname_inhalte = "1";
if (isset($HTTP_GET_VARS['content_id'])) {
$colname_inhalte = (get_magic_quotes_gpc()) ? $HTTP_GET_VARS['content_id'] : addslashes($HTTP_GET_VARS['content_id']);
}
mysql_select_db($database_SC_R_2005, $SC_R_2005);
$query_inhalte = sprintf("SELECT * FROM inhalte WHERE inhalt_id = %s", $colname_inhalte);
$inhalte = mysql_query($query_inhalte, $SC_R_2005) or die(mysql_error());
$row_inhalte = mysql_fetch_assoc($inhalte);
$totalRows_inhalte = mysql_num_rows($inhalte);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html lang="de">
<head>
<title>SC Rothenhausen | Online-Portal</title>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<meta http-equiv="Content-Style-Type" content="text/css">
<?php include("_includes/meta.inc"); ?>
<script type="text/javascript" language="JavaScript1.2" src="_scripte/stm31.js"></script>
<?php include("_includes/stylesheets.inc"); ?>
<link rel="stylesheet" type="text/css" media="screen" href="_stylesheets/master.css">
<link rel="stylesheet" type="text/css" media="all" href="_stylesheets/fontstyles.css">
<link rel="stylesheet" type="text/css" media="all" href="_stylesheets/sql_based_tables.css">
<link rel="stylesheet" type="text/css" media="all" href="_stylesheets/colums.css">
<link rel="stylesheet" type="text/css" media="all" href="_stylesheets/div_containers.css">
<link rel="stylesheet" type="text/css" media="all" href="_stylesheets/archiv_articles.css">
<link rel="stylesheet" type="text/css" media="print" href="_stylesheets/print.css">
</head>
<body>
<div id="wrap_main">
<div id="banner"></div>
<div id="wrap_menu">
<script type="text/javascript" language="JavaScript1.2" src="_scripte/menu_top.js"></script></div>
<div id="wrap_body">
<div id="wrap_margin">
<div id="channelpic"><img src="gfx/channelpics/portal.jpg" alt=" " border="0"></div>
<?php include("_includes/margin.inc"); ?><!-- Ende margin -->
<div id="wrap_content">
<?php if (isset($HTTP_GET_VARS['content_id'])) { // wenn inhalt_id gesetzt, zeige Datensatz an ?>
<?php if ($totalRows_inhalte > 0) { // Show if recordset not empty ?>
<h1><?php echo $row_inhalte['header']; ?></h1>
<p class="lead"><?php echo $row_inhalte['lead']; ?></p>
<?php } // Show if recordset not empty ?>
<?php $Artikel = $row_inhalte['content'];
// $Artikel = ereg_replace("ß", "ß", $Artikel);
$Artikel = ereg_replace("ö", "ö", $Artikel);
$Artikel = ereg_replace("ä", "ä", $Artikel);
$Artikel = ereg_replace("ü", "ü", $Artikel);
$Artikel = ereg_replace("Ö", "Ö", $Artikel);
$Artikel = ereg_replace("Ä", "Ä", $Artikel);
$Artikel = ereg_replace("Ü", "Ü", $Artikel);
eval('?>' .$Artikel. '<?'); ?>
<?php } else include("http://127.0.0.1/SC_Rothenhausen_2005/portal/_portal.html"); ?>
</div><!-- Ende wrap_content --></div><!-- Ende wrap_body -->
<?php include("_includes/footer.inc"); ?>
</div><!-- Ende wrap_main --></body></html>
<?php
mysql_free_result($news);
mysql_free_result($kalender);
mysql_free_result($inhalte);
?>
So. Das war eigentlich alles. Leider habe ich das Ganze nur lokal laufen ... aber ich weiß echt nicht mehr weiter. Merkt man ja.HTML-Code:<p>Damit Sie kein wichtiges Event verpassen, haben wir für Sie einen Online-Veranstaltungskalender bereitgestellt, so dass Sie sich jederzeit über aktuelle Termine und eventuelle kurzfristige Änderungen informieren können.<br><br> Über zahlreiches Erscheinen freuen wir uns schon jetzt.</p><br> <table width="520" border="0" cellspacing="0" cellpadding="0"> <tr> <th height="25" style="padding-left: 8px;"><b>Datum</b></th> <th height="25"><b>Veranstaltung</b></th> <th height="25"><b>Ort</b></th> </tr> <?php do { ?> <tr> <td height="5" colspan="3"> </td> </tr> <tr> <td width="150" height="40" valign="top" style="padding-left: 8px;"><b><?php echo $row_kalender['wochentag']; ?>, <?php echo $row_kalender['datum']; ?></b><br> <?php echo $row_kalender['uhrzeit']; ?> </td> <td width="270" height="40" valign="top" > <p class="event"><?php echo $row_kalender['veranstaltung']; ?></p></td> <td width="100" height="40" valign="top"><?php echo $row_kalender['ort']; ?></td> </tr> <?php if (isset($row_kalender['bemerkung'])) { ?> <tr valign="middle"> <td height="25" style="padding-left: 8px;"><em>Bemerkungen:</em></td> <td colspan="2" class="bemerkung"><?php echo $row_kalender['bemerkung']; ?></td> </tr> <?php } ?> <tr valign="middle"> <td height="25" colspan="3" style="padding-left: 8px;"><hr size="1" noshade color="#cc0000"></td> </tr> <?php } while ($row_kalender = mysql_fetch_assoc($kalender)); ?></table> <?php } // Show if recordset not empty else echo "<p>Es liegen zur Zeit keine gespeicherten Termine vor.</p>"; ?> <br><p class="hinweis">Leider können wir Irrtümer und eventuelle Änderungen nicht ausschließen.</p>![]()
Danke.
Torben
Moje zycie jest jak papier toaletowy: Dlugie, szare ... y do dupy!
Mein Gott, ist mir das peinlich. Wie kann man denn so verblödet sein? Es fehlte natürlich folgende Zeile am Anfang der „content“-Zelle in der Tabelle.
Trotzdem gaanz lieben Dank für eure Hilfe. Ich werde mir jetzt erst mal einen Strick nehmenPHP-Code:<?php if ($totalRows_kalender > 0) { ?>![]()
![]()
Gruß, Torben
Moje zycie jest jak papier toaletowy: Dlugie, szare ... y do dupy!
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)