Pizzatoni.: Namenliste erstellen

Hallo,
wie ihr evtl. bereits mitbekommen habt, bin ich gerade dabei PHP zu erlernen. Allerdings bin ich jetzt auf ein Problem gestoßen und weiß leider nicht, wie ich dieses beheben soll.
Ich habe anfangs eine Formular, in dem man seinen Namen eingeben soll. Dieser Name soll mittels POST in die Datei Namenliste.txt geschrieben werden. Dazu habe ich folgenden Code geschrieben.

Als erstes hier einmal die Html-Datei (das Formular):

  
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
<html>  
  <head>  
  <meta http-equiv="content-type" content="text/html; charset=windows-1250">  
  <meta name="generator" content="PSPad editor, www.pspad.com">  
  <title></title>  
  </head>  
  <body>  
    <form action="Datei5.php" action="post">  
    <input name="name"><input type="submit" value="OK">  
    </form>  
  </body>  
</html>  

Und hier der PHP Code, mit Hilfe dessen, der Name in die Namenliste.txt geschrieben werden soll.

  
<html>  
<head>  
</head>  
<body>  
  <?php  
  $name=$_POST["name"];  
  $datei = fopen("Namenliste.txt","r+");  
  echo $name;  
  fclose($datei);  
  ?>  
</body>  
</html>  

Man kann zwar nun seinen Namen eingeben und bestätigen und es wird auch die PHP Seite geladen, aber der Name steht leider nicht in der Namenliste.txt :( .
Kann mir vielleicht jemand sagen, was ich da falsch mache?

Mit freundlichen Grüßen,
Pizzatoni

  1. <form action="Datei5.php" action="post">

    Das ist wohl ein Fehler^^.
    <form action="Datei5.php" method="post">

    So, jetzt ist klappt das leider aber immer noch nicht :( .

  2. Hi

    wie ihr evtl. bereits mitbekommen habt, bin ich gerade dabei PHP zu erlernen.

    Nö, aber ich helf dir trotzdem ;)

    <input name="name"><input type="submit" value="OK">

    Jedes Input braucht ein Type. In deinem Fall "text".

    <?php
      $name=$_POST["name"];
      $datei = fopen("Namenliste.txt","r+");
      echo $name;
      fclose($datei);
      ?>

    Echo gibt einen String auf der Seite aus. Aber in eine Datei schreibt u.a. fwrite.

    Lg
    quitte

  3. Man kann zwar nun seinen Namen eingeben und bestätigen und es wird auch die PHP Seite geladen, aber der Name steht leider nicht in der Namenliste.txt :( .
    Kann mir vielleicht jemand sagen, was ich da falsch mache?

    Mit freundlichen Grüßen,
    Pizzatoni

    So, Problem hat sich von selbst gelöst, habe noch ein bisschen rumprobiert und geschaut, da ist mir aufgefallen, dass man mit echo nicht in die Datei schreibt, also habe ich das mit fwrite($datei, $name); ersetzt und nun klappt es. Habe dann noch statt $datei = fopen("Namenliste.txt","r+"); - $datei = fopen("Namenliste.txt","a"); geschrieben und nun sieht das ganze so aus:

      
    <html>  
    <head>  
    </head>  
    <body>  
      <?php  
      $name=$_POST["Name"];  
      echo "<h3>Hallo ".$name."!</h3>";  
      $datei = fopen("Namenliste.txt","a");  
      fwrite($datei, ", ".$name);  
      fclose($datei);  
      ?>  
    </body>  
    </html>  
    
    

    Jetzt möchte ich allerdings noch, dass immer der Name des letzten Besuchers auf der Seite steht. Wie mache ich das am einfachsten?
    Ich hoffe mir kann jemand weiterhelfen.

    Mit freundlichen Grüßen,
    Pizzatoni

    1. Hi

      Jetzt möchte ich allerdings noch, dass immer der Name des letzten Besuchers auf der Seite steht. Wie mache ich das am einfachsten?
      Ich hoffe mir kann jemand weiterhelfen.

      In diesem Fall muss natürlich der "alte" Name, der noch in der Datei steht, ausgelesen werden BEVOR der "neue" Name eingetragen wird. Fürs Auslesen nehme ich immer die Funktion file_get_contents. Diese Funktion braucht keine zuvor geöffnete (=fopen) Datei.

      Lg
      quitte

  4. Hi!

    $name=$_POST["name"];

    Gewöhn dir bitte nicht erst an, die Werte aus den superglobalen Arrays $_GET/$_POST/usw. 1:1 in andere Variablen umzukopieren. Das bringt keine Punkte, außer dass du die Komplexität des Scripts um eine Variable erhöhst und die Herkunft der Werte verschleierst.

    $datei = fopen("Namenliste.txt","r+");

    Desweiteren arbeitest du mit PHP typischerweise in einer Umgebung, in der Requests parallel abgehandelt werden. Wenn sich diese Prozesse beim Dateibearbeiten in die Quere kommen, kann es zu Datenverlust kommen. Das solltest du mit Dateisperren verhindern.

    Lo!