Variablen in php datei ändern

minifuzi

Mitglied
Hi @all

Ich habe jetzt einen Parser geschrieben der bestimmte Platzhalter ersetzt!
Nun will ich ein Adminpanel machen wo ich diese Variablen im Parser ändern kann!

Hier der Code:

PHP:
<?php

function parse($datei="index.htm")
{
   $datei   = file_get_contents($datei) ;
   
   $header  = '<img src="banner.jpg" height="95" width="653">';
   $titel   = "Sliders HP" ;
   $content = include("content.php") ;
   $menu    = include("module/Menu/index.php") ;
   $footer  = "Code & Design by Slider" ;
   
   $text    = str_replace("{header}",$header,$datei) ;
   $text    = str_replace("{titel}",$titel,$text);
   $text    = str_replace("{content}",$content,$text);
   $text    = str_replace("{menu}",$menu,$text);
   $text    = str_replace("{footer}",$footer,$text);
   echo $text;
}

?>

Hier ein Beispiel :
Ich will jetzt im Adminpanel mit hilfe eines input feldes den Titel der Seite ändern !
Wie mache ich das?mit fopen aber wie ?
 
Am besten übergibst du der Funktion je nach Bedürfnis die entsprechenden Parameter. Beispielsweise:
PHP:
<?php

	function getParsedContent($file, $para)
	{
		if( !file_exists($file) || !is_file($file) || !is_readable($file) || !($content = file_get_contents($file)) ) {
			return false;
		}
		if( !is_array($para) || count($para)<1 ) {
			return false;
		}

		foreach( $param as $key => $value ) {
			if( !is_string($key) || !is_string($value) || !is_numeric($value) ) {
				continue;
			}
			$content = str_replace('{'.strtolower($key).'}', $value, $content);
		}
		return $content;

	}

?>
Damit wäre die Anzahl der zu ersetzenden Platzhalter variabel und könnten leicht durch Benutzereingaben (beispielsweise durch ein Formular) erweitert werden.
PHP:
<?php

	$replacement = array(
		'header'  => '<img src="banner.jpg" height="95" width="653">',
		'titel'   => 'Sliders HP',
		'content' => file_get_contents('content.php'),
		'menu'    => fiel_get_contents('module/Menu/index.php'),
		'footer'  => 'Code & Design by Slider'
	);
	echo getParsedContent('index.htm', $replacement);

?>
 
Da ich vergessen hab dass ich die daten in einer Datenbank ablegen wollte habe ich es jetzt mal geändert :

PHP:
<?php
include("config.php");
connect();

function parse($datei="index.htm")
{
   $datei   = file_get_contents($datei) ;
   
   $select  =  "SELECT * FROM `config`";
   $query   =  mysql_query($select);
   $row     =  mysql_fetch_assoc($query);
   
   $header  =  $row['header'] ;
   $titel   =  $row['titel'] ;
   $content =  $row['content'] ;
   $menu    =  $row['menu'] ;
   $footer  =  $row['footer'] ;
   
   $text    = str_replace("{header}",$header,$datei) ;
   $text    = str_replace("{titel}",$titel,$text);
   $text    = str_replace("{content}",$content,$text);
   $text    = str_replace("{menu}",$menu,$text);
   $text    = str_replace("{footer}",$footer,$text);
   echo $text;
}

?>

Nun ist das problem aber dass er die includes die in Content un Menu sind nicht ausführt

Die fertig geparste Seite sieht so aus :

Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Sliders HP</title>
<style type="text/css">
<!--
body,td,th {
	font-family: Verdana, Arial, Helvetica, sans-serif;
	font-size: 10px;
	color: #000000;
}
body {
	background-color: #808080;
}
.border
{
border: 1px solid black;
}
-->
</style></head>

<body>
<div align="center">
  <p>&nbsp;</p>
  <p>&nbsp;</p>
  <table width="653" >

    <tr>
      <th width="409" height="95" class="border"><img src="banner.jpg" height="95" width="653"></th>
    </tr>
    <tr>
      <td height="310" class="border" bgcolor="#ACACAC"><div align="center"><?php include("content.php") ; ?></div></td>
	  <td width="130" height="310" >
	  <table width="150" height="154"  align="center" >
        <tr>
          <th height="20" bgcolor="#6A6A6A" class="border" >&nbsp;</th>

        </tr>
		<tr>
          <th scope="col" bgcolor="#ACACAC" class="border">&nbsp;</th>
        </tr>
      </table>
      <div align="center">
	     <?php include("module/Menu/index.php") ; ?>
          <br>
          <br>

          <br>
          <br>
          <br>
          <br>
          <br>
          <br>
          <br>
          <br>
          <br>

          <br>
          <br>
          </div>
      </td>
    </tr>
    <tr>
      <td class="border" bgcolor="#6A6A6A" height="20"><div align="right">Code & Design by Slider</div></td>
    </tr>

  </table>
  <p>&nbsp;</p>
</div>
</body>
</html>

Weiss einer wie man das besser machen kann ?
 
Auch wenn die Daten aus einer Datenbank kommen, musst du lediglich die Inhalte des $replacement-Arrays aus meinem Beispiel ändern.

Hier eine kompakte Version:
PHP:
<?php

	include 'config.php';
	connect();

	function getParsedContent($file, $replacement)
	{
		if( !file_exists($file) || !is_file($file) || !is_readable($file) || !($content = file_get_contents($file)) ) {
			return false;
		}
		if( !is_array($replacement) || count($replacement)<1 ) {
			return false;
		}

		foreach( $replacement as $key => $value ) {
			if( !is_string($key) || !is_string($value) || !is_numeric($value) ) {
				continue;
			}
			$content = str_replace('{'.strtolower($key).'}', $value, $content);
		}
		return $content;
	}


	$query = "
		SELECT
		        *
		  FROM
		        `config`
		";
	echo getParsedContent('index.htm', mysql_fetch_array(mysql_query($query), MYSQL_ASSOC));
 
?>
 
hab das Beispiel jetzt mal probiert , es werden keine Platzhalter ersetzt und es kommt keine Fehlermeldung ! was habe ich falsch gemacht ?wie muss die Mysql Datenbank aussehen?
 
Überprüfe mal mit Hilfe der var_dump()-Funktion, welchen Wert die getParsedContent()-Funktion zurückgibt. Wenn es false ist, wurde die Funktion aufgrund eines funktionsinternen Fehlers abgebrochen, da beispielsweise die Datei nichts existiert oder nicht lesbar ist, oder der zweite Parameter kein Array ist.
 
das hier kommt raus wenn ich var_dump benutzte :

Code:
array(10) {
  [0]=>
  string(10) "Sliders HP"
  ["titel"]=>
  string(10) "Sliders HP"
  [1]=>
  string(46) "<img src="banner.jpg" height="95" width="653">"
  ["header"]=>
  string(46) "<img src="banner.jpg" height="95" width="653">"
  [2]=>
  string(33) "<?php include("content.php") ; ?>"
  ["content"]=>
  string(33) "<?php include("content.php") ; ?>"
  [3]=>
  string(43) "<?php include("module/Menu/index.php") ; ?>"
  ["menu"]=>
  string(43) "<?php include("module/Menu/index.php") ; ?>"
  [4]=>
  string(23) "Code & Design by Slider"
  ["footer"]=>
  string(23) "Code & Design by Slider"
}
 
Zurück