PHP Code fehler? Kein Eintrag in meinen Text datei

Grave-Digger

Banned
Registriert
Juni 2005
Beiträge
253
Huhu,

Ich hab hier nen text basiertes gb script, aber leider wird nichts in meine comment.txt eingetragen.

Hier mal der code:

PHP:
<title>G&auml;stebuch von Jiox</title>
<link  rel="stylesheet" href="gfx.css">
<i>Kommentar abgeben</i>
<form action="gb.php?go=add&what=eintrag" method="post" name="Form" id="Form">
  <table width="155" border="0" style="border:dotted 1px #cfcfcf ">
    <tr>
      <td>
       <p>Dein Name:</p>
       <p>
         <input name="name" type="text">
</p>
       <p>Deine E-Mail:        </p>
       <p>
         <input name="Email" type="text" id="Email">
       </p>
       <p>
    <textarea name="comment" id="comment" cols="100" rows="10">Kommentar</textarea>
  </p>
  <p><?php
  echo $errormsg[1];
  echo $errormsg[2];
  echo "<br>";
  echo $error_fatal;
       ?>
    <input name="Eintragen" type="submit" id="eintragen" value="Eintragen">
  </p></td>
    </tr>
  </table>
</form>
<p><br>
  <em>Bisherige Eintr&auml;ge</em><br>
  <img src="trennlinie_1.gif">
  <br>
  <br>
  <?php readfile("comment.txt"); ?>

<?php
$fehler=FALSE;
if($_GET['go']='add' && $_GET['what']=='eintrag'){
                        
        if(empty($_POST['name']) || trim($_POST['name'])==""){
            $errormsg[1] = "*Bitte Name einfügen!";
              $fehler=TRUE;
        }
        if(empty($_POST['Email']) || trim($_POST['Email'])==""){
              $errormsg[2] = "*Bitte Email Adresse angeben!";
              $fehler=TRUE;
        }                
        if(isset($_POST['submit'])&&(!$fehler)){
            $fp      = fopen("comment.txt","a+");
            $alt     = fread("comment.txt");
            $name    = $_POST['name'];
            $mail    = $_POST['Email'];
            $text    = $_POST['comment'];
            $text    = htmlspecialchars($text);
            $text    = stripslashes($text);
            $text    = nl2br($text);
            $datum   = date("d.m.Y");
            $uhrzeit = date("H:i:s");
$comment = "<a href=\"mailto:$mail\"><b>".$name."</b></a> schrieb am <i>".$datum."</i> folgenden Kommentar: <br>".$text."<br><br>";
            $comment1 = trim($comment);
            rewind($fp);
            fputs($fp, "$alt \n $comment1");
            fclose($fp);
        } else {
              $error_fatal = "<b>Bitte alle Felder ausfüllen</b>";
    }
    }
?>
:o:o Brauche Hilfe...
 
AW: PHP Code fehler? Kein Eintrag in meinen Text datei :-(

Hast du Schreibrechte auf die Datei?
 
AW: PHP Code fehler? Kein Eintrag in meinen Text datei :-(

Hab meinen Fehler schon :p
 
Zuletzt bearbeitet:
AW: PHP Code fehler? Kein Eintrag in meinen Text datei :-(

dann poste ihn doch bitte fuer alle, die vllt mal auf diesen thread stossen sollten.
 
AW: PHP Code fehler? Kein Eintrag in meinen Text datei :-(

So hier ist der richtige Code für das GB

100% Getestet

PHP:
<?php ob_start(); ?>
<title>G&auml;stebuch von Jiox</title>
<link  rel="stylesheet" href="gfx.css">
<i>Kommentar abgeben</i>
<form action="gb.php?go=add&what=eintrag" method="post"">
  <table width="155" border="0" style="border:dotted 1px #cfcfcf ">
    <tr>
      <td>
       <p>Dein Name:</p>
       <p>
         <input name="name" type="text">
</p>
       <p>Deine E-Mail:        </p>
       <p>
         <input name="Email" type="text" id="Email">
       </p>
       <p>
    <textarea name="comment" id="comment" cols="100" rows="10">Kommentar</textarea>
  </p>
  <p><?php
  echo $errormsg[1];
  echo $errormsg[2];
  echo "<br>";
  echo $error_fatal;
       ?>
    <input name="submit" type="submit" value="Eintragen">
  </p></td>
    </tr>
  </table>
</form>
<p><br>
  <em>Bisherige Eintr&auml;ge</em><br>
  <img src="trennlinie_1.gif">
  <br>
  <br>
  <?php readfile("comment.html"); ?>

<?php
$fehler=FALSE;
if($_GET['go']='add' && $_GET['what']=='eintrag'){
                        
        if(empty($_POST['name']) || trim($_POST['name'])==""){
            $errormsg[1] = "*Bitte Name einfügen!";
              $fehler=TRUE;
        }
        if(empty($_POST['Email']) || trim($_POST['Email'])==""){
              $errormsg[2] = "*Bitte Email Adresse angeben!";
              $fehler=TRUE;
        }
        $id = 0;                
        if(isset($_POST['submit'])&&(!$fehler)){
            $fp      = fopen("comment.html","a+");
            $name    = $_POST['name'];
            $mail    = $_POST['Email'];
            $text    = $_POST['comment'];
            $text    = htmlspecialchars($text);
            $text    = stripslashes($text);
            $text    = nl2br($text);
            $datum   = date("d.m.Y");
            $uhrzeit = date("H:i:s");
            $id++;
$comment = "Nr: #$id <a href=\"mailto:$mail\"><b>".$name."</b></a> schrieb am <i>".$datum . $uhrzeit."</i> folgenden Kommentar: <br>".$text."<br><br>";
            $comment1 = trim($comment);
            rewind($fp);
            fputs($fp, "$comment1");
            fclose($fp);
            header("Location: gb.php");
        } else {
              $error_fatal = "<b>Bitte alle Felder ausfüllen</b>";
    }
    }
    ob_end_flush();
?>
 
AW: PHP Code fehler? Kein Eintrag in meinen Text datei :-(

hast du auch noch ein script, das den html header ausgibt ? weil so kommts mir ein wenig komisch vor, v.a. der <title> und das stylesheet nicht im <head> Tag.
 
AW: PHP Code fehler? Kein Eintrag in meinen Text datei :-(

Ich gibs ja ehrlich zu, ich wurschtel ziemlich rum. Ich würde es ja gerne über Templates laufen lassen, nur weis ich nich wie ich mir einen einfachen Parser coden könnte. :)

Ist es den möglich die Einträge nicht von " Alt nach Neu " einzutragen, sondern von " Neu nach Alt ". Ich weis nicht wie ich dat machen solle mit der Methode :p :freaky:

Hier könnt ihr mal austesten:

http://www.itpro-forum.de/test/gb.php

Jetzt der endgültige php code:


PHP:
<?php ob_start(); ?>
<title>G&auml;stebuch von Jiox</title>
<link  rel="stylesheet" href="style1.css">
<style type="text/css">
<!--
body,td,th {
    font-size: 12px;
    color: #000000;
    font-family: Verdana, Arial, Helvetica, sans-serif;
}
body {
    background-color: #F9F9F9;
    margin-left: 10px;
    margin-top: 10px;
    margin-right: 10px;
    margin-bottom: 10px;
}
a {
    font-size: 12px;
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-weight: bold;
}
a:link {
    color: #000000;
    text-decoration: none;
}
a:visited {
    color: #FF9900;
    text-decoration: none;
}
a:hover {
    color: #FF9900;
    text-decoration: none;
}
a:active {
    color: #000000;
    text-decoration: none;
}
-->
</style><i>Kommentar abgeben</i>
<form action="gb.php?go=add&what=eintrag" method="post"">
  <table width="155" border="0" class="texteingabe" style="border:dotted 1px #cfcfcf ">
    <tr>
      <td><p>Dein Name:<br>
        <input name="name" type="text">
        </p>
        <p>Deine E-Mail:<br>
          <input name="Email" type="text" id="Email">
          <br>
          <br>
          Dein Kommentar:
          <textarea name="comment" id="comment" cols="100" rows="10">Kommentar</textarea>
        </p>
        <p>
          <?php
  echo $errormsg[1];
  echo $errormsg[2];
  echo "<br>";
  echo $error_fatal;
       ?>
          <input name="submit" type="submit" value="Eintragen">
        </p></td>
    </tr>
  </table>
</form>
<p><br>
  <em>Bisherige Eintr&auml;ge</em>
<hr size="1">
<br>
  <?php readfile("comment.php");

$fehler=FALSE;
if($_GET['go']='add' && $_GET['what']=='eintrag'){
                        
        if(empty($_POST['name']) || trim($_POST['name'])==""){
            $errormsg[1] = "*Bitte Name einfügen!";
              $fehler=TRUE;
        }
        if(empty($_POST['Email']) || trim($_POST['Email'])==""){
              $errormsg[2] = "*Bitte Email Adresse angeben!";
              $fehler=TRUE;
        }                
        if(isset($_POST['submit'])&&(!$fehler)){
            $fp      = fopen("comment.php","a+");
            $name    = $_POST['name'];
            $mail    = $_POST['Email'];
            $text    = $_POST['comment'];
            $text    = htmlspecialchars($text);
            $text    = stripslashes($text);
            $text    = nl2br($text);
            $datum   = date("d.m.Y - H:i:s");
$comment = "<a href=\"mailto:$mail\"><b>".$name."</b></a> schrieb am <i>".$datum."</i> folgenden Kommentar: <br>".$text."<br><br>";
            $comment1 = trim($comment);
            rewind($fp);
            fputs($fp, "$comment1");
            fclose($fp);
            header("Location: gb.php");
        } else {
              $error_fatal = "<b>Bitte alle Felder ausfüllen</b>";
    }
    }
    ob_end_flush();
?>
 
Zuletzt bearbeitet:
AW: PHP Code fehler? Kein Eintrag in meinen Text datei :-(

http://de2.php.net/fopen

da stehen die verschiedenen modi. du brauchst den cursor nur auf den anfang des dateihandles zu setzen, dann werden neue eintraege mit fwrite() an den anfang der datei geschrieben.

ein einfacher parser

PHP:
<?php

class template {

	var $replacements = array(); // array mit werten zum ersetzen; wird von aussen gefuellt
	
	function apply($filename) { // funktion ersetzt werte in datei-string der uebergebenen datei und gibt diesen zurueck
		return strtr(file_get_contents($filename), $this->replacements);
	}
}

$template = new template;
$template->replacements['{nick}'] = 'Hornominator';
$template->replacements['{text}'] = 'Hallo, ich habe mir eine template-klasse geschrieben.';
echo $template->apply('mein_template.tpl');

?>
 
Ja und wie muss ich des dann in die tpl datei eintragen? Kriegt der des dann automatisch die werte oder wie? :rolleyes:
 
du musst in die .tpl dein template eintragen und die variablen setzen

Code:
.tpl
-----
<h2>{nick} schrieb am {date}</h2>
<p>{text}</p>

oder wie du das dann haben moechtest. die schreibweise der variablen kannst du dir frei aussuchen, du gibst dem objekt ja nur mit, was durch was ersetzt wird.

http://php.net/strtr
 
HoRnominatoR schrieb:
du musst in die .tpl dein template eintragen und die variablen setzen

Code:
.tpl
-----
<h2>{nick} schrieb am {date}</h2>
<p>{text}</p>
oder wie du das dann haben moechtest. die schreibweise der variablen kannst du dir frei aussuchen, du gibst dem objekt ja nur mit, was durch was ersetzt wird.

http://php.net/strtr

ähm ja?? wie jetzt? Ich will ja nur wissen was in ich die .tpl datei schreiben muss damit er mir auch die variablen erstezt ;)
 
steht doch da. vorzugsweise solltem an natuerlich die variablen reinschreiben. wenn man will auch noch das was drumherum stehen soll.
 
Zurück
Oben