freak: PHP, eintrag in textfile per formular

Tag,
Ich habe ein script geschrieben, das in einer tabelle daten aus einem textfile anzeigt

textfile: zbsp:
link-pfad#link-text#datum#status
test1.doc#testdokument1#20-03-2003#done
test1.doc#testdokument1#20-03-2003#done
test1.doc#testdokument1#20-03-2003#done

script:
[PHP]
<HTML>
<HEAD>
<link rel="STYLESHEET" href="http://intranet.sbb.ch/apps/stylesheets/standard.css"
type="text/css">

<TITLE> Change Request Anträge</TITLE>
</HEAD>

<BODY bgcolor="#FFFFFF">

<table width="500" border="0" cellspacing="0" cellpadding="0">
<tr>
    <td bgcolor="#003399"><font color="#FFFFFF"><b> Change Request Anträge</b></font></td>
</tr>
</table>
<table border="0" width="500">

<TABLE width="500" border="0" cellpadding="0" cellspacing="0">
 <TR>
  <TD width="40%"><b>Antrag</b></TD>
  <TD width="40%"><b>Datum</b></TD>
   <TD width="20%"><b>Status</b></TD>
 </TR>
 <?php

$datei = fopen("liste.txt", "r") ;
while (!feof($datei)) {
 $zeile = fgets($datei, 512) ;
 $eintrag = explode("#", trim($zeile)) ;

?>

<TR>
  <TD><b><A href="<?php echo $eintrag[0]; ?>">
   <?php echo ($eintrag[1]); ?></A></b></TD>
  <TD><b><?php echo $eintrag[2]; ?></b></TD>
    <TD><b><?php echo $eintrag[3]; ?></b></TD>
 </TR>

<?php
}
fclose($datei) ;?>

</TABLE>
</BODY>
</HTML>
[/PHP]

jetzt sollte ich ein formular haben, mit dem man neue einträge in das textfile machen kann, also den pfad eingeben, den link, das datum, und den status per dropdown auswählen kann, allerdings habe ich ab hier keine ahnung mehr wie ich das machen soll.

  1. Hi,

    Na du könntest folgendes machen:

    $datei = fopen("liste.txt", "a");
    fwrite($datei,"$pfad#$text#$datum#$status");
    fclose($datei);

    Das macht Dir die Datei auf und schreibt die Zeile ans ende der Datei.

    mfg
    PHP_Dude

    1. ich schnalls leider net ganz, wie ich das dann mitnem formular verknüpfen muss??

    2. Hi,

      Na du könntest folgendes machen:

      $datei = fopen("liste.txt", "a");
      fwrite($datei,"$pfad#$text#$datum#$status");
      fclose($datei);

      wenn ich das mache kommt die meldung undefined variable

      und $pfad@$test etc hab ich je wirklich nirgends definiert??

      1. Hier mal mit Formular:

        <?php
        if($_POST['submit']) {
          $datei = fopen("liste.txt", "a");
          fwrite($datei,$_POST['link'].'#'.$_POST['pfad'].'#'.$_POST['datum'].'#'.$_POST['status']);
          fclose($datei);
        }
        ?>
        <html>
        <body bgcolor="#FFFFFF" text="#000000">
        <form name="form1" method="post" action="<?=$_SERVER['PHP_SELF']?>">
        Link:<input type="text" name="link"><br>
        Pfad:<input type="text" name="pfad"><br>
        Datum:<input type="text" name="datum"><br>
        Status:<select name="status">
               <option>done</option>
               <option>sonstwas</option>
               </select><br>
        <input type="submit" name="submit" value="Eintragen">
        </form>
        </body>
        </html>

        1. hi
          alles funktioniert, danke

          jetzt hab ich nur nopch ein problem...
          wen der status "done" angewählt is, schreibts im textfile immer doneonee
          merkwürdig oder?
          haste ne erklkärung?

          1. Ersetz diese Zeile

            fwrite($datei,$_POST['link'].'#'.$_POST['pfad'].'#'.$_POST['datum'].'#'.$_POST['status']);

            mal durch diese

            fwrite($datei,$_POST['link'].'#'.$_POST['pfad'].'#'.$_POST['datum'].'#'.$_POST['status']."\n");

            mfg
            PHP_Dude

            1. jetzt siehts so aus
              testlink2#testpfad2#23-03-2003#done
              nee
              es gitb einfach n zeilenumbruch u nd dan kommt das nee

              aber WOHER kommt diese nee???

              1. jetzt siehts so aus
                testlink2#testpfad2#23-03-2003#done
                nee
                es gitb einfach n zeilenumbruch u nd dan kommt das nee

                aber WOHER kommt diese nee???

                Keine Ahnung, bei mir passiert das nicht.
                Poste doch Deinen Code nochmal hier rein.

                1. eintragen.php (dein file)
                  _______________
                  <?php
                  if($_POST['submit']) {
                    $datei = fopen("liste.txt", "r+");
                    fwrite($datei,$_POST['link'].'#'.$_POST['pfad'].'#'.$_POST['datum'].'#'.$_POST['status']."\n");
                    fclose($datei);
                  }
                  ?>
                  <html>
                  <body bgcolor="#FFFFFF" text="#000000">
                  <form name="form1" method="post" action="<?=$_SERVER['PHP_SELF']?>">
                  Link:<input type="text" name="link"><br>
                  Pfad:<input type="text" name="pfad"><br>
                  Datum:<input type="text" name="datum"><br>
                  Status:<select name="status">
                         <option>done</option>
                         <option>canceled</option>
                         </select><br>
                  <input type="submit" name="submit" value="Eintragen">
                  </form>
                  </body>
                  </html>

                  anzeige.php
                  ___________
                  <HTML>
                  <HEAD>
                  <link rel="STYLESHEET" href="http://intranet.sbb.ch/apps/stylesheets/standard.css"
                  type="text/css">

                  <TITLE> Change Request Anträge</TITLE>
                  </HEAD>

                  <BODY bgcolor="#FFFFFF">

                  <table width="500" border="0" cellspacing="0" cellpadding="0">
                  <tr>
                      <td bgcolor="#003399"><font color="#FFFFFF"><b> Change Request Anträge</b></font></td>
                  </tr>
                  </table>
                  <table border="0" width="500">

                  <TABLE width="500" border="0" cellpadding="0" cellspacing="0">
                   <TR>
                    <TD width="40%"><b>Antrag</b></TD>
                    <TD width="40%"><b>Datum</b></TD>
                     <TD width="20%"><b>Status</b></TD>
                   </TR>
                   <?php

                  $datei = fopen("liste.txt", "r") ;
                  while (!feof($datei)) {
                   $zeile = fgets($datei, 512) ;
                   $eintrag = explode("#", trim($zeile)) ;

                  ?>

                  <TR>
                    <TD><b><A href="<?php echo $eintrag[0]; ?>">
                     <?php echo ($eintrag[1]); ?></A></b></TD>
                    <TD><b><?php echo $eintrag[2]; ?></b></TD>
                      <TD><b><?php echo $eintrag[3]; ?></b></TD>
                   </TR>

                  <?php
                  }
                  fclose($datei) ;?>

                  </TABLE>
                  </BODY>
                  </HTML>

                  1. Das passiert weil du zum öffnen der Datei "r+" verwendest.
                    wenn du "a" nimmst dann funktoniert alles bestens.

                    1. Wenn du die Einträge sortiert nach dem neusten Eintrag haben willst, dann solltest du folgenes ausprobieren:

                      <HTML>
                      <HEAD>
                      <link rel="STYLESHEET" href="http://intranet.sbb.ch/apps/stylesheets/standard.css" type="text/css">
                      <TITLE> Change Request Anträge</TITLE>
                      </HEAD>
                      <BODY bgcolor="#FFFFFF">
                      <table width="500" border="0" cellspacing="0" cellpadding="0">
                      <tr>
                          <td bgcolor="#003399"><font color="#FFFFFF"><b> Change Request Anträge</b></font></td>
                      </tr>
                      </table>
                      <table border="0" width="500">
                      <TABLE width="500" border="0" cellpadding="0" cellspacing="0">
                       <TR>
                        <TD width="40%"><b>Antrag</b></TD>
                        <TD width="40%"><b>Datum</b></TD>
                         <TD width="20%"><b>Status</b></TD>
                       </TR>
                      <?php
                      $datei=array_reverse(file('liste.txt'));
                      foreach($datei as $line) {
                        $eintrag=explode("#", trim($line));
                        echo'
                       <TR>
                        <TD><b><A href="'.$eintrag[0].'">'.$eintrag[1].'</A></b></TD>
                        <TD><b>'.$eintrag[2].'</b></TD>
                        <TD><b>'.$eintrag[3].'</b></TD>
                       </TR>';
                      }
                      ?>
                      </TABLE>
                      </BODY>
                      </HTML>

                      1. DAAAAAAAAAAAAANKE jeztt funktioniert alles
                        :-) *freu*
                        schönen tag noch :-)

                    2. Das passiert weil du zum öffnen der Datei "r+" verwendest.
                      wenn du "a" nimmst dann funktoniert alles bestens

                      ok, ich habs selber jetzt noch angepast und \n vor dem ersten eintrag gehängt, damits nich ne leere zeile macht und ne fehlermeldung generiert.
                      jetzt is fas alles gut bis auf 1 sache. wie kann ich es jetzt machen das die neuesten posts zuoberst im textfile sind??