Formulareingaben in Texdatei speichern
Haue
- php
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
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
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
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:
$_data = strip($_POST['data']); # nach strip() mal im Forum suchen
$record = base64encode(serialize($_data));
$ok = record_append($filename,$record);
#Und die Daten wiederholen:
$_record_list = get_record_list($filename,$first,$count);
#Und anzeigen:
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
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!
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 ;-)
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
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!?!
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>