Ankündigung

Einklappen
Keine Ankündigung bisher.

HTML-Formular: FLOAT DEFAULT NULL speichert immer 0.0

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • HTML-Formular: FLOAT DEFAULT NULL speichert immer 0.0

    Servus,

    ich habe ein HTML-Formular erstellt und Ziel ist, dass NULL in einer Float-Spalte gespeichert wird, wenn das Fomularfeld leer ist.

    Wie muss ich in PHP den NULL-Wert für eine FLOAT-Spalte speichern, wenn ein Formular-Feld leer bleibt? Die Spalte ist als

    Code:
    strom FLOAT(5,1) NULL
    deklariert. Egal was ich mache, am Ende wird immer ein 0.0 im Feld gespeichert, obwohl im HTML-Formular nix eingetragen wird!
    Code:
    $sql = "INSERT INTO tbl1 (strom) VALUES ('$_POST['STROM']')"
    Bei den anderen Spalten (varchar, int, usw) funktioniert es prima, nur die Float-Spalte weigert sich permanent, standardmäßig NULL zu speichern, wenn das Formular-Feld leer ist.

    Wenn ich über den mysql-Client manuell NULL in das Feld eintrage, funktioniert ist. Die Float-Spalte kann also NULL-Werte annhemen.

    Ich hoffe, Ihr könnt mir helfen!
    Danke!!!


  • #2
    Dann musst du entweder dafür sorgen, dass $_POST['STROM'] NULL ist, oder du frägst vorher ab und gibst dem Insert NULL mit.
    Und dass das bei einer INT-Spalte auf deine Art funktioniert, wage ich zu bezweifeln.
    Gruss
    L

    Kommentar


    • #3
      ---zu langsam---

      Kommentar


      • #4
        Ok, danke für den Hinweis!

        Kann mir bitte jemand verraten, wie ich NULL nicht als STRING in ne Variable bekomme? Folgender Code funzt nämlich auch nicht:

        Code:
        if ($_POST['STROM'] == '') {$varFloat = NULL; } else {$varFloat = $_POST['STROM']; };
        
        $sql2 = "    INSERT INTO tbl1 (strom) VALUES ('$varFloat') ";
        Danke!

        P.S.: Dann nerve ich auch nicht
        P.S.: Ich habe es mit INT auch nicht versucht, richtig erkannt

        Kommentar


        • #5
          Wenn es in der Query selbst funktioniert mußt Du eben da NULL eintragen (Stringverknüpfung wie jetzt, ' ' variabel halten).
          --

          „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
          Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


          --

          Kommentar


          • #6
            Zitat von nikosch77-new Beitrag anzeigen
            Wenn es in der Query selbst funktioniert mußt Du eben da NULL eintragen (Stringverknüpfung wie jetzt, ' ' variabel halten).
            Sorry, hab mir Deinen Satz mehrmals durchgelesen, aber kann Dir nicht ganz folgen. Ich denke mal, dass in meinem zuletzt gezeigten Code das Problem ist, dass $varFloat den Wert Null als String gespeichert hat und deswegen wieder 0.0 gespeichert wird. Wenn ich testweise NULL statisch eintrage,
            Code:
            $sql2 = " INSERT INTO tbl1 (strom) VALUES (NULL) ";
            funktioniert es.

            Wie bekomme ich NULL in den SQL-Query, wenn das Feld im HTML-Formular leer ist?

            Kommentar


            • #7
              Zitat von schmidtsmikey Beitrag anzeigen
              Wenn ich testweise NULL statisch eintrage,
              Code:
              $sql2 = " INSERT INTO tbl1 (strom) VALUES (NULL) ";
              funktioniert es.
              Genau das meinte ich
              Zitat von schmidtsmikey Beitrag anzeigen
              Wie bekomme ich NULL in den SQL-Query, wenn das Feld im HTML-Formular leer ist?
              Was hindert Dich daran, den String wie oben zusammenzubauen?

              Eine Variante unter vielen:
              PHP-Code:
              $varFloat = empty ($_POST['STROM'])
                           ? 
              'NULL'
                           
              "'" .$_POST['STROM']. "'";

              $sql2 'INSERT INTO tbl1 (strom) VALUES (' .$varFloat')'
              --

              „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
              Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


              --

              Kommentar


              • #8
                So, ich habe den Fehler gefunden: bei den Werten muss man natürlich die Anführungsstriche weglassen!!!

                $sql2 = " INSERT INTO tbl1 (strom) VALUES ($varFloat) ";

                Kommentar


                • #9
                  Wenn das funktioniert:
                  $sql2 = " INSERT INTO tbl1 (strom) VALUES (NULL) ";
                  sollte der Code oben auch funktionieren.

                  Laß Dir $sql2 ausgeben und kontrolliere die Query. Laß Dir $_POST['STROM'] ausgeben (var_dump) und schau, obs überhaupt leer ist.
                  --

                  „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                  Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                  --

                  Kommentar

                  Lädt...
                  X