PHP Script schreibt nur 0 in DB

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

  • PHP Script schreibt nur 0 in DB

    Hallo Freunde.

    Ich sitzte geade hier um Daten aus einem Mailformular in die
    Datenbank zu schreiben. Leider erhalte ich nur 0 Einträge in die
    Datenbank. Ich tippe mal auf eine falsche Form in der real_escape_string
    Verkettung, die ich so auch noch nicht vorher probiert habe, also mein
    erster Versuch sozusagen.

    Ist klasse, wenn mir jemand mal einen Tipp geben kann. Danke.

    PHP-Code:
    <?php
     
    error_reporting
    (E_ALL); #zeig alle Fehler 
    ini_set('display_errors''1'); 
     
    include_once 
    $_SERVER['DOCUMENT_ROOT'] . '/securimage/securimage.php';
    $securimage = new Securimage();
     
    if (
    $securimage->check($_POST['captcha_code']) == false) {
     
      die(
    'Der von Ihnen eingegebene Code ist nicht korrekt. Bitte gehen Sie zurück und 
      versuchen es nochmal.'
    );
     
    }else
    {
    $from "From: "$_POST['email'] ."";
    $to "oliver.ziebarth@t-online.de";
    $betreff "Email Kontaktformular";
    $name $_POST['name'];
     
    $strasse $_POST['strasse'];
     
    $plzort $_POST['plzort'];
     
    $email $_POST['email'];
    $telefon $_POST['telefon'];
     
    $fax $_POST['fax'];
     
    $anliegen $_POST['anliegen'];
    $message =  "Diese Nachricht wurde vom Kontaktformular erzeugt. \n"
                   
    ."Die Nachricht lautet: \n"
          
    ."Name: "$name ."\n"
          
    ."Strasse: "$strasse ." \n"
          
    ."PLZ / Ort: "$plzort ." \n"
          
    ."E-Mail: "$email ." \n"
          
    ."Telefon: "$telefon ." \n"
          
    ."Fax: "$fax ." \n"
          
    ."Anliegen/Frage: "$anliegen ." \n";
     
    if(!
    mail($to$betreff$message$from)) {
        echo 
    "Fehler beim Senden der Mail! \n";
        exit;
        } 
        else {
        echo 
    "Mail erfolgreich gesendet! \n";
        }
     
    require_once 
    'inc/login.inc.php';
     
    $verbindung mysqli_connect($server$benutzer$passwort);
     
    $id 'ID';
     
    $id $verbindung->real_escape_string($id);
     
    $name 'name';
        
    $name $verbindung->real_escape_string($name);
     
    $strasse 'strasse';
        
    $strasse $verbindung->real_escape_string($strasse);
     
    $plzort 'plzort';
        
    $plzort $verbindung->real_escape_string($plzort);
     
    $email 'email';
        
    $email $verbindung->real_escape_string($email);
     
    $telefon 'telefon';
        
    $telefon $verbindung->real_escape_string($telefon);
     
    $fax 'fax';
        
    $fax $verbindung->real_escape_string($fax);
     
    $anliegen 'anliegen';
        
    $anliegen $verbindung->real_escape_string($anliegen);
     
     if (
    $verbindung){
     
     
    mysqli_select_db ($verbindung$datenbank);
     
      if(
    mysqli_error($verbindung)){
       echo 
    'Fehler: Keine Verbindung zur Datenbank' mysqli_error($verbindung);
     
      }else{
       echo 
    print_r ($_POST);
     
       if (isset(
    $_POST['ID'])) {
     
    $sql "INSERT INTO kontakt
    (name,strasse,plzort,email,telefon,fax,anliegen) VALUES
    (
    $name='".mysqli_real_escape_string($verbindung,$_POST[$name])."', 
    $strasse='".mysqli_real_escape_string($verbindung,$_POST[$strasse])."', 
    $plzort='".mysqli_real_escape_string($verbindung,$_POST[$plzort])."', 
    $email='".mysqli_real_escape_string($verbindung,$_POST[$email])."', 
    $telefon='".mysqli_real_escape_string($verbindung,$_POST[$telefon])."', 
    $fax='".mysqli_real_escape_string($verbindung,$_POST[$fax])."', 
    $anliegen='".mysqli_real_escape_string($verbindung,$_POST[$anliegen])."' )" ;
     
    mysqli_query($verbindung$sql);
     
    echo 
    'Wir haben Ihre Frage / Anfrage erhalten ! Vielen Dank!';
     
    mysqli_close($verbindung);
          }
       }
      }
    }
     
    ?>
    Gruß
    Der Hauser
    Zuletzt geändert von Hauser; 21.01.2010, 20:52.

  • #2
    Hallo,

    erstens werden statische Feldnamen nicht real-escaped (Zeilen 50-65)! Zweitens ist das kein gültiges Insert-Statement und du solltest dir mal die MySQL-Doku dazu ansehen. Drittens hast du entweder alle Fehlermeldungen unterschlagen oder error_reporting regelwidrig eingestellt und solltest daher die Forenregeln beachten. Und viertens ist es keine Art, hier einfach den ganzen Quelltext reinzuwerfen, ohne jegliches Anzeichen für eigene Bemühungen und dann drauf warten, dass den jemand Korrektur liest. Du hättest es ja wenigstens auf den relevanten (letzten) Teil begrenzen können.

    Daher: *move* nach Projekthilfe.

    Gruß,

    Amica
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Kommentar


    • #3
      Also, sorry !

      Ich habe schon einiges versucht, um denn Fehler zu finden. Würde ich das hier alles reinschreiben, könnte es ebenso den Rahmen sprengen. Daher finde ich dieses als eine leichte Unterstellung, dass ich nichts getan hätte.

      Wenn die Regel besagt, dass Komplettlösungen nicht angeboten werden, darf ich als Intressent doch auch nicht erwarten, dass jemand mir hier ein komplett richtiges Ergebnis liefert, bzw. korrektur liest, das will ich doch auch gar nicht und ich sehe auch nicht, dass ich dieses Angefordert hätte.

      Der wesentliche Teil ! Gibt man zu wenig an, kann es unter umständen falsch sein.

      Fehlermeldung habe ich nicht erhalten, sonst hätte ich sie doch gepostet bzw. die Frage gar nicht gestellt, da ich dann ja Anhaltspunkte hätte.n natürlich interessiert an weiteren Methoden Fehler zu entlarven

      Danke aber für die Änsätze:

      erstens werden statische Feldnamen nicht real-escaped (Zeilen 50-65)! Zweitens ist das kein gültiges Insert-Statement und du solltest dir mal die MySQL-Doku dazu ansehen

      Kommentar


      • #4
        Zitat von Hauser Beitrag anzeigen
        Fehlermeldung habe ich nicht erhalten, sonst hätte ich sie doch gepostet
        Das war das "entweder", aber lies mal das "oder".

        Außerdem habe ich nicht unterstellt, dass du dich nicht selbst bemüht hättest, sondern nur bemängelt, dass du dafür keine Anzeichen hast erkennen lassen und das ist nunmal Fakt.
        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
        Super, danke!
        [/COLOR]

        Kommentar


        • #5
          Ich habe es jetzt folgendermaßen geändert.
          Nun schreibt er mir die Werte in die Datenbank.

          Hoffe das es jetzt so richtig gelöst ist.

          PHP-Code:
          require_once 'inc/login.inc.php';
           
          $verbindung mysqli_connect($server$benutzer$passwort);
           
          $name $_POST['name'];
          $strasse $_POST['strasse'];
          $plzort $_POST['plzort'];
          $email $_POST['email'];
          $telefon $_POST['telefon'];
          $fax $_POST['fax'];
          $anliegen $_POST['anliegen'];
           
              
          $name $verbindung->real_escape_string($name);
              
          $strasse $verbindung->real_escape_string($strasse);
              
          $plzort $verbindung->real_escape_string($plzort);
              
          $email $verbindung->real_escape_string($email);
              
          $telefon $verbindung->real_escape_string($telefon);
              
          $fax $verbindung->real_escape_string($fax);
              
          $anliegen $verbindung->real_escape_string($anliegen);
            
           if (
          $verbindung){
            
           
          mysqli_select_db ($verbindung$datenbank);
           
            if(
          mysqli_error($verbindung)){
             echo 
          'Fehler: Keine Verbindung zur Datenbank' mysqli_error($verbindung);
                  
            }else{
             echo 
          print_r ($_POST);
                
             if (isset(
          $_POST['ID'])) {

          $sql "INSERT INTO kontakt
          (name,strasse,plzort,email,telefon,fax,anliegen) VALUES
          ('
          $name','$strasse', '$plzort','$email','$telefon','$fax','$anliegen')";
          mysqli_query($verbindung$sql);
           
          echo 
          'Wir haben Ihre Frage / Anfrage erhalten ! Vielen Dank!'
          ...sondern nur bemängelt, dass du dafür keine Anzeichen
          hast erkennen lassen und das ist nunmal Fakt.
          ...und ich gelobe auf jeden Fall Besserung bei meinen Postings in Sachen
          Korrespondenz meiner Taten.

          Lieben Gruß
          Hauser.
          Zuletzt geändert von Hauser; 21.01.2010, 20:51.

          Kommentar


          • #6
            Eine Anmerkung noch. Du wechselst bei den MySQLi-Aufrufen immer zwischen objektorientierter und funktionsbasierter Notation. Es wäre besser, wenn du dich für eine Variante (mein Vorschlag: oo) entscheiden würdest.

            Und bitte brich den Code um.

            Gruß,

            Amica
            [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
            Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
            Super, danke!
            [/COLOR]

            Kommentar


            • #7
              Du wechselst bei den MySQLi-Aufrufen immer zwischen objektorientierter und funktionsbasierter Notation. Es wäre besser, wenn du dich für eine Variante (mein Vorschlag: oo) entscheiden würdest.

              Und bitte brich den Code um.
              Bist du bitte so nett und kannst mir objektorientierter und funktionsbasierter Notation erklären. Ich habe ehrlich gesagt schon bei Wiki nachgesehen, aber dazu nix gefunden. Was bedeutet das genau und was bewirkt es ?

              Code umbrechen = Hab ich noch nie gehört, sorry, soll ich Zeilenumbrüche verwende ? Hab ein 24 Monitor, kommt daher das Probelm.

              Danke für die Aufklärung!

              Kommentar


              • #8
                Objektorientierte Notation (empfohlen):
                PHP-Code:
                $verbindung->query("select * from foo"); 
                Funktionsbasierte Notation:
                PHP-Code:
                mysqli_query($verbindung"select * from foo"); 
                Du verwendest derzeit beides wild durcheinander.

                Zitat von Hauser Beitrag anzeigen
                Code umbrechen = Hab ich noch nie gehört, sorry, soll ich Zeilenumbrüche verwende ? Hab ein 24 Monitor, kommt daher das Probelm.
                Ja, bitte - und zwar so, dass keine Zeile länger als 100 Zeichen ist. Steht auch in den Forenregeln und das nützliche Tool in meiner Signatur sollte dir das auch schon gesagt haben.

                Dein 24"-Monitor ist kein Problem, solange du nicht davon ausgehst, dass alle so einen haben
                Zuletzt geändert von AmicaNoctis; 21.01.2010, 20:29.
                [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                Super, danke!
                [/COLOR]

                Kommentar


                • #9
                  Alles klar, danke Dir für die Infos

                  Gruß,

                  Hauser

                  Kommentar


                  • #10
                    Gern geschehen, aber ich sehe immer noch überlangen Code!
                    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                    Super, danke!
                    [/COLOR]

                    Kommentar


                    • #11
                      Besser so

                      Dafür hat er sich doch ein verdient, oder. LOL

                      Gruß,

                      Hauser

                      Kommentar


                      • #12
                        Danke und Prost. Bitte beim nächsten Mal gleich beachten.
                        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                        Super, danke!
                        [/COLOR]

                        Kommentar


                        • #13
                          Ja, ein Smiley mit einem Glas Wein wird hier ja leider nicht angeboten.

                          Aber Danke.

                          Gruß
                          Hauser

                          Kommentar

                          Lädt...
                          X