tutorials.de Buch-Aktion 05/2012
Like Tree3Danke
  • 1 Beitrag von Yaslaw
  • 1 Beitrag von Lime
  • 1 Beitrag von Yaslaw
ERLEDIGT
JA
ANTWORTEN
12
ZUGRIFFE
537
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    greenslot greenslot ist offline Mitglied Bronze
    Registriert seit
    Dec 2010
    Beiträge
    39
    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?
     

  2. #2
    Ch Tutorials.de Gastzugang
    NULL bedeutet "NICHTS" also nicht mal (int) 0 . vielleicht erklärst du dich mal genauer z.B. mit Quellcode.
     

  3. #3
    greenslot greenslot ist offline Mitglied Bronze
    Registriert seit
    Dec 2010
    Beiträge
    39
    Der Quellcode steht hier: http://www.tutorials.de/javascript-a...-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?
     

  4. #4
    Avatar von para_noid
    para_noid para_noid ist offline Mitglied Gold
    Registriert seit
    Aug 2011
    Beiträge
    144
    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-Code:
    $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.
    Geändert von para_noid (13.01.12 um 23:15 Uhr)
     
    Für die Übereinstimmung von Niederschrift und Hirninhalt.

  5. #5
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    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
    Code sql:
    1
    
    INSERT INTO my_table (FIELD) VALUES(IF('{$myBValue}' = '', NULL, '{$myValue}'))
    greenslot bedankt sich. 
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  6. #6
    greenslot greenslot ist offline Mitglied Bronze
    Registriert seit
    Dec 2010
    Beiträge
    39
    Zitat Zitat von Yaslaw Beitrag anzeigen
    item: Um Leerstrings nach NULL zu konvertieren kann man bei MySQL folgendes anwenden
    Code sql:
    1
    
    INSERT INTO my_table (FIELD) VALUES(IF('{$myBValue}' = '', NULL, '{$myValue}'))
    Puhh... und wie muss das für diesen Zweck aussehen?

    Code sql:
    1
    
    VALUES ( '" . mysql_real_escape_string($_POST["name"][0]) . "' ) ...

    Code sql:
    1
    
    SET name = '" . mysql_real_escape_string($_POST["name"][$id]) . "' ...

    Könntest du mir da die Verzweigung bitte einbauen? Danke!!
     

  7. #7
    Avatar von Lime
    Lime Lime ist offline frisch fruchtig
    Registriert seit
    Jul 2011
    Beiträge
    374
    PHP-Code:
    VALUES(IF('".mysql_real_escape_string($_POST['name'][0])."' ''NULL'".mysql_real_escape_string($_POST['name'][0])."')) 
    PHP-Code:
    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)
    greenslot bedankt sich. 

  8. #8
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Zitat Zitat von greenslot Beitrag anzeigen
    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.
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  9. #9
    Avatar von Lime
    Lime Lime ist offline frisch fruchtig
    Registriert seit
    Jul 2011
    Beiträge
    374
    Zitat Zitat von Yaslaw Beitrag anzeigen
    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/res...Beistriche.htm)

    Gruß
     

  10. #10
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    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.
    Lime bedankt sich. 
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  11. #11
    greenslot greenslot ist offline Mitglied Bronze
    Registriert seit
    Dec 2010
    Beiträge
    39
    Zitat Zitat von Yaslaw Beitrag anzeigen
    Nö. Mein Beispiel ist Aussagekräftig genug. Was du nicht kennst an den Befehlen solltest du in der MySQL-Doku nachschlagen.
    Habs zwar noch nicht probiert, aber ich denke, ich komme damit klar.
    Die geschweiften Klammern haben mich irritiert, aber jetzt weiß ich, dass die ja für ". ." stehen.

    Na, ich probier das heute Abend mal und dann mal sehen.
     

  12. #12
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  13. #13
    greenslot greenslot ist offline Mitglied Bronze
    Registriert seit
    Dec 2010
    Beiträge
    39
    Also, beide Varianten (INSER und UPDATE) klappen wunderbar! Nochmals DANKE an alle!
     

Ähnliche Themen

  1. dynamische Felder, Felder mit Daten belegen
    Von jenny1106 im Forum C/C++
    Antworten: 8
    Letzter Beitrag: 08.03.10, 10:42
  2. JAVA CASTOR null-Felder ausblenden
    Von maethes82 im Forum Java
    Antworten: 3
    Letzter Beitrag: 24.07.07, 14:21
  3. NULL oder NOT NULL ****?
    Von KingChimera im Forum Relationale Datenbanksysteme
    Antworten: 5
    Letzter Beitrag: 24.08.03, 09:32
  4. markieren unterdrücken
    Von dji im Forum Javascript & Ajax
    Antworten: 7
    Letzter Beitrag: 24.10.02, 13:07
  5. Markieren
    Von Johannes Postler im Forum Visual Basic 6.0
    Antworten: 2
    Letzter Beitrag: 14.02.02, 18:00