Ankündigung

Einklappen
Keine Ankündigung bisher.

Valider Code funktioniert nicht.

Einklappen

Neue Werbung 2019

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

  • Valider Code funktioniert nicht.

    Trotz prüfen auf Validität funktioniert folgender Code nicht:

    PHP-Code:
    session_start();
    include(
    "database.php");
    if(!isset(
    $_SESSION['id'])) {
    header("Location: index.php");}

    $error "";


    if(isset(
    $_POST['submit'])){
        
    $kdnr $_SESSION['id'];
        
    $angebot_id $_GET['Auktionsnummer'];
        
    $preiseingabe $_POST['preiseingabe'];

        
    $statement $pdo->prepare("SELECT kdnr FROM gebote WHERE angebot_id = '{$angebot_id}'");
     
    $result $statement->execute(array('kdnr' => $kdnr));
     
    $user $statement->fetch();


     if(
    $user !== false){

      
    $sql "UPDATE gebote 
            SET preiseingabe = '
    {$preiseingabe}
            WHERE kdnr = '
    {$kdnr}' AND angebot_id = '{$angebot_id}'";

    $stmt $pdo->prepare($sql);

        
    $stmt->execute();

         
    header("Location: uebersicht.php");

     }else{
         
    $insert $pdo->prepare("INSERT INTO gebote (id, kdnr, angebot_id, preiseingabe) VALUES ('', :kdnr, :angebot_id, :preiseingabe)");

     
    $resultat $insert->execute(array('kdnr' => $kdnr'angebot_id' => $angebot_id'preiseingabe' => $preiseingabe));

         if(
    $result){

    header("Location: uebersicht.php");
    }}} 
    Genauer: Wenn kein Eintrag in der Tabelle ist, wird der erste Eintrag problemlos eingetragen. Auch ein update funktioniert problemlos.
    Sobald ein anderer User einen Eintrag machen will, funktioniert das nicht.

    Wieso?

  • #2
    Die Variablenbenennung ist furchtbar. $result, $resultat, lädt geradezu ein, dass man sich verschaut oder vertippt. Verwende auch keine kryptischen Abkürzungen wie $kdnr und optimalerweise solltest du nur die englische Sprache verwenden.

    Desweiteren baust du dir schöne Sicherheitslücken, weil du Werte einfach so in SQL-Code einbaust.

    Und "funktionert nicht" ist keine Fehlerbeschreibung. Wo an welcher Stelle weicht der Code vom gewünschten Verhalten ab? Spring am besten mal mit einem Debugger durch.

    Und bitte formatiere deinen Code lesbar. Das ist ja wie Kraut und Rüben alles durcheinander. Unübersichtlicher Code ist ein Brandbeschleuniger für Flüchtigkeitsfehler.

    Kommentar


    • #3
      Und "funktionert nicht" ist keine Fehlerbeschreibung. Wo an welcher Stelle weicht der Code vom gewünschten Verhalten ab? Spring am besten mal mit einem Debugger durch.
      Wenn ich den update Code auskommentiere, funktioniert der Insert Befehl. Wenn ich den Code so nutze wie im ersten Beitrag gepostet, lässt er keinen weiteren User einen Eintrag in die Tabelle machen. (?)

      Ein Update funktioniert allerdings!

      Kommentar


      • #4
        Zitat von king-ich Beitrag anzeigen
        Wenn ich den update Code auskommentiere, funktioniert der Insert Befehl. Wenn ich den Code so nutze wie im ersten Beitrag gepostet, lässt er keinen weiteren User einen Eintrag in die Tabelle machen. (?)

        Ein Update funktioniert allerdings!
        Du beschreibst das Problem so, wie es der User sieht. Solltest es aber so beschreiben, wie es ein Programmierer sieht. Wenn eine Abfrage fehlschlägt, gibt es eine Fehlermeldung. Wenn eine Abfrage keinen Datensatz verändert, lässt sich das ebenfalls ermitteln.

        Lass dir auch an jeder verdächtigen Stelle die Variableninhalte ausgeben (entweder mit einem Debugger oder als Notlösung per var_dump()). Auch sollten die Rückgabewerte der aufgerufenen Funktionen beachtet werden.

        Bei PDO empfiehlt es sich übrigens generell das Werfen von Exceptions einzuschalten:
        PHP-Code:
        $db = new PDO('mysql:host=localhost;dbname=mydb;charset=utf8''username''password', [
            
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
        ]); 

        Kommentar


        • #5
          PHP-Code:
          $db = new PDO('mysql:host=localhost;dbname=mydb;charset=utf8''username''password', [
              
          PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
          ]); 
          Hab ich.

          (entweder mit einem Debugger oder als Notlösung per var_dump())
          Wo finde ich einen Debugger, und wie funktioniert er?

          Ich arbeite mit Brackets, und in der Menüleiste steht ein Debug menü.

          wenn ich drauf klicke steht dort Node Debugger aktivieren. funktioniert allerdings nicht. (?)

          Kommentar


          • #6
            Brackets unterstützt doch gar nicht PHP?

            Du solltest einen PHP-Editor verwenden.

            Kommentar


            • #7
              Brackets unterstützt doch gar nicht PHP?
              Doch.

              Kommentar


              • #8
                Ich bin sehr zufrieden.

                Kommentar


                • #9
                  Hey,

                  schau mal den Code hier an :
                  PHP-Code:

                      $statement 
                  $pdo->prepare("SELECT kdnr FROM gebote WHERE angebot_id = '{$angebot_id}'");
                   
                  $result $statement->execute(array('kdnr' => $kdnr));
                   
                  $user $statement->fetch(); 
                  Was fällt dir da denn auf?

                  und beim insert hast du die : vor den platzhaltern vergessen
                  Wenn jemand Hilfe bei einem Projekt braucht bin ich bereit kostenfrei mitzuhelfen, denn ich möchte mehr Erfahrung sammeln.

                  Kommentar


                  • #10
                    ???

                    Kommentar


                    • #11
                      Ich weiß, wer suchet der findet. Aber...

                      Kommentar


                      • #12
                        Zitat von king-ich Beitrag anzeigen
                        Doch.
                        Na wenn du dich so gut damit auskennst, warum fragst du dann?

                        Für Netbeans, PhpStorm, usw. usf. würdest du hier sofort Experten finden, die dir beim Einrichten eines Debuggers helfen könnten. Aber Brackets verwendet hier wohl kein Schwein dafür.

                        Kommentar


                        • #13
                          Ich habe gerade geguckt welche Sprachen Brackets unterstützt: Alle gängigen Programmiersprachen von C bis YAML...

                          Kommentar


                          • #14
                            Zitat von king-ich Beitrag anzeigen
                            Ich habe gerade geguckt welche Sprachen Brackets unterstützt: Alle gängigen Programmiersprachen von C bis YAML...
                            Schau lieber nach, wie man den PHP-Debugger einbindet.

                            Kommentar


                            • #15
                              Was ist falsch mit dem Code:

                              PHP-Code:
                              $statement $pdo->prepare("SELECT kdnr FROM gebote WHERE angebot_id = '{$angebot_id}'");
                               
                              $result $statement->execute(array('kdnr' => $kdnr));
                               
                              $user $statement->fetch(); 
                              ?

                              Kommentar

                              Lädt...
                              X