Ankündigung

Einklappen
Keine Ankündigung bisher.

Warenkorb / Fehlersuche

Einklappen

Neue Werbung 2019

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

  • Warenkorb / Fehlersuche

    Hey Leute,

    ich bin ein wenig verzweifelt...seit einigen Stunden funktioniert mein Warenkorb nicht mehr und ich finde meinen Fehler nicht. Ich hatte ein paar Veränderungen in Datenbank und Script vorgenommen...ich kann mich nicht mehr konzentrieren. Hat wer nen Adlerauge? Danke euch.

    Datenbank Struktur:

    id / int(11)
    product_code / int(11)
    product_name / varchar(60)
    product_description / tinytext
    product_price / decimal(10,2)
    product_kind / tinytext
    product_seller / tinytext


    Produktabfrage

    PHP-Code:
      <?php
            $current_url 
    base64_encode("http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
            
    $results $mysqli->query("SELECT * FROM products WHERE product_kind LIKE 'Vorspeise' ORDER BY id ASC");
             if (
    $results) {
                  
                  while(
    $obj $results->fetch_object())
                  {
          
          ;
                      echo 
    '<font size="2" color="black">';
                      echo 
    '<form method="post" action="cart_update.php">';
                      echo 
    '<table width="500" border="0"><tr><td align="left" width="300">';
                      echo 
    '<b>'.$obj->product_name.'</b>';
                      echo 
    '<br>';
                      echo 
    '<font size="1">'.$obj->product_description.'</font>';
                      echo 
    '</td><td align="center" width="150">';
                      echo 
    ''.$currency.$obj->product_price.'';
                      echo 
    '</td><td align="right" width="50">';
                      echo 
    '<button class="add_to_cart"><img src="../images/add.png" width="8"></button>';
                      echo 
    '<input type="hidden" name="code" value="'.$obj->product_code.'" />';
                      echo 
    '<input type="hidden" name="type" value="add" />';
                      echo 
    '<input type="hidden" name="return_url" value="'.$current_url.'" />';
                      echo 
    '</td></tr></table>';
                      echo 
    '</form>';
                      echo 
    '</font>';
          
          
                  }
          
          }
          
    ?>

    Warenkorb

    PHP-Code:
    <?php
           
    if(isset($_SESSION["products"]))
           {
               
    $total 0;
           
               foreach (
    $_SESSION["products"] as $cart_itm)
               {
                   echo 
    '';
                   echo 
    '<a href="cart_update.php?removep='.$cart_itm["code"].'&return_url='.$current_url.'"><img src="../images/delete.png" width="8"></a>';
                   echo 
    '&nbsp;&nbsp;&nbsp;';
                   echo 
    '<font size="2" color="#e9594e"><font-family="Cambria, Georgia, serif">'.$cart_itm["name"].'</font><br>';
                   echo 
    '&nbsp;( '.$cart_itm["qty"].')&nbsp;';
                   echo 
    ''.$currency.$cart_itm["product_price"].'<br>';
                   
    $subtotal = ($cart_itm["product_price"]*$cart_itm["qty"]);
                   
    $total = ($total $subtotal);
               }
               echo 
    '<br><br>Summe: '.$currency.$total.'';
               echo 
    '<br><a href="#order_bestellen"><font color="#000000">Jetzt Bestellen!</font></a><br>';
               echo 
    '<a href="cart_update.php?emptycart=1&return_url='.$current_url.'">';
               echo 
    '<br><font size="2" color="#e9594e"><font-family="Cambria, Georgia, serif">Warenkorb löschen!</font></a>';
               echo 
    '';
           }else{
               echo 
    '<br><font size="2" color="#e9594e"><font-family="Cambria, Georgia, serif">Keine Gerichte ausgewählt</font>';
           }
            
    ?>

    Warenkorb Funktion Hinzufügen

    PHP-Code:
    if(isset($_POST["type"]) && $_POST["type"]=='add')
    {
        
    $product_code   filter_var($_POST["product_code"], FILTER_SANITIZE_STRING);
        
    $product_qty    filter_var($_POST["product_qty"], FILTER_SANITIZE_NUMBER_INT); 
        
    $return_url     base64_decode($_POST["return_url"]);
        


        
    $results $mysqli->query("SELECT product_name,product_price FROM products WHERE product_code='$product_code' LIMIT 1");
        
    $obj $results->fetch_object();
        
        if (
    $results) { 
            

            
    $new_product = array(array('name'=>$obj->product_name'code'=>$product_code'qty'=>$product_qty'price'=>$obj->product_price));
            
            if(isset(
    $_SESSION["products"])) 
            {
                
    $found false
                
                foreach (
    $_SESSION["products"] as $cart_itm
                {
                    if(
    $cart_itm["code"] == $product_code){ 

                        
    $product[] = array('name'=>$cart_itm["name"], 'code'=>$cart_itm["code"], 'qty'=>$product_qty'price'=>$cart_itm["price"]);
                        
    $found true;
                    }else{
                        
                        
    $product[] = array('name'=>$cart_itm["name"], 'code'=>$cart_itm["code"], 'qty'=>$cart_itm["qty"], 'price'=>$cart_itm["price"]);
                    }
                }
                
                if(
    $found == false
                {

                    
    $_SESSION["products"] = array_merge($product$new_product);
                }else{

                    
    $_SESSION["products"] = $product;
                }
                
            }else{

                
    $_SESSION["products"] = $new_product;
            }
            
        }
        

        
    header('Location:'.$return_url);

    Ich bin für jeden Tipp unglaublich dankbar.

    Merci,

  • #2
    Warenkorb / Fehlersuche

    Zitat von tobtob
    seit einigen Stunden funktioniert mein Warenkorb nicht mehr und ich finde meinen Fehler nicht.
    Ohne genauere Fehlerbeschreibung wird dir wohl wenig zu helfen sein. Bekommst du eine Fehlermeldung? Error-Reporting hochgedreht? Was erwartest du was passieren soll und was passiert tatsächlich?
    Delirius

    PHP - Grundlagen / PDO - Tutorial / PDO - Dokumentation

    Kommentar


    • #3
      Fehlerbeschreibung

      Ach sorry, Ganz vergessen.

      Also mein Warenkorb zeigt stets nur ein Element an aber auch ohne Beschreibung und ohne den Preis. Die Summe ist ergo auch 0. Egal wie oft ich andere Artikel hinzufüge, es passiert nichts mehr.

      Löschen des Warenkorbs und Zerstören der Session funktioniert problemlos...

      Kommentar


      • #4
        Warenkorb / Fehlersuche

        Zitat von tobtob
        Egal wie oft ich andere Artikel hinzufüge, es passiert nichts mehr.
        Hast du dir die Session mal angesehen? Steht da überhaupt was drin?
        PHP-Code:
        var_dump$_SESSION ); 
        Delirius

        PHP - Grundlagen / PDO - Tutorial / PDO - Dokumentation

        Kommentar


        • #5
          array(1) { ["products"]=> array(1) { [0]=> array(4) { ["name"]=> NULL ["code"]=> string(0) "" ["qty"]=> string(0) "" ["price"]=> NULL } } }



          Keine Veränderungen wenn einen Aritkel hinzufüge...

          Also da die Session leer ist funktioniert das Hinzufügen eines Artikels scheinbar nicht...aber in der ADD Funktion finde ich keinen Fehler...

          Kommentar


          • #6
            Warenkorb / Fehlersuche

            Na dann geh mal auf die Suche, warum die Daten nicht in die Session geschrieben werden. Ohne Daten in der Session kann dein Code auch nichts anzeigen.

            Wenn du heute im Script Dinge abgeändert hast, wirst du wohl auch an Stellen editiert haben, wo die Session befüllt wird. Schau dir das eben nochmal an.

            Und schau dir dein SQL-Statement im Code an.
            PHP-Code:
            $results $mysqli->query("SELECT
                                                  product_name,
                                                  product_price
                                      FROM
                                                  products
                                      WHERE
                                                  product_code = '
            $product_code'
                                      LIMIT 1"
            ); 
            Lass´ dir das mal ausgeben und setz die Abfrage direkt in der Datenbank ab. Kommen hier Ergebnisse? Und warum eigentlich "LIMIT 1"? Ist dein product_code nicht eindeutig?
            Delirius

            PHP - Grundlagen / PDO - Tutorial / PDO - Dokumentation

            Kommentar


            • #7
              Die Ausgabe funktioniert problemlos. LIMIT1 ist mit eine Sache, die Anlass waren, das Script zu ändern, jetzt sind alle product_codes unique. Hatte ich versehentlich dringelassen; nun aber rausgenommen; hat nichts geändert.

              Kommentar


              • #8
                Okay. Habe fast alle meine Fehler gefunden. Der Name des "Hidden Inputs" war falsch, somit wurde nichts übergeben. Bei der Erstellung eines neuen Arrays war der Name der Preis-Spalte der Datenbank falsch. Nun funktioniert das Hinzufügen, allerdings das Zählen der "Quantity" nicht...irgendwelche Ideen diesbezüglich?



                Nachtrag: Auch dort habe ich den Fehler gefunden. Es wurde eine nicht vorhandene Variable gezählt.

                Die Quantity erhöhen funktioniert aber noch nicht...

                Kommentar


                • #9
                  Lass dir mal die beiden Werte ausgeben:
                  PHP-Code:
                  $cart_itm["product_price"]*$cart_itm["qty"
                  [URL="http://php.net/manual/en/migration55.deprecated.php"]mysql ist veraltet[/URL] [URL="http://php-de.github.io/jumpto/mail-class/"]Mails senden: Ohne Probleme und ohne mail()[/URL]
                  [PHP]echo 'PS: <b>Meine Antwort ist keine Lösung, sondern nur eine Hilfe zur Lösung.</b>';[/PHP]

                  Kommentar


                  • #10
                    Ja, da habe ich nun einen weiteren Fehler entdeckt. Die QTY war vorab immer 0 (ungleich NULL). Ich habe sie jetzt auf 1 gesetzt ($product_qty = 1 und so funktioniert erstmal alles.

                    Die Funktion zum mehrmaligen Hinzufügen eines Artikels ist mir auch irgendwie abhanden gekommen.
                    Danke

                    Kommentar

                    Lädt...
                    X