Ankündigung

Einklappen
Keine Ankündigung bisher.

Datei schreibt sich automatisch beim Öffnen des Formulars

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Datei schreibt sich automatisch beim Öffnen des Formulars

    Hallo PHP.de User,

    Ich habe ein Formular zum schreiben/erstellen einer essen.txt Datei erstellt. Damit möchte ich für eine Gaststätte bei uns eine Datei erstellen um ein Tagesgericht anzeigen zu lassen.

    Wenn man im Formular dasGericht und den Preis einträgt, dann wird die Datei essen.txt geschrieben. Bei der nächsten eingabe wird diese überschrieben, sodass dann wieder ein neues Tagesgericht erscheint.

    Folgendes Problem hab ich:
    Leider ist es so, das die Datei essen.txt schon geschrieben wird, wenn ich das Formular öffne. Auch vor dem absenden.
    Das hat zur Folge, das wenn man das Formular versehentlich öffnet und wieder schließt, dann das vorhande Gericht gelöscht wird und eine Leere Seite zu sehen ist.


    Frage:
    Wie kann ich erreichen, das die Datei erst nach anklicken des "Absenden" Buttons überschrieben wird und nict beim öffnen der Formularseite?


    Der PHP-Code den ich derzeit benutze lautet:

    <?php
    $fp=fopen("essen.txt",w);
    fwrite ($fp, "<span class=grs>$essen</span>$preis
    <span class=t3>mit $beilagea
    und $beilageb
    </span>");
    fclose($fp);
    ?>

    <form method="POST" action="essen.php">
    <td>Das Gericht: </td><td><input type="text" name="essen" size=
    ...............
    ...............


    Kann mir jemand weiterhelfen und den Code so ändern, das mein Problem gelöst ist?
    Ich danke im Voraus.

    Grüße
    Mario der Geiseltaler

  • #2
    klaro

    PHP-Code:

    <?php 
    function form(){
        echo 
    '<form method="POST" action="essen.php"> 
                 <td>Das Gericht: </td><td><input type="text" name="essen" size= 
                 ............... 
                 ...............
                 <td>eintragen </td><td><input type="submit" name="eintragen" value="Lecker Essen"></td>'
    ;
    }

    function 
    schreiben(){
         
    $fp=fopen("essen.txt",w); 
         
    fwrite ($fp"<span class=grs>$essen</span>$preis
    [b] <span class=t3>mit 
    $beilagea
    und 
    $beilageb[/b]</span>"); 
        
    fclose($fp); 
        unset(
    $_POST["eintragen"];
        
    HEADER("LOCATION:http://".$_SERVER['SERVER_NAME'].
                                                  
    dirname($_SERVER['REQUEST_URI']."/essen.php");
    }

    if(isset(
    $_POST["eintragen"])){
        
    schreiben();
    }else{
        
    form();
    }
    Sollte so klappen , notfalls übergibst dann einfach noch die notwendigen Daten an die Funktion schreibe weiter.
    Normal sollte er aber die $_POST Elemente behalten.

    Kommentar


    • #3
      Vielen Dank für die schnelle Hilfe, aber leider bekomme ich da nur eine Fehlermeldung.

      Parse error: parse error, unexpected ';', expecting ',' or ')' in /home/www/htdocs/familie-pforte.de/sonne/essen.php on line 51
      Zeile 51 mache ich kenntlich mit --- >>> Zeile 51

      Ich schreibe hier noch einmal den gesamten Code der Tabelle. Dieses mal komplett. Vieleicht entdeckt jemand noch einen Fehler warum sich die Seite nicht zeigt.
      Ich bin leider noch nicht so fit mit PHP das ich das allein finde. Man vergebe mir deshalb.

      Hier der Code:


      <table width=400><tr><td>Bezeichnung:</td><td>Eingabefeld:</td><td>Bsp.:</td></tr><tr>

      <?php
      function form(){
      echo '<form method="POST" action="essen.php">
      <td>Das Gericht: </td><td>
      <input type="text" name="essen" size="20"></td><td>Seelachsfilet</td></tr><tr>
      <td>Beilage 1: </td><td>
      <input type="text" name="beilagea" size="20"></td><td>Kroketten</td></tr><tr>
      <td>Beilage 2: </td><td>
      <input type="text" name="beilageb" size="20"></td><td>Beilage</td></tr><tr>
      <td>Preis: </td><td>
      <select name="preis">
      <option value="1" selected>1</option>
      <option value="2">2</option>
      <option value="3">3</option>
      <option value="4">4</option>
      <option value="5">5</option>
      <option value="6">6</option>
      <option value="7">7</option>
      <option value="8">8</option>
      <option value="9">9</option>
      </select>,00 Euro</td><td>5



      <td>eintragen </td><td><input type="submit" name="eintragen" value="Lecker Essen"></td>';

      }

      function schreiben(){
      $fp=fopen("essen.txt",w);
      fwrite ($fp, "<span class=grs>$essen</span>$preis
      <span class=t3>mit $beilagea
      und $beilageb
      </span>");
      fclose($fp);
      unset($_POST["eintragen"]; --- >>> Zeile 51
      HEADER("LOCATION:http://".$_SERVER['SERVER_NAME'].
      dirname($_SERVER['REQUEST_URI']."/sonne/essen.php");
      }

      if(isset($_POST["eintragen"])){
      schreiben();
      }else{
      form();
      }

      </tr></table>
      Die komplette Seitenurl für das Formular lautet: www.familie-pforte.de/sonne/essen.php

      Es wäre nett, wennnoch einmal jemand etwas Zeit opfert um zu helfen, ich gebe auch mal einen aus. Versprochen

      Mario der Geiseltaler

      Kommentar


      • #4
        Na in der Zeile ist ein Syntax Fehler. Und bevor du schreibst du findest ihn nicht, guck nochmal ganz genau drauf! Denn wenn du ihn nicht findest solltest du mit PHP garnicht erst anfangen, mach am besten den PC aus und geh zur Strassenreinigung.

        Kommentar


        • #5
          Zitat von Zergling
          Na in der Zeile ist ein Syntax Fehler. Und bevor du schreibst du findest ihn nicht, guck nochmal ganz genau drauf! Denn wenn du ihn nicht findest solltest du mit PHP garnicht erst anfangen, mach am besten den PC aus und geh zur Strassenreinigung.
          Du bist eine sehr große Hilfe!

          Ich hätte da diese Lösung für dich.
          Code:
          <?php 
          echo '<form method="POST" action="essen.php"> 
          <td>Das Gericht: </td><td> 
          <input type="text" name="essen" size="20"></td><td>Seelachsfilet</td></tr><tr> 
          <td>Beilage 1: </td><td> 
          <input type="text" name="beilagea" size="20"></td><td>Kroketten</td></tr><tr> 
          <td>Beilage 2: </td><td> 
          <input type="text" name="beilageb" size="20"></td><td>Beilage</td></tr><tr> 
          <td>Preis: </td><td> 
          <select name="preis"> 
          <option value="1" selected>1</option> 
          <option value="2">2</option> 
          <option value="3">3</option> 
          <option value="4">4</option> 
          <option value="5">5</option> 
          <option value="6">6</option> 
          <option value="7">7</option> 
          <option value="8">8</option> 
          <option value="9">9</option> 
          </select>,00 Euro</td><td>5 
          
          
           
          <td>eintragen </td><td><input type="submit" name="eintragen" value="Lecker Essen"></td>
          </tr></table>';
          
          if(isset($_POST["eintragen"])){
          $fp=fopen("essen.txt",w); 
          fwrite ($fp, "<span class=grs>$essen</span>$preis
           <span class=t3>mit $beilagea 
          und $beilageb</span>"); 
          fclose($fp);
          echo '<span class=grs>'.$essen.'</span> '.$preis.'
           <span class=t3>mit '.$beilagea.'
          und '.$beilageb.'</span>';
          }
          ?>
          Gruß
          David

          Kommentar


          • #6
            fehlt eh einfach nur die Klammer.. dann würds eh hinhauen!

            bin aber auch dafür, dass man so kleinigkeiten selbst finden sollte.. aber hin und wieder sieht man den wald vor lauter bäumen nicht

            mfg Andi

            Kommentar


            • #7
              bin aber auch dafür, dass man so kleinigkeiten selbst finden sollte
              jap, man sollte aber unterscheiden zw. einem "programmierer" und einem hobbybastler...

              da war noch ein prob konnte es nicht beheben

              PHP-Code:
              <?php
              HEADER
              ("LOCATION:http://".$_SERVER['SERVER_NAME']. 
              dirname($_SERVER['REQUEST_URI'])."/sonne/essen.php");
              ?>
              da kommt die meldung already sent by ouput

              wenn man dennoch eine weiterleitung erzwingen möchte wie realisiert man sowas?
              Gruß
              David

              Kommentar


              • #8
                Bonaparte: Syntaxfehler sind nun wirklich banale Fehler wie eine Klammer vergessen. In der Zeit in der man das hier postet, hätte man die Zeile Zeichenweise durchgehen können. Das hat einfach was mit Faulheit zu tun und der Unlust, sich schon wieder einem Problem zuwenden zu müssen. Sollen das doch die anderen machen, das geht ja ganz schnell und ich kann währenddessen schnell einkaufen gehen oder so nen Mist. Einfach FAULHEIT.

                Und genau, jetzt taucht der nächste Fehler auf und du postest weiter..Ganz prima. Würdest du die Fehlermeldung mal in Google suchen, hättest du die Antwort sofort.

                Abgesehen davon, dass dir jetzt sicher jemand den Fehler nennt, hättest du die Antwort doch längst viel schneller haben können. Und wieder liegts einfach nur an der FAULHEIT.

                Da kann ich eigentlich nur Biff zitieren: Du faule Sau! :wink:

                Kommentar


                • #9
                  Hallo Leute,

                  Ich danke für die vielen Vorschläge und die große Hilfe.
                  Es hat nun geklappt und das Ding macht was ich möchte.

                  Leider betreibe ich das mit den Internetseiten und der Programmierung als Hobby und nicht als Profi. Ich habe erst ca vor 1 1/2 Jahren damit begonnen (heißt mit html, wie sicher jeder mal angefangen hat) und seit etwa 4 Monaten bin ich auf PHP umgestiegen.
                  Bisher habe ich schon vieles selbst lösen können, aber manchmal ...

                  ...sieht man den wald vor lauter bäumen nicht
                  Und ich bin mir nicht zu fein mal jemanden um Hilfe zu beten.
                  Deshalb freue ichmich wenn ich diese dann auch bekomme.
                  Und wenn ich mal Helfen kann, nur melden, ich komme bestimmt.
                  Ich denke das jeder mal ein Brett vor dem Kopf hat und deshalb selbst eine Klammer oder irgentetwas anderes übersieht. Das ist überall so. Manhat eben manchmal Vorstellungen und davon will man nicht abkommen, auch wenn es viel viel einfacher und besser klappen würde.

                  Und ihr wisst ja selbst, ein Quelltext hat wesentlich mehr Zeichen als das Ergebnis auf der Homepage.

                  Also nochmals Dank an alle und beste Grüße
                  Mario der Geiseltaler.

                  Kommentar


                  • #10
                    Naja der Gedanke hatte sich eben aufgedrängt, nachdem du 2x so einfache Fehler hintereinander gepostet hast, die du wirklich innerhalb von Sekunden selbst hättest lösen können.
                    Nix für ungut, Gruß, c

                    Kommentar


                    • #11
                      Macht euch nun blos nicht gegenseitig fertig, es funktioniert doch und OK.
                      Beim nächsten Mal klappts beim ersten Versuch.

                      Mario :wink:

                      Kommentar


                      • #12
                        Hi Zergling,

                        Und genau, jetzt taucht der nächste Fehler auf und du postest weiter..Ganz prima. Würdest du die Fehlermeldung mal in Google suchen, hättest du die Antwort sofort.
                        ich finde es wirklich ab und zu sehr amüsant wie hier manche so energisch versuchen andere zu belehren, so nach dem motto, vor mir steht ein 5 jähriges kind, dem ich jetzt erklären muss, was es hätte tun müssen, um nicht in diese situation zu geraten...

                        tja, und um ehrlich zu sein, hab ich die lösung nicht. 18000 der google-suchergebnisse, beinhalten mind 1000 seiten den fehler selbst und nicht die lösungsansätze, die ich suche.
                        Gruß
                        David

                        Kommentar


                        • #13
                          Zitat von Bonaparte
                          da war noch ein prob konnte es nicht beheben

                          PHP-Code:
                          <?php
                          HEADER
                          ("LOCATION:http://".$_SERVER['SERVER_NAME']. 
                          dirname($_SERVER['REQUEST_URI'])."/sonne/essen.php");
                          ?>
                          da kommt die meldung already sent by ouput

                          wenn man dennoch eine weiterleitung erzwingen möchte wie realisiert man sowas?
                          du hast eine Ausgabe vor deim Header: Das darf nicht sein.

                          --> http://www.phpbb.de/doku/kb/artikel....s_already_sent
                          --> http://de.oscommerce.info/kb/MS2/Typische_Probleme/142

                          mfg HK

                          Kommentar


                          • #14
                            Hui kleine Fehler machen es spannender

                            Die Ausgabe Header already send kommt daher das du vor dem Header nicht eine Ausgabe auf dem Bildschirm machen darfst.Also nicht mal ein Zeilenumbruch oder Freizeichen-

                            Darum hab ich auch das Forumlar in eine Funktion geschrieben , wenn du genau hinschaust siehst du das das schreiben und die Weiterleitung in einer anderen Funktion untergebracht ist.

                            Wenn du auf absenden klickst dann läd er die Seite neu , schaut nach ist es gesetzt wenn ja springt er in die Funktion wo er es reinschreiben soll.

                            PHP-Code:
                            <?php 
                            function form(){ 
                            echo 
                            '<table width=400><tr><td>[b]Bezeichnung:[/b]</td><td>[b]Eingabefeld:[/b]</td><td>[b]Bsp.:[/b]</td></tr><tr>';
                            echo 
                            '<form method="POST" action="essen.php"> 
                            <td>Das Gericht: </td><td> 
                            <input type="text" name="essen" size="20"></td><td>[i]Seelachsfilet[/i]</td></tr><tr> 
                            <td>Beilage 1: </td><td> 
                            <input type="text" name="beilagea" size="20"></td><td>[i]Kroketten[/i]</td></tr><tr> 
                            <td>Beilage 2: </td><td> 
                            <input type="text" name="beilageb" size="20"></td><td>[i]Beilage[/i]</td></tr><tr> 
                            <td>Preis: </td><td> 
                            <select name="preis"> 
                            <option value="1" selected>1</option> 
                            <option value="2">2</option> 
                            <option value="3">3</option> 
                            <option value="4">4</option> 
                            <option value="5">5</option> 
                            <option value="6">6</option> 
                            <option value="7">7</option> 
                            <option value="8">8</option> 
                            <option value="9">9</option> 
                            </select>,00 Euro</td><td>[i]5[/i] 


                             
                            <td>eintragen </td><td><input type="submit" name="eintragen" value="Lecker Essen"></td>
                            </tr></table>'




                            function 
                            schreiben(){ 
                            $fp=fopen("essen.txt",w); 
                            fwrite ($fp"<span class=grs>".
                                                   
                            $_POST['essen']
                                            .
                            "</span>".
                                                   
                            $_POST['preis']
                                            .
                            "
                            [b] <span class=t3>mit "
                            .
                                                   
                            $_POST['beilagea']
                                            .
                            "
                            und "
                            .
                                                   
                            $_POST['beilageb']
                                            .
                            "[/b]</span>"); 

                            fclose($fp); 
                            unset(
                            $_POST["eintragen"]); // so mal korregiert ;) 

                            /*Noch was zum Header dirname($_SERVER['REQUEST_URI']) gibt dir dir
                            komplette Pfadangabe zurück welche in der URL steht. Also alles nach
                            [url]www.meineseite.de[/url]. Nur die Datei selber musst du noch hinschreiben dann
                            per hand.
                            Momentan würdest du auf [url]www.meineseite.de/sonne/sonne/essen.php[/url]
                            wechseln , sofern deine Ausgangs URL [url]www.meineseite.de/sonne/essen.php[/url] war. */
                               
                            HEADER("LOCATION:http://".$_SERVER['SERVER_NAME']. 
                            dirname($_SERVER['REQUEST_URI']."/sonne/essen.php"); 


                            if(isset(
                            $_POST["eintragen"])){ 
                            schreiben(); 
                            }else{ 
                            form(); 

                            ?>
                            Des weiteren nutze keine globalen Variablen in deinen Quellcode , also du übermittelst dir ja die einzelenen Elemente über $_POST['value1'] ... $_POST['value2']

                            Da solltest du besser in der funktion schreiben() direkt auf das $_POST Array zugreifen. Oder besser gesagt :

                            statt $value ein $_POST['value'] schreiben. Sobald globale Varialben aus sind hagelt es neue Fehlermeldungen.

                            Kommentar

                            Lädt...
                            X