Ankündigung

Einklappen
Keine Ankündigung bisher.

kontakt formula wird nicht gespeichert

Einklappen

Neue Werbung 2019

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

  • kontakt formula wird nicht gespeichert

    Guten Tag,
    Bin neu hier im Forum.
    Habe ein kleines Problem und zwar werden die Daten nicht in der Datenbank gespeichert.
    Ich bin ein Anfänger in Php und mysql, deshalb bitte ich ein bisschen Rücksicht zu nehmen.

    PHP-Code:
    <?php
       
    /** Datenbank host **/
        
    $datenbank_host 'localhost';

        
    /** Datenbank user **/
        
    $datenbank_user 'root';

        
    /** Datenbank passwort **/
        
    $datenbank_passwort 'xxxxxx';

        
    /** Datenbank Name **/
        
    $datenbank_name 'Maintenance';

        
    /** Definieren von Variabelen **/
    //    echo $datenbank_name ;
        
    if (!isset($_POST['senden'])) $_POST['senden'] =
            
    '';
        if (!isset(
    $_POST['kaspersky'])) $_POST['kaspersky'] =
            
    '';
        if (!isset(
    $_POST['msconfig'])) $_POST['msconfig'] =
            
    '';
        if (!isset(
    $_POST['services'])) $_POST['services'] =
            
    '';
        if (!isset(
    $_POST['text'])) $_POST['text'] = '';

        
    /** Prüfen ob die Variabelen einen Wert gespeichert haben.
            Wenn dies der Fall ist, speicher wir den Eintrag in die Datenbank **/

        
    if ($_POST['senden'] != '' AND $_POST['kaspersky']
            != 
    '' AND $_POST['msconfig'] != '' AND $_POST['services'] != '' AND $_POST['text'] !='') {

        
    /** Aufbau der Datenbank Verbindung **/

        
    $link mysql_connect($datenbank_host,
            
    $datenbank_user$datenbank_passwort);

        
    /** Prüfen ob eine Verbindugskennung in der Variable $link besteht **/
    //    echo $link ;
        
    if (!$link) {
            die(
    'keine Verbindung möglich: ' .
            
    mysql_error());
            }

        
    /** Die Datenbank auswählen anhand der Verbindungskennung **/

        
    $db_selected =
            
    mysql_select_db($datenbank_name$link);

        
    /** Prüfen ob in der Variable $db_selected kein
            false steht, wenn ein false hinterlegt
            ist, wird automatisch mit der PHP
            Funktion die() das Script abgebrochen und
            entsprechend eine Fehlermeldung ausgegeben **/
    //    echo $db_selected ;
        
    if (!$db_selected) {
            die (
    'Kann '.$datenbank_name.' nicht
            benutzen : ' 
    mysql_error());
        }
             
    /** Nun wird in die variable $sql_insert die mysql Abfrage gespeicher **/

     
    $sql_insert "INSERT INTO `P01`
        (`kaspersky`,`msconfig`,`services`,`text`)
        VALUES('"
    .mysql_escape_string($_POST['kaspersky'])."',
        '"
    .mysql_escape_string($_POST['msconfig'])."',
          '"
    .mysql_escape_string($_POST['services'])."',
         '"
    .mysql_escape_string($_POST['text'])."')";

    //echo $sql_insert ;
        /** Liefert im Fehlerfall ein false zurück **/
    //      echo 'test';
           // $sql_insert = "INSERT INTO `P01`(`kaspersky`, `msconfig`, `services`, `text`) VALUES ([value-1],[value-2],[value-3],[value-4])";
        
    if (mysql_query($sql_insert$link) != false) {

        
    /** Falls kein Fehler vorhanden ist, liefern wir mit dem Befehl echo eine Meldung **/

        
    echo 'Der Eintrag wurde gespeichert!';
            
    $_POST['kaspersky'] = '';
            
    $_POST['msconfig'] = '';
            
    $_POST['services'] = '';
            
    $_POST['text'] = '';
        } else {

        
    /** Falls beim speicher ein Fehler auftaucht, kommt folgende Meldung **/

        
    echo 'Der Eintrag wurde nicht
                    gespeichert!'
    ;
            }
    //      echo 'test1';
        
    mysql_close($link);
        }
             echo 
    '<form action="'.htmlspecialchars($_SERVER['PHP_SELF']).'" method="post" >';
             echo 
    '<input type="checkbox" name="kaspersky" value="'.htmlspecialchars($_POST['kaspersky']).'"/> Kaspersky';
             echo 
    '<input type="checkbox" name="msconfig" value="'.htmlspecialchars($_POST['msconfig']).'"/> Msconfig';
             echo 
    '<input type="checkbox" name="services" value="'.htmlspecialchars($_POST['services']).'"/> Services<br />';
             echo 
    'Bemerkung: <input type="maint name="maint" value="'.htmlspecialchars($_POST['text']).'"/>';
             echo 
    '<input type="submit" name="senden" value="absenden"/>';
             echo 
    '</form>';
    ?>
    Passwort und Benutzername stimmen.
    Ich weis der Code ist nicht gerade ordentlich, weil ich viel getestet habe und anstatt es zu löschen, habe ich es einfach weg kommentiert.


    LG
    dzove

  • #2
    Zitat von dzove Beitrag anzeigen

    PHP-Code:
    <?php
        
    // sowas hab ich noch nie gesehen
        
    if (!isset($_POST['senden'])) $_POST['senden'] =
            
    '';
        if (!isset(
    $_POST['kaspersky'])) $_POST['kaspersky'] =
            
    '';
        if (!isset(
    $_POST['msconfig'])) $_POST['msconfig'] =
            
    '';
        if (!isset(
    $_POST['services'])) $_POST['services'] =
            
    '';
        if (!isset(
    $_POST['text'])) $_POST['text'] = '';


        
    /** besser:
        if(isset($_POST['senden']) && !empty($_POST['senden'] ..usw..)
       **/
        
    if ($_POST['senden'] != '' AND $_POST['kaspersky']
            != 
    '' AND $_POST['msconfig'] != '' AND $_POST['services'] != '' AND $_POST['text'] !='') {


        
    $link mysql_connect($datenbank_host,
            
    $datenbank_user$datenbank_passwort);

        
    // hier kann man auch hinter das mysql_connect ein or die("bla"); hängen
       // mysql_error() würde ich übrigens nicht ausgeben
        
    if (!$link) {
            die(
    'keine Verbindung möglich: ' .
            
    mysql_error());
            }
       
        
    // variable unnötig

        
    $db_selected =
            
    mysql_select_db($datenbank_name$link);


        if (!
    $db_selected) {
            die (
    'Kann '.$datenbank_name.' nicht
            benutzen : ' 
    mysql_error());
        }

    // also du willst hier die $_POST Teile speichern, die du aus der Form ziehst, die diese wiederum aus dem Nirgendwo zieht?
     
    $sql_insert "INSERT INTO `P01`
        (`kaspersky`,`msconfig`,`services`,`text`)
        VALUES('"
    .mysql_escape_string($_POST['kaspersky'])."',
        '"
    .mysql_escape_string($_POST['msconfig'])."',
          '"
    .mysql_escape_string($_POST['services'])."',
         '"
    .mysql_escape_string($_POST['text'])."')";

        
    // das != false braucht man nicht
        
    if (mysql_query($sql_insert$link) != false) {

      
        echo 
    'Der Eintrag wurde gespeichert!';
           
    // hä?
            
    $_POST['kaspersky'] = '';
            
    $_POST['msconfig'] = '';
            
    $_POST['services'] = '';
            
    $_POST['text'] = '';
        } else {


        echo 
    'Der Eintrag wurde nicht
                    gespeichert!'
    ;
            }

        
    mysql_close($link);
        }   
    // du ziehst hier als value die $_POST Dinger raus die du eigentlich verarbeiten willst.. und wo kommen die her?
             
    echo '<form action="'.htmlspecialchars($_SERVER['PHP_SELF']).'" method="post" >';
             echo 
    '<input type="checkbox" name="kaspersky" value="'.htmlspecialchars($_POST['kaspersky']).'"/> Kaspersky';
             echo 
    '<input type="checkbox" name="msconfig" value="'.htmlspecialchars($_POST['msconfig']).'"/> Msconfig';
             echo 
    '<input type="checkbox" name="services" value="'.htmlspecialchars($_POST['services']).'"/> Services<br />';
             echo 
    'Bemerkung: <input type="maint name="maint" value="'.htmlspecialchars($_POST['text']).'"/>';
             echo 
    '<input type="submit" name="senden" value="absenden"/>';
             echo 
    '</form>';
    ?>
    Ehrlich gesagt find ich das ganze Dingen ziemlich merkwürdig
    Die mysql_* Erweiterung ist veraltet!
    Besser: mysqli_* oder (noch besser) PDO

    Kommentar


    • #3
      Checkboxen senden den Wert nur, wenn die Checkbox angehakt war, sonst bekommst du gar keinen Wert.
      Solange du nicht alle Checkboxen ankreuzt, wirst du niemals über das if hinwegkommen, wo die POST Daten geprüft werden.

      Allgemein: Betreibe Debugging (POST Daten ausgeben lassen, mysql_error() benutzen usw.)
      Die mysql_* Extension ist veraltet, steig ASAP um auf mysqli oder PDO.
      Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

      Kommentar


      • #4
        Danke für eure Hilfe.
        @nameless97
        Ich werde jetzt mal deine vorschläge durchsetzten

        @Istegelitz
        Davon habe ich schonviel gelesen um mysqli zu nutzen. Werde es noch ândern. Das mit den Checkboxen ist jetzt ein wenig blöd :/ Kann mann dass ändern?

        Kommentar


        • #5
          Du kannst deine IF-Abfrage ändern. Du fragst ob eine Checkbox übertragen wurde, wenn nicht gibst du der entsprechenden Variable eine 0 als Wert. z.B.
          [COLOR=#A9A9A9]Relax, you're doing fine.[/COLOR]
          [URL="http://php.net/"]RTFM[/URL] | [URL="http://php-de.github.io/"]php.de Wissenssammlung[/URL] | [URL="http://use-the-index-luke.com/de"]Datenbankindizes[/URL] | [URL="https://www.php.de/forum/webentwicklung/datenbanken/111631-bild-aus-datenbank-auslesen?p=1209079#post1209079"]Dateien in der DB?[/URL]

          Kommentar


          • #6
            PHP-Code:
                // variable unnötig

                
            $db_selected =
                    
            mysql_select_db($datenbank_name$link); 
            Ansichtssache. Wird meistens so propagiert aber es kann übersichtlicher sein.

            Kommentar


            • #7
              Btw..wird $_SERVER['PHP_SELF'] eigentlich tatsächlich so verwendet? Hab ich da was verpasst?
              Die mysql_* Erweiterung ist veraltet!
              Besser: mysqli_* oder (noch besser) PDO

              Kommentar


              • #8
                Werde nochmal über alle eure Tipps rechechieren. Danke nochmals für eure Antworten.
                Kann leider heute nichts mehr dazu schreiben.

                @nameless97
                Da habe ich auch meine bedenken mit PHP_self :/

                Kommentar


                • #9
                  Diesen Tipp hatte ich neulich schon in einem anderen Thread gegeben:

                  Erzeuge ein hidden-Feld mit dem gleichen Namen wie die Checkbox und einem value von "0". Direkt dahinter wird die Checkbox regulär notiert.
                  Code:
                  <input type="hidden" name="name_der_checkbox" value="0"> 
                  <input type="checkbox" name="name_der_checkbox" value="1">
                  Beim Abschicken der Form würde bei nicht angehakter Checkbox der Wert des hidden-Feldes gesendet.
                  Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                  Kommentar


                  • #10
                    Das mit dem input hidden, bringt mich einen stück weiter, und zwarliegt der Fehler nicht bei der query.

                    Kommentar


                    • #11
                      Es funktioniert jetzt, der Fehler war, ein Syntax error in meiner insert und halt, dass mit dem hidden value 0.

                      Kommentar


                      • #12
                        Das mit dem input hidden, bringt mich einen stück weiter, und zwarliegt der Fehler nicht bei der query.
                        Wenn Dich das weiter bringt, dann ist Deine Eingabeschnittstelle fehlerhaft. Ein fehlender Wert darf nicht zu einem Programmfehler führen. Und ein fehlerhafter Zustand, darf keine Query mehr ausführen.

                        Der Tipp von lstegelitz ist zwar gut, aber nicht für diesen Anwendungsfall.
                        [COLOR="#F5F5FF"]--[/COLOR]
                        [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                        „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                        [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                        [COLOR="#F5F5FF"]
                        --[/COLOR]

                        Kommentar


                        • #13
                          Stimmt, dafür war der Hinweis aufs Debugging umso richtiger.

                          Kleiner Tipp: Du möchtest im Formular einen Wert einsetzen, der aus dem letzten POST Request stammt.. nur, irgendwo fängt die Wurst ja an, gell? Vor dem ersten Request gibt es keinen weiteren, ergo wird niemals ein gültiges Value im HTML auftauchen
                          Trag mal für die Checkbox-Values einen festen Wert ein.
                          Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                          Kommentar

                          Lädt...
                          X