Haue: Formulareingaben in Texdatei speichern

Hi,

ich überlege schon die ganze Zeit wie ich folgendes Problem am besten lösen kann.
Also:
Ich habe ein Formular, das wie eine Fussballtabelle aufgebaut ist.
Nun soll man die Mannschaften und die dazu gehörigen Punkte eingeben und abspeichern können. Habe mich schon durch viele Artikel gelesen, finde aber keinen Anfang.

Könnt ihr mir sagen wie ich da am besten starte? Habt ihr da ein Beispiel, das mehrere Werte in eine Textdatei speichert und diese später wieder ausgibt?

Ich bin für jede Hilfe sehr dankbar
Mfg
Haue

  1. Hello,

    handelt es sich um eine starre Kreuztabelle oder um eine mit Satzaufbau und n gleichartigen Sätzen?

    Liebe Grüße aus http://www.braunschweig.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    1. Eine ganz normale Tabelle.

      Links stehen die Mannschaften, dann Punkte, dann Tore!

      Ich möchte einigen Leuten von meinem Verein die Möglichkeit geben, deren Tabelle auf dem laufenden zu halten.
      Es handelt sich praktisch um ein großes Formular

      1. Hello,

        Eine ganz normale Tabelle.

        Links stehen die Mannschaften, dann Punkte, dann Tore!

        Ich möchte einigen Leuten von meinem Verein die Möglichkeit geben, deren Tabelle auf dem laufenden zu halten.
        Es handelt sich praktisch um ein großes Formular

        Das heißt also, dass in x-Richtung ein Datensatz gebildet wird, der in y-Richtung für jede Mannschaft einmal wiederholt wird, oder?

        Also wiederholt sich die Struktur pro Mannschaft einmal.

        Machs mal für den Anfang so:

        Eingabeformualar bauen
        Alle Datenfelder, die gespeichert werden sollen, heißen "data[feldname]". Feldname muss natürlich druch den jeweiligen Spaltennamen ersetzt werden.

        Dann im Script:

        Backslashes entfernen

        $_data = strip($_POST['data']); # nach strip() mal im Forum suchen

        textfile-fähigen  Datensatz bauen, Schnellschussmethode

        $record = base64encode(serialize($_data));

        Datensatz in die Datei einfügen, Fu ktion musst Du selber schreiben

        $ok = record_append($filename,$record);

        #Und die Daten wiederholen:
        $_record_list = get_record_list($filename,$first,$count);

        #Und anzeigen:

        sollte natürlich auch eine Funktion werden.

        es empfiehlt sich bei kleinen bis mittelgroßen Tabellen auch, diese

        erst koplett in einen String zu generieren und diesen dann erst im

        passenden Moment auszugeben

        foreach($_record_list as $record)
        {
          $_data = unserialize(base64decode($record));

        echo "\n<table>";
          echo "\n  <tr>";

        foreach($_data as $field)
          {
            echo "\n    <td>".nl2br(htmlentities($field))."</td>";
          }

        echo "\n  </tr>";
          echo "\n</table>";
        }

        function record_append($filename,$record)
        {
          $fh = fopen($filename,'a+');
          if(!$fh) return false;

        if(flock($fh,LOCK_EX))  # wartet solange, bis Datei gesperrt werden kann
          {
            # Dateizeiger garantiert an das Ende der datei setzen
            fseek($fh,0,SEEK_END);
            #
            $record = $record.CRLF
            fwrite($fh,$record,strlen($record));
          }
          fclose($fh);  # hebt die Dateisperre auf und schließt die Datei

        return true;
        }

        Nur so als Anregung.
        Den Rest musst Du dann selbst programmieren.

        Bau für jede Dateioperation eine Funktion und lass sie über einen Button im Script auswählen.

        Viel Erfolg

        Liebe Grüße aus http://www.braunschweig.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        1. OK, besten Dank, dann werde ich mich mal versuchen.

          Sehe da zwar wenig Aussicht auf Erfolg da ich mit PHP so gut wie nichts kann aber vielen Dank für die Hilfe.

          Habe aber eigentlich gedacht, dass das einfacher ist ;-)

          Möglicherweise ist das ja der Anstoss, den ich brache um PHP zu lernen *gg*

          Nochmal Danke!

          1. OK, warte mal. Hab ne Idee:
            +++++++++++++++++++++++++

            Ist es nicht möglich, einfach jeder Tabellenzelle eine Variable zuzuteilen und diese dann in einer Datei zu speichern?
            Praktisch so:

            $Team1  $Punkte1  $Tore1
            $Team2  $Punkte2  $Tore2
            $Team3  $Punkte3  $Tore3
            ...
            $Team11  $Punkte11 $Tore11

            Dann baue ich ein Formular mit also insgesamt 33 Textfelder, die dann 33 Variablen füllen.
            Diese 33 Variablen gebe ich dann in einer Tabelle geordnet wieder aus.

            Wenn die Tabelle nun gepflegt werden soll, wird die alte Textdatei einfach überschrieben.

            Wie ich das machen würde, wenn ich die Daten nur zu einer anderen Seite übergeben würde, weis ich ja. So viel kenne ich dann doch ;-)

            1. Hello,

              OK, warte mal. Hab ne Idee:
              +++++++++++++++++++++++++

              Ist es nicht möglich, einfach jeder Tabellenzelle eine Variable zuzuteilen und diese dann in einer Datei zu speichern?
              Praktisch so:

              $Team1  $Punkte1  $Tore1
              $Team2  $Punkte2  $Tore2
              $Team3  $Punkte3  $Tore3
              ...
              $Team11  $Punkte11 $Tore11

              Ja, genau das macht ja die Dateilösung, nur dass sie die Redundanzen im Typ und Typkombination bereits zu Datansätzen normalisiert hat.

              Tabelle        Team       Punkte       Tore

              $_table[1]   ['Team']   ['Punkte']   ['Tore']
              $_table[2]   ['Team']   ['Punkte']   ['Tore']
              $_table[3]   ['Team']   ['Punkte']   ['Tore']

              Auf die Punkte-Zelle des zweiten Teams greifst Du also so zu:

              $_table[2]['Punkte'] = 23;

              Nun steht in der Zelle der Wert 23.

              Un den Namen des Teams3 bestimmst Du so:

              $_table[3][['Team'] = 'Kikkers SelfForum';

              Und wenn sich die Platzierung von Team 1 und Team 3 ändert, dann kannst Du einen Ringtausch bauen:

              $_hilf = $_table[1];
              $_table[1] = $_table[3];
              $_table[3] = $_hilf;
              unset($_hilf);

              Un dieses gesamte Array kannst Du auch als Array abspeichern:

              $filedata = serialize($_table);
              und dann wegschreiben:

              1. Datei öffnen im a-Mode
              2. Datei sperren
              3. Zeiger auf 0 sethen
              4. $filedata in die Datei schreiben
              5. Datei abschneiden bei strlen($filedata) ( ftruncate() )
              6. Datei schließen und entsperren

              Diese Möglichkeit besteht auch. Man muss das Tabellen-Array also nicht unbedingt in einzelne Datensätze aufteilen. Allerdings muss man dann auch immer die gesamte Datei einlesen, da die einzelnen Datenfelder ja Zeilenende-Zeichen enthalten könnten und man nicht weiß, wie lang ein Datensatz ist.

              Liebe Grüße aus http://www.braunschweig.de

              Tom

              --
              Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
              1. OK, erstmal besten Dank dafür.
                Bin leider völlig durcheinander. Wie fang ich am besten an?
                Wie sieht dann ein Textfeld im Formular aus?
                Komme da nicht weiter!?!

                1. So?:

                  <form action="script.php">

                  PLATZ1
                  <select multiple="multiple" size="3" name="team_platz1[]">
                  <option value="a">Bayern</option>
                  <option value="b">Dortmund</option>
                  <option value="c">Stuttgart</option>
                  <option value="d">Bremen</option>
                  <option value="e">Schalke</option>
                  <option value="f">Köln</option>
                  </select>
                  <input type="text" name="punkte_platz1"/>
                  <input type="text" name="tore_platz1"/>
                  <br>
                  PLATZ2
                  <select multiple="multiple" size="3" name="team_platz2[]">
                  <option value="Bayern">Bayern</option>
                  <option value="Dortmund">Dortmund</option>
                  <option value="Stuttgart">Stuttgart</option>
                  <option value="Bremen">Bremen</option>
                  <option value="Schalke">Schalke</option>
                  <option value="Koeln">Köln</option>
                  </select>
                  <input type="text" name="punkte_platz2"/>
                  <input type="text" name="tore_platz2"/>
                  <br>
                  PLATZ3
                  ...

                  ...

                  <br>
                  PLATZ11
                  ...
                  <br />
                  <input type="submit" name="doit" value="Absenden!" />
                  </form>