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

  • dzove
    hat ein Thema erstellt kontakt formula wird nicht gespeichert.

    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

  • lstegelitz
    antwortet
    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.

    Einen Kommentar schreiben:


  • nikosch
    antwortet
    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.

    Einen Kommentar schreiben:


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

    Einen Kommentar schreiben:


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

    Einen Kommentar schreiben:


  • lstegelitz
    antwortet
    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.

    Einen Kommentar schreiben:


  • dzove
    antwortet
    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 :/

    Einen Kommentar schreiben:


  • nameless97
    antwortet
    Btw..wird $_SERVER['PHP_SELF'] eigentlich tatsächlich so verwendet? Hab ich da was verpasst?

    Einen Kommentar schreiben:


  • monolith
    antwortet
    PHP-Code:
        // variable unnötig

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

    Einen Kommentar schreiben:


  • VPh
    antwortet
    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.

    Einen Kommentar schreiben:


  • dzove
    antwortet
    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?

    Einen Kommentar schreiben:


  • lstegelitz
    antwortet
    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.

    Einen Kommentar schreiben:


  • nameless97
    antwortet
    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

    Einen Kommentar schreiben:

Lädt...
X