Sie befinden sich hier im Forenarchiv von phpforum.de wenn Sie direkt ins Forum möchten, klicken Sie bitte hier. Zur Startseite kommen Sie hier.

Formulardaten mit dem Wert NULL

Guten Tag :)

Ich habe ein Formular, welches nach Absenden die Daten in einer SQL Datenbank speichert.
Folgende Inhalte gibt es unter anderem:

applid (Integer)
serverid (string, ist ein Name)
port (integer)

applid und serverid werden in einem drop down Menü (<select>) mit bereits vorhandenen Werten in der Datenbank zur Auswahl gestellt, der port ist ein freies Eingabefeld.

Mein Problem:
Alle drei Angaben sind optional, es soll also möglich sein, dass am Ende in der DB "NULL" (natürlich ohne "") steht. Das funktioniert aber so nicht, und meine Frage an euch ist: Wie schaffe ich das dennoch?

Meine Einträge in die SQL Datenbank werden nach dem Prinzip

$sql = "INSERT INTO tabelle VALUES ('".$_POST['wert1']."','".$_POST.....)"; und so weiter. Damit steht in der DB aber am Ende nicht NULL, egal was für if Abfragen ich vorher versuche.

Hier gehts zum Orginal Eintrag "Formulardaten mit dem Wert NULL" im Forum

Antworten

Zitat:
$sql = "INSERT INTO tabelle VALUES ('".$_POST['wert1']."','".$_POST.....)"; und so weiter. Damit steht in der DB aber am Ende nicht NULL, egal was für if Abfragen ich vorher versuche.
Eben nicht egal welche if da vorher stehen.
Zeig mal was du bisher gemacht hast...
So schwer ists ja nicht ;)
Ein kleiner Tipp:
[doc]empty[/doc]


2.

Nuja bei den Select-Felder musst du wohl oder übel einen 'leer' Wert definieren, wenn dieser dann übertragen wird solltest du in deinen Insert eben ein NULL (ohne ' !) eintragen (oder komplett weglassen.

Hast du in den enstrechenden Spalten auch NULL erlaubt?


3.

Zitat:
Nuja bei den Select-Felder musst du wohl oder übel einen 'leer' Wert definieren
Wozu das denn?
[doc]isset[/doc]


4.

Genau das ist mein Problem. Damit er wirklich NULL einträgt, muss in der INSERT Anweisung ...,NULL,... stehen, und nicht sowas wie $_POST['leereVariable'] oder $leereVariable. Denn dann trägt er nicht NULL ein.

Worauf froggy glaube ich hinaus will, und dazu habe ich mal was im Internet gefunden aber nicht verstanden, ist die Nutzung der isset Funktion direkt im SQL query. KAnnst du mir genauere Informationen geben, wie ich die dort verwende?
Dennoch brauche ich ja ein Leerauswahlfeld im select, denn der Nutzer muss ja irgendwo "nichts" auswählen können?!


5.

Mann mann mann....

Code:                   In Zwischenablage kopieren (nur IE)
1">

oder einfacher

Code:                   In Zwischenablage kopieren (nur IE)
2">




6.

Die untere Variante habe ich getestet, aber das macht er nicht. Grund könnte sein, dass zwei davon Integer Variablen sind.
isset geht ebenfalls nicht, da er beim Leerfeld ( <option></option> ) scheinbar irgendwas drin hat, isset ist in dem Fall also true. Derzeit habe ich es mit festen Werten für das Leerfeld und einer switchabfrage gelöst, ergibt aber bei 3 möglichen NULL Werten 7 SQL query :(


7.

Nimm Foggys 2. Variante und erweitere sie:

Code:                   In Zwischenablage kopieren (nur IE)
3">

Dann hast du nur eine SQL-Anweisung und alle darin verwendeten Variablen sollten einen vernünftigen Wert haben.

Und wenn deine SQL-Anweisung nicht ausgeführt werden kann, hilft dir
[doc]mysql_error[/doc]


8.

$sql = "INSERT INTO tabelle VALUES ('".$sowieso."')";

Wenn $sowieso hier "NULL" ist, trägt er dennoch nicht NULL ein.


9.

Hast du NULL überhaupt erlaubt? Was trägt er dann ein?
Zitat:
da er beim Leerfeld ( <option></option> ) scheinbar irgendwas drin hat, isset ist in dem Fall also true.
Wie wärs wenn du selbst einwenig mitdenkst, und die im Post 001 genannte funktion benützt??!
[doc]empty[/doc]


10.

So weit habe ich bereits gedacht... es ändert aber nichts an meinem Problem.

isset($_POST['wert1']) ? $_POST['wert1'] : "NULL"."

Wenn mir den Teil jemand erklären könnte (was ist das vor und hinter dem ?, was grenzt der : ab), wäre ich dankbar. Ich habe dazu leider bisher keine "default" Erklärung gefunden.


11.

Steht aber im Handbuch bei den Operatoren.


12.

ist eine abgekürzte version des if-else konstrukts.
alternative Syntax für Kontrollstrukturen

EDIT: sorry, falscher Link...mag grad nich weitersuchen....findest es bestimmt selbst.


13.

Habs gefunden, danke dir Oliver Albers


14.

eigentlich ists so richtig:

Code:                   In Zwischenablage kopieren (nur IE)
4">




Hier gehts zum Orginal Eintrag "Formulardaten mit dem Wert NULL" im Forum
 
phpforum.de | Impressum