Felder mit NULL markieren?

greenslot

Mitglied
Hallo,

ich habe ein Formular über das ein paar Dinge in eine Datenbank geschrieben werden.
In dem Formular gibt es zwei Felder, die nicht unbedingt ausgefüllt werden müssen, die auch in der Datenbankstruktur mit "Standard NULL" gekennzeichnet sind.
Wenn man jetzt über das Formular einen neuen Datensatz einfügt, die Felder aber leer sind, verschwindet NULL und in dem Feld steht dann nichts drin.
Gibt es eine Möglichkeit die Felder nicht anzurühren, wenn sie leer sind und nur die übrigen zu befüllen?
 
NULL bedeutet "NICHTS" also nicht mal (int) 0 . vielleicht erklärst du dich mal genauer z.B. mit Quellcode.
 
Der Quellcode steht hier: http://www.tutorials.de/javascript-ajax/381560-formular-ueberpruefen-vor-dem-absenden.html :)

Und da gibt es zwei Felder die nicht ausgefüllt werden müssen, welche als NULL markiert bleiben sollen, wenn sie leer abgeschickt werden.
Über phpmyadmin habe ich die Tabelle angelegt und dort sind die Felder als Standard mit NULL angehakt.

Wie kann man es lösen, dass diese nicht angerührt werden, wenn das Formular dort leer bleibt?
 
Wenn die Felder leer bleiben, sollte auch nichts anderes als NULL in die DB-Spalten kommen. Probleme gibts, wenn du die POST-Werte beim Absenden des Inserts ungeprüft als Strings übergibst, wie

PHP:
$sql = "INSERT INTO `test` VALUES ('".$_POST['leeres_feld']."');";

Dann landet natürlich '' drin. Prüfe mit empty ob in dem Feld etwas steht, und wenn nicht, gibst du im INSERT entweder direkt NULL an oder aber du beachtest die Spalte gar nicht, womit der Standard, also auch NULL, eingetragen würde.

Und vergiss das Escapen nicht.
 
Zuletzt bearbeitet:
item: Sorry, hab grad keine Lust einen anderen Thread nach einer klaren Frage zu durchsuchen.

item: Annahme: Du arbeitest mit MySQL

item: Null ist nicht gleich einem leeren String

item: Um Leerstrings nach NULL zu konvertieren kann man bei MySQL folgendes anwenden
SQL:
INSERT INTO my_table (field) VALUES(IF('{$myBValue}' = '', NULL, '{$myValue}'))
 
Zuletzt bearbeitet von einem Moderator:
item: Um Leerstrings nach NULL zu konvertieren kann man bei MySQL folgendes anwenden
SQL:
INSERT INTO my_table (field) VALUES(IF('{$myBValue}' = '', NULL, '{$myValue}'))
Puhh... und wie muss das für diesen Zweck aussehen?

SQL:
VALUES ( '" . mysql_real_escape_string($_POST["name"][0]) . "' ) ...

SQL:
SET name = '" . mysql_real_escape_string($_POST["name"][$id]) . "' ...

Könntest du mir da die Verzweigung bitte einbauen? Danke!!
 
Zuletzt bearbeitet von einem Moderator:
PHP:
VALUES(IF('".mysql_real_escape_string($_POST['name'][0])."' = '', NULL, '".mysql_real_escape_string($_POST['name'][0])."'))

PHP:
SET name = IF('".mysql_real_escape_string($_POST['name'][0])."' = '', NULL, '".mysql_real_escape_string($_POST['name'][0])."')

bei der SET variante bin ich mir nicht sicher, oben schon...

das Format von einer mysql-if Abfrage ist: if(wenn, dann, sonst)
 
Könntest du mir da die Verzweigung bitte einbauen? Danke!!
Nö. Mein Beispiel ist Aussagekräftig genug. Was du nicht kennst an den Befehlen solltest du in der MySQL-Doku nachschlagen.

Wie due dein SQL-String den du in PHP erstellst nachher testen kannst, gibts ein Tutorial. PHP MySQL Debug Queries

Einzig noch den Tipp: Du kannst auch in PHP auf Null prüfen und ggf. den Wert entsprechend vorbereiten.
 
Nö. Mein Beispiel ist Aussagekräftig genug. Was du nicht kennst an den Befehlen solltest du in der MySQL-Doku nachschlagen.

Wie due dein SQL-String den du in PHP erstellst nachher testen kannst, gibts ein Tutorial. PHP MySQL Debug Queries

Einzig noch den Tipp: Du kannst auch in PHP auf Null prüfen und ggf. den Wert entsprechend vorbereiten.

Yaslaw, du bist hier Moderator. Wenn du schon keine Hilfestellung mehr geben willst, dann schreib doch bitte nichts dazu. Ich bin seiner Bitte bereits nachgekommen.
Ahja, und da fällt mir noch etwas zu ein: Bitte beachte §15 der Netiquette. Schau dir bitte die Beistrichregeln an. (http://odl.vwv.at/deutsch/odlres/res9/Rechtschreibung/RS2_Beistriche.htm)

Gruß
 
Neue Grammatikregeln? Wann wurden denn die eingeführt - wohl nach meiner Schulzeit. Zum Glück will ich kein Buch schreiben und mit den alten ist man selten ganz falsch. *g*

Achja, ich schreibe aber gerne dazu, dass er selber etwas erarbeiten soll. Keine Antwort geben ist doch sehr unfreundlich wenn man persönlich angesprochen wird.
 

Neue Beiträge

Zurück