reini131: Problem beim Eintragen von Werten in eine csv Datei

Hallo alle zusammen.

Ich bin ein Neuling auf dem Gebiet von php, weshalb ihr Nachsicht mit mir haben müsst.
Zu meinen Problem: Ich habe eine kleine php Seite gemacht über die eine Eingabe von Werten möglich ist, welche in eine csv Datei geschrieben werden.
Nun habe ich jedoch das Problem, dass die zuletzt eingegebenen Werte doppelt eingetragen werden. Drücke ich den speichern Button wird der zuletzt eingetragene Wert in die Tabelle geschrieben und erst nach einen refresh der Seite sind die neuen Werte sichtbar. Hoffentlich könnt Ihr mir bei diesem Problem helfen.

Hier ein Auszug aus dem File.

ZUM AUSGEBEN DER TABELLE

<table border="1">
<?php
$zeilen = 1;
$tabellendatei = fopen("Pall.csv", "r");

while (($daten = fgetcsv($tabellendatei, 5000, ";")) !== FALSE)
{

print "<tr>\n";
 $felderzahl = count($daten);

for ($i = 0; $i < $felderzahl; $i++)
 {
  if ($daten[$i] == "")
   print "<td>&nbsp;</td>\n";
  else
   print "<td>".$daten[$i]."</td>\n";
 }

print "</tr>\n";
 $zeilen = $zeilen + 1;

}

fclose ($tabellendatei);

?>
</table>

// ERZEUGEN DES FORMULAR

<form action = "write3.php" method = "post"><br />
 <input name="Datum" type="text" id="datum" size="29"><br />
 <font color="#B0D1EA" size="1" face="arial"> Datum</font>
 <br />
 <br />
 <input name="Lagerpost" type="text" id="lagerpost" size="29"><br />
 <font color="#B0D1EA" size="1" face="Arial"> Lagerpost</font>
 <br />
 <br />
        :
        :
        :
 <br />
 <input type="submit" value="speichern" name="safe"><br />
 <input type="reset"><br />
</form>

// SCHREIBEN DER NEUEN WERTE IN DIE CSV DATEI

<?php

$datei = fopen("Pall.csv","a+");
 if (!$datei)
 {
    echo "<p>Datei konnte nicht zum Schreiben geöffnet werden</p>";
    exit;
 }
 $datum = $_POST["Datum"];
 $lagerpost = $_POST["Lagerpost"];
 :
 :
 :
 :
 :
 fputs ($datei, "$datum;$lagerpost;................\n");
 fclose($datei);
?>

DANKE schon mal für eure Antworten!

mfg
Reini

  1. Hi,

    Nun habe ich jedoch das Problem, dass die zuletzt eingegebenen Werte doppelt eingetragen werden. Drücke ich den speichern Button wird der zuletzt eingetragene Wert in die Tabelle geschrieben und erst nach einen refresh der Seite sind die neuen Werte sichtbar.

    Du machst einen Denkfehler: Der Eintrag erfolgt doppelt, _wenn_ Du die Seite neu lädst, weil Du die Daten dann erneut abschickst.

    Um den Eintrag direkt zu sehen, musst Du sauber programmieren und Dich an das EVA-Prinzip halten, also:
    1. Eingaben prüfen - ist das Formular überhaupt verschickt?
    2. Verarbeitung - wenn ja (und korrekt bzw. auch nicht doppelt) dann speichern.
    3. Ausgabe vorbereiten - Datei einlesen; sie enthält dann den neuen Eintrag.

    freundliche Grüße
    Ingo

    1. Danke Ingo.

      Hast recht, ich hatte einen Denkfehler drinnen. Ich Idiot
      habe nämlich den php Teil, welcher für das schreiben der neuen Werte zuständig ist nach dem php Teil, welcher für das Ausgeben zuständig ist eingefügt.

      Weiters habe ich noch eine kleine Abfrage eingefügt ob das ganze mit einem Post oder Get gemacht werden soll, da ansonsten bei jedem öffnen der Seite eine leere Zeile hinzugefügt wurde.

      Wer es braucht, hier das Programm zum schreiben in eine CSV:

      <?php

      if (isset($_POST["save"]))
      {
       $datei = fopen("neu.csv","a+");
       if (!$datei)
       {
          echo "<p>Datei konnte nicht zum Schreiben geöffnet werden</p>";
          exit;
       }
       $datum = $_POST["Datum"];
       $lagerpost = $_POST["Lagerpost"];
       :
       :
       :
       :
       fputs ($datei, "$datum;$lagerpost;.........\n");
       fclose($datei);
      }
      ?>

      Danke für die prompte Antwort!