ich habe verschiedene Formulare gestaltet, die auch soweit funktionieren.
Nun habe ich ein Problem festgestellt, bei dem ich nicht weiterkomme, dazu sei gesagt das ich gerad erste Ansätze von PHP lerne, zwar schon halbwegs durchblicke aber noch keinerlei Fachwissen habe.
Ich möchte die Formulare ganz normal in die MySQL- Datenbank übertragen können, auch wenn nicht alle Felder komplett ausgefüllt sind. Zurzeit ist eine Übertragung leider nur erfolgreich wenn alle Felder komplett ausgefüllt sind.
Zum besseren Verständnis, ob notwendig weiß ich nicht, poste ich mal einen „Eintragevorgang“
[php]
Titel (zB. Gitarrenkonzert)
<span type="text" size="3" name="uebrig"> </span>
Datum
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Januar
Februar
März
April
Mai
Juni
Juli
August
September
Oktober
November
Dezember
2010
2011
2012
2013
</select
Das Script ist anfällig für SQL-Injections. Vor dem Eintragen von Benutzereingaben in SQL-Statements unbedingt mysql_real_escape_string() drüberlaufen lassen. Etwa:
Diese Bedingung müsstest du entsprechend anpassen (etwa die optionalen Felder herauslöschen). Das Script läuft in der vorliegenden Form nicht maximal sauber (setze error_reporting(-1); als erste Zeile ins Script und PHP wird dir die Fehler angeben), sollte aber funktionieren.
Edit: Hm, nein, halt. Es wird dir zumindest nicht den Fehler angeben werden, den ich meinte. Da das $_POST-Feld mit Daten gefüllt wird, die vom Benutzer beeinflussbar sind, kann es vorkommen, dass ein Benutzer die Header so manipuliert, dass nicht alle erwarteten Felder gesetzt sind. Das wird in deinem Script nicht berücksichtigt. Das ist im Normalfall aber meines Wissens halb so wild. Als Wert wird dann einfach der leere String angenommen.
Okay,
setze ich entsprechend ein, ist zwar nicht von hoher Relevanz da das Formular nicht öffentlich sein wird jedoch will ich es richtig lernen, danke.
Den Code für den Fehlerbericht habe ich auch mal eingefügt, eine Fehlermeldung müsste beim Aufrufen der Datei ausgegeben werden? Da sprang mir nichts entgegen.
Ich habe die Stelle einmal komplett entfernt, daraufhin ging die normale Eintragung weiterhin, jedoch nicht wenn ein Feld leer war.
Dann habe ich den Inhalt der Klammern entfernt:
Selbe „Wirkung“, soweit man das so nennen kann.
Wofür genau ist dieser Abschnitt eigentlich? Er enstammt einem von vielen Schnipseln, die ich verwurstete, damit das Ganze läuft. :mrgreen: Wenn ich es richtig verstehe eine Überprüfung ob ein Feld leer ist, quasi genau der Gegenspiel von mir wenn ich auch mit leeren Feldern einen Übertrag möchte?
Zur Zeit führt dein Code die If Anweisung ja nur aus wenn alle Felder voll sind.
Wenn du dir nun standart Formulare anguckst, gibt es ja immer wieder Felder die Pflicht sind und die Optional sind.
Eigentlich müsstest du nur die Felder die Optional sind aus der Abfrage löschen, damit die Anweisung korrekt ausgeführt wird.
Ansonsten übergib den Leeren Strings vor der Übertragung noch den wert Null.
Alle die gelesen haben war hier vorher stand: Vergessen.
Habs hingekriegt, danke für die Hilfe, die vorgeschlagenen Verbesserungen habe ich auch vorgenommen.