MYSQL-DB per PHP-Formular leere Felder autom. mit Zeichen füllen

julia29

Erfahrenes Mitglied
Hallo,

klingt eigentlich einfach, klappt dennoch nicht.
Möchte per PHP-Formular einen neuen Datenbankeintrag erstellen ("INSERT INTO"). Zwei Felder (VARCHAR) müssen vom User nicht unbedingt ausgefüllt werden und sollen in diesem Fall dann in der DB automatisch mit mit einem Punkt ( . ) gefüllt werden.

Habe schon alles mögliche ausprobiert, mit Null funktioniert es, aber andere Werte für Standard nimmt er nicht. Auch so klappt es nicht 'xxx'
Kann mir dort jemand weiterhelfen?

mfg Julia
 
Trägst du die Werte denn auch ein? Wenn dein Query wie folgt aussieht:
SQL:
INSERT INTO tbl (feld1, feld2, feld_optional) VALUES('wert1', 'wert2', '')
Dann wird der leere String hineingeschrieben. Du müsstest feld_optional also gar nicht im Query behandeln (eventuell klappt als wert dann NULL, das habe ich noch nie ausprobiert).
Du kannst das aber auch mit PHP machen:
PHP:
$feld_optional = isset($_POST['formular_feld']) && !empty($_POST['formular_feld'])? mysql_real_escape_string($_POST['formular_feld']) : '.';
 
Hallo timestamp,

mit Null klappt es nicht.
Aber die PHP-Lösung wäre sicherlich ein einfacher Schritt.

vielen Dank für den Hinweis, werde ich morgen gleich mal anpassen.
mfg Julia

Hallo,
habe es mit einer if-Anweisung gelöst, bevor die Daten an die SQL-DB eingetragen werden.

Falls es mal jemand braucht.

if($feld12 == "")
{
$feld12 = ".";
}

if($feld13 == "")
{
$feld13 = ".";
}
 
Man kann das auch in MySQL direkt lösen

Möglichkeiten dass NULL und '' gleich ausgewertet wird:
SQL:
IFNULL(NULLIF('{myfiiedl}', ''), '.')
-----------------------
IFNULL(NULLIF('my_string', ''), '.') -- ergibt my_string
IFNULL(NULLIF(NULL, ''), '.') -- ergibt .
IFNULL(NULLIF('', ''), '.') -- ergibt .

-- oder
IF(IFNULL('{myfiiedl}', '') = '', '.', 'my_string')
-----------------------

IF(IFNULL('my_string', '') = '', '.', 'my_string') -- ergibt my_string
IF(IFNULL(NULL, '') = '', '.', 'my_string') -- ergibt .
IF(IFNULL('', '') = '', '.', 'my_string') -- ergibt .
 
Zuletzt bearbeitet von einem Moderator:
julia29 hat gesagt.:
Hallo,
habe es mit einer if-Anweisung gelöst, bevor die Daten an die SQL-DB eingetragen werden.

Falls es mal jemand braucht.

Wie schon in meinem Post vorher, ist das die kürzere Variante. Dazu mal nach ternärem Operator googlen:
PHP:
$feld12 = (empty($feld12))?'.' : $feld12;
 

Neue Beiträge

Zurück