Joachim: einfache PHP-Frage

Hallo!

Ich habe eine .dat Datei in der diverse Einträge gespeichert werden. Dann habe ich auch noch eine .php Datei, die alles verarbeitet, und dann noch eine weitere .php Datei, in der sich der html-Code zur Ausgabe befindet. Nun, da ich nun länger schon nichts mit PHP gemacht habe, stehe ich kurz auf der Leitung mit folgendem Problem:

In der PHP Datei wird ausgewertet, ob sich in der .dat Datei Einträge befinden. Ist dies nicht der Fall, so wird eine Nachricht "generiert", welche aber in der php/html Datei ausgegeben werden soll.

Also, codemäßig sieht das so aus:

1. PHP-Datei (core.php)

<?php

if(filesize($file) == 0) //ich weiß, nicht der beste weg, aber nur mal als test
  {
   echo "Datei leer.";
  }

?>

2. PHP/HTML-Datei

<?php

$file = "datei.dat";
  require('core.php');

?>
<html>
<head>
<title>test</title>
</head>
<body>

<div id="main">

</div>
</body>
</html>

...eigentlich funktioniert ja soweit alles, bis auf die ausgabe, denn, der Text vom echo wird ja (logischerweise) vor dem ganzen <html> etc. ausgegeben... - Nun hätte ich gerne, dass dieser innerhalb des <div></div> bereiches ausgegeben wird. (Möchte nämlich php und html klar getrennt haben... was später auch das arbeiten mit header() etc. erleichtert.) - Leider weiß ich nun nicht, wie ich das anstellen kann...

ich hoffe, jemand von euch kann mir helfen

Gruss,
 Joachim

  1. Lieber Joachim,

    ...eigentlich funktioniert ja soweit alles, bis auf die ausgabe, denn, der Text vom echo wird ja (logischerweise) vor dem ganzen <html> etc. ausgegeben... - Nun hätte ich gerne, dass dieser innerhalb des <div></div> bereiches ausgegeben wird.

    was hindert Dich denn daran, eine Variablen $meldung zu definieren, in die Du den in der core.php erzeugten Output ablegst, damit der dann in der PHP/HTML-Datei an entsprechender Stelle ausgegeben werden kann?

    (Möchte nämlich php und html klar getrennt haben... was später auch das arbeiten mit header() etc. erleichtert.)

    Dann solltest Du noch konsequenter vorgehen, und eine echte Template-HTML-Datei anlegen, in der Du dann Inhalte entsprechend "einpflanzt".

    Vorschlag:

    core.php
    --------

    <?php  
      $titel = "";  
      $content = "";  
      $meldung = "";  
      $daten_datei = "pfad/zur/dat-datei.dat";  
      $html_template = "pfad/zur/html-template-datei.html"  
      
      if(filesize($daten_datei) == 0) //ich weiß, nicht der beste weg, aber nur mal als test  
      {  
       $meldung = "<p id="meldung">Datei leer.</p>";  
      }  
      
      $html_output = implode("", file($html_template));  
      
      // hier machst Du nun was mit Deiner Dat-Datei:  
      //  $content = ....  
      // und baust auch schön $meldung mit ein!  
      // schön wäre auch, wenn Du den Titel dynamisch hättest...  
      //  $titel = ...  
      
      $html_output = str_replace('$$content$$', $content, $html_output);  
       // hier musst Du wegen der $$ einfache Anführungszeichen verwenden!  
      $html_output = str_replace('$$titel$$', $titel, $html_output);  
      
      // falls noch spezielle Header wären - jetzt wäre der Moment gut.  
      
      echo $html_output;  
    ?>
    

    template.html
    -------------

    <html>  
    <head>  
    <title>$$title$$</title>  
    </head>  
    <body>  
     <div id="main">$$content$$</div>  
    </body>  
    </html>
    

    Liebe Grüße aus Ellwangen,

    Felix Riesterer.