Einbinden von Formulardaten mittels PHP in eine txt Datei

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Sireextrem
User
Beiträge: 3
Registriert: Mittwoch 29. Mai 2013, 15:41

Sehr geehrte Mitglieder des Python Forums,

seit kurzem stehe ich vor einem kleinen Problem. Ich sollte eine HTML Formular mittels Javascript Bedingungen auf Gültigkeit überprüfen anschließend war es meine Aufgabe die Daten mittels Python in eine .txt Datei zu schreiben. Die Felder in HTML haben alle eine ID und einen Namen der ebenso in die .txt Datei übernommen werden soll. Nun habe ich dabei ein Probleme der Code sieht einmal so aus:

Code: Alles auswählen

import cgi

print ("Content-Type: text/plain\n\n")

matrix = cgi.FieldStorage()
print ("Habe", len(form), "Datenfelder gefunden:")

f = open("test.txt", "a")

for key in form:
    print (key, "\t", matrix[key].value)


    f.write(matrix[key].value)

f.close()
    
Nun zum Problem er nimmt sagen wir mal 20 Werte auf dabei sind dann z. B. Werte wie Name oder Adresse diese werden aber nicht immer an die selbe Stelle gepackt z. B. landen Sie mal hinten oder in der Mitte.
Sirius3
User
Beiträge: 17737
Registriert: Sonntag 21. Oktober 2012, 17:20

@Sireextrem: Was ist das Problem? Was Du bekommst hast Du ja geschrieben, aber was willst Du?
Sireextrem
User
Beiträge: 3
Registriert: Mittwoch 29. Mai 2013, 15:41

Okay ein Beispiel der Anwender gibt ein:

Name: Fredi
Alter 19
Klasse BBI1

nun trägt Anwender 2 die Daten ein:

Name Karl
Alter 21
Klasse BBI2

in die Datei schreibt der Code z. B.

Fredi BBI1 19
21 Karl BBI2

und ich möchte das die Block weise untereinander sind so das ich anschließend ; einsetzen kann oder Tabs um es zu gliedern.
BlackJack

@Sireextrem: Dann musst Du die Schlüssel in einer festen Reihenfolge abfragen. Am besten gibst Du die sowieso im Programm fest vor, denn vom Client könnten ja sonstwie manipulierte Daten herein kommen.
Sireextrem
User
Beiträge: 3
Registriert: Mittwoch 29. Mai 2013, 15:41

Danke BlackJack werde ich im nächsten Schritt berücksichtigen habe nun folgendes probiert:

Code: Alles auswählen

for key in form:
    if form.has_key("E21"):
        data = form("E21").value
        f.write(data)
    else:
        f.write(";")
dabei schreibt er leider gar nichts mehr in die Datei kann mir da vllt wer sagen wo der Fehler ist er schreibt nicht mal das ;. Bin ja leider noch nicht so gut in Python versuche aber mein bestes eine Analyse wieso es nicht klappt und so wäre schon ausreichend. E21 ist der Name des Feldes in HTML das übergeben werden soll. Da er nicht mal ; ausgibt denke ich liegt das Problem nicht an der Bezeichnung von E21 oder?
Sirius3
User
Beiträge: 17737
Registriert: Sonntag 21. Oktober 2012, 17:20

»schreibt gar nichts mehr« ist keine ausreichende Fehlerbeschreibung. Der Grund, dass er gar nichts mehr schreibt, lieg daran, dass das Programm mit einer Fehlermeldung abbricht. Die landet meist in irgendwelchen log-Dateien, je nach dem wie Dein Server konfiguriert ist. Ohne dass wir diese Fehlermeldung kennen, kann man nur raten (z.B. dass die Fehlermeldung »AttributeError: FieldStorage instance has no __call__ method« lautet), und das ist beim Programmieren immer eine schlechte Methode.
droptix
User
Beiträge: 521
Registriert: Donnerstag 13. Oktober 2005, 21:27

Wo kommt die Variable `form` her? Ich sehe die Definition nicht... ?

Vorschlag: (1) Ermittle zuerst die Schlüssel deiner `matrix` und speichere die als Liste (die Reihenfolge der Elemente ist dann fest). (2) Gehe dann in einer Schleife durch alle Zeilen der `matrix` und iteriere über alle Schlüssel, Pseudo-Code:

Code: Alles auswählen

keys = form.keys()
for line in matrix:
    for key in keys:
        print("%s = %s" % (key, line[key]))
Antworten