leere Formularfelder und INSERT

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

  • leere Formularfelder und INSERT

    Hallo!

    Ich habe auf meinem lokalen Rechner genauso wie bei meinem Webhoster APACHE-PHP-MySQL laufen.

    Wenn ich lokal in meinen Formularen einige Felder nicht ausfülle, bekomme ich beim INSERT eine Fehlermeldung und der Datensatz wird nicht eingefügt. Bei meinem Webhoster funktioniert das gleiche Script aber doch.

    Kann mir jemand sagen, woran das liegt?

    Danke für jede Antwort.

    Bill

  • #2
    bist du dir sicher, dass es wirklich ein und das selbst script ist

    vorschlag: es könnte sein, dass es an der konfiguration bei dir oder/und beim hoster liegt ...

    cu,
    HANSI

    Kommentar


    • #3
      Re: leere Formularfelder und INSERT

      Original geschrieben von bill
      Wenn ich lokal in meinen Formularen einige Felder nicht ausfülle, bekomme ich beim INSERT eine Fehlermeldung und der Datensatz wird nicht eingefügt. Bei meinem Webhoster funktioniert das gleiche Script aber doch.
      bist du sicher dass die tabellen 100%ig gleich definiert sind?

      klingt für mich danach, als ob du zuhause einige spalten mit not null definiert hättest, und bei deinem provider ohne not null...
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar


      • #4
        Danke für die Antworten. Das mit dem Hinweis auf die Definition der Tabelle war ein guter Tipp.

        Ich habs nochmal überprüft. Beim Webhoster werden auch Daten gespeichert für die NOT NULL definiert ist. Bei mir aber nicht.

        Es ist mir klar, dass ich solche Felder im Script abfragen muss, wenn NOT NULL definiert ist. Dennoch würde es mich interessieren, welche Datei dafür zuständig ist, um das einzustellen. Kann mir das jemand sagen?

        Das größere Problem sehe ich aber darin, dass bei mir local auch dann nicht gespeichert wird, wenn ich auch nur ein Formularfeld auslasse, auch wenn NULL erlaubt ist. Ist das normal?

        Danke!
        Bill

        Kommentar


        • #5
          Dennoch würde es mich interessieren, welche Datei dafür zuständig ist, um das einzustellen.
          für das NOT NULL ist überhaupt keine datei verantwortlich, sondern du als ersteller gibst das doch beim anlegen der tabelle mit...?

          Das größere Problem sehe ich aber darin, dass bei mir local auch dann nicht gespeichert wird, wenn ich auch nur ein Formularfeld auslasse, auch wenn NULL erlaubt ist. Ist das normal?
          kommt drauf an, was du mit 'auslassen' meinst.

          wenn du sagst insert into feld1 feld2 feld3 und dann bei values aber nur zwei felder angibst, hast du natürlich auch ein problem...
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6
            Hallo wahsaga!

            Danke für Deine Antwort.

            Leider habe ich mich mißverständlich ausgedrückt.
            für das NOT NULL ist überhaupt keine datei verantwortlich, sondern du als ersteller gibst das doch beim anlegen der tabelle mit...?
            Das weis ich zum Glück. Aber es muß doch einen Grund geben, dass beim Provider ein Datensatz gespeichert wird, obwohl eine Spalte mit NOT NULL über ein Formularfeld keinen Wert erhält. Bei mir lokal wird aber das selbe INSERT abgewiesen. Gibt es dafür irgendwo eine Einstellung?
            kommt drauf an, was du mit 'auslassen' meinst.
            wenn du sagst insert into feld1 feld2 feld3 und dann bei values aber nur zwei felder angibst, hast du natürlich auch ein problem...
            Mit auslassen meine ich, dass ein Formularfeld nicht ausgefüllt wurde. Das INSERT muß natürlich vollständig sein.

            Ich hoffe ich habe jetzt meine Frage verständlicher rübergebracht.

            Willi

            Kommentar


            • #7
              Original geschrieben von bill
              Aber es muß doch einen Grund geben, dass beim Provider ein Datensatz gespeichert wird, obwohl eine Spalte mit NOT NULL über ein Formularfeld keinen Wert erhält. Bei mir lokal wird aber das selbe INSERT abgewiesen. Gibt es dafür irgendwo eine Einstellung?
              wir der datensatz bei deinem provider denn wirklich gespeichert, oder nur ohne das erscheinen einer fehlermeldung abgewiesen?
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Kommentar


              • #8
                Er wird wirklich gespeichert.

                Kommentar


                • #9
                  gib ma die tabellenstruktur bei dir lokal und die von deinem hoster

                  und dann noch den sql-string den du sendest (lokal und hoster)
                  Ich denke, also bin ich. - Einige sind trotzdem...

                  Kommentar


                  • #10
                    Es ist beides identisch. Ich habe aber dennoch beide Scripts und beide Tabellen-Definitonen vom jeweiligen Original kopiert.

                    Lokale Tabellen-Definition:
                    PHP-Code:
                     Feld    Typ    Attribute    Null    Standard    Extra
                    id      int
                    (11)         Nein          auto_increment 
                    titel      varchar
                    (15)         Ja     NULL      
                    vorname      varchar
                    (25)         Ja     NULL      
                    nachname      varchar
                    (25)         Nein           
                    strasse_1      varchar
                    (40)         Ja     NULL      
                    strasse_2      varchar
                    (40)         Ja     NULL      
                    lkz      char
                    (1)         Nein           
                    plz      varchar
                    (10)         Ja     NULL      
                    ort      varchar
                    (30)         Ja     NULL      
                    fachrichtung      varchar
                    (40)         Ja     NULL      
                    berechtigung      tinyint
                    (3)         Nein     0      
                    user      varchar
                    (50)         Nein           
                    password      varchar
                    (32)         Nein           
                    herr      varchar
                    (10)         Nein           
                    herrn      varchar
                    (10)         Nein           
                    anrede      varchar
                    (50)         Nein           
                    mitteilung      text         Ja     NULL 
                    Tabellendefinition am Webhost:
                    PHP-Code:
                    Feld    Typ    Attribute    Null    Standard    Extra
                    id     int
                    (11)         Nein          auto_increment 
                    titel     varchar
                    (15)         Ja     NULL      
                    vorname     varchar
                    (25)         Ja     NULL      
                    nachname     varchar
                    (25)         Nein           
                    strasse_1     varchar
                    (40)         Ja     NULL      
                    strasse_2     varchar
                    (40)         Ja     NULL      
                    plz     varchar
                    (10)         Ja     NULL      
                    ort     varchar
                    (30)         Ja     NULL      
                    lkz     char
                    (2)         Nein           
                    fachrichtung     varchar
                    (40)         Ja     NULL      
                    berechtigung     tinyint
                    (3)         Nein     0      
                    user     varchar
                    (50)         Nein           
                    password     varchar
                    (32)         Nein           
                    anrede     varchar
                    (50)         Nein           
                    herr     varchar
                    (10)         Nein           
                    herrn     varchar
                    (10)         Nein           
                    mitteilung     text         Ja     NULL 
                    Lokales Script
                    PHP-Code:
                    $titel $_POST['titel'];
                    $vorname $_POST['vorname'];
                    $nachname $_POST['nachname'];
                    $strasse_1 $_POST['strasse_1'];
                    $strasse_2 $_POST['strasse_2'];
                    $plz $_POST['plz'];
                    $ort $_POST['ort'];
                    $lkz $_POST['lkz'];
                    $fachrichtung $_POST['fachrichtung'];
                    $berechtigung $_POST['berechtigung'];
                    $anwender $_POST['user'];
                    $pass $_POST['password'];
                    $anrede $_POST['anrede'];
                    $herr $_POST['herr'];
                    $herrn $_POST['herrn'];

                    if (isset(
                    $_POST['speichern'])) {
                      
                    $result mysql_query("INSERT INTO arzt (titel, vorname, nachname, strasse_1, strasse_2, plz, ort, lkz, fachrichtung, berechtigung, user, password, anrede, herr, herrn)
                      VALUES ('
                    $titel', '$vorname', '$nachname', '$strasse_1', '$strasse_2', '$plz', '$ort', '$lkz', '$fachrichtung', $berechtigung, '$anwender', '$pass', '$anrede', '$herr', '$herrn')"); 
                    Script am Webhost
                    PHP-Code:
                    $titel $_POST['titel'];
                    $vorname $_POST['vorname'];
                    $nachname $_POST['nachname'];
                    $strasse_1 $_POST['strasse_1'];
                    $strasse_2 $_POST['strasse_2'];
                    $plz $_POST['plz'];
                    $ort $_POST['ort'];
                    $lkz $_POST['lkz'];
                    $fachrichtung $_POST['fachrichtung'];
                    $berechtigung $_POST['berechtigung'];
                    $anwender $_POST['user'];
                    $pass $_POST['password'];
                    $anrede $_POST['anrede'];
                    $herr $_POST['herr'];
                    $herrn $_POST['herrn'];

                    if (isset(
                    $_POST['speichern'])) {
                      
                    $result mysql_query("INSERT INTO arzt (titel, vorname, nachname, strasse_1, strasse_2, plz, ort, lkz, fachrichtung, berechtigung, user, password, anrede, herr, herrn)
                      VALUES ('
                    $titel', '$vorname', '$nachname', '$strasse_1', '$strasse_2', '$plz', '$ort', '$lkz', '$fachrichtung', $berechtigung, '$anwender', '$pass', '$anrede', '$herr', '$herrn')"); 
                    Danke fürs Anschauen.

                    Willi

                    Kommentar


                    • #11
                      prüf mal spaßeshalber, vor dem absenden der query, ob die werte null sind

                      ich denke nämlich nicht, dass textfelder null sein können.

                      NULL entspricht (afaik) !isset($_POST['varname'])
                      textfelder, in die nix eingegeben wurde, sind meines wissens nach aber einfach leer (Stichwort empty($_POST['varname'])) und nicht nicht gesetzt
                      Ich denke, also bin ich. - Einige sind trotzdem...

                      Kommentar


                      • #12
                        @mrhappiness

                        Das wars!
                        Es wird von Formularfeldern immer ein String geliefert.
                        Wenn dann vom SQL-String einen Integer-Wert erwartet wird, kann der Leerstring nicht umgewandelt werden.

                        Offensichtlich habe ich bei mir lokal und beim Webhost nicht exakt die gleichen Felder ausgelassen.
                        So habe ich unterschiedliche Ergebnisse erhalten.

                        Danke an alle.

                        bill

                        Kommentar


                        • #13
                          immer wieder gern
                          Ich denke, also bin ich. - Einige sind trotzdem...

                          Kommentar

                          Lädt...
                          X