Ankündigung

Einklappen
Keine Ankündigung bisher.

"Add to basket" funktioniert nicht

Einklappen

Neue Werbung 2019

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

  • "Add to basket" funktioniert nicht

    Hallo

    Neulich habe ich mir ein sehr interessantes Buch gekauft, wegen der zahlreichen Beispielen.

    (Practical PHP and MySql - Building Eight Dynamic Web Applications - Jono Bacon)

    Eins davon geht um ein Warenkorb, das eigentlich nicht so schlecht aussieht, wenn es eigentlich (richtig) funktionieren würde

    Gebrauch werden u.a, 2 PHP-Skripts:

    "functions.php" und "addtobasket.php"

    Der Punkt ist, wenn ich eine Menge auf der Seite "addtobasket" eingebe, bekomme ich immer den Hinweis: "Sie haben bisher noch keine Artikel zu Ihrem Warenkorb hinzugefügt! " (auf Englisch: "You have not added anything to your shopping cart yet.)

    Weiß jemand woran das Problem hier liegt?




    Die Skripts sehen folgendermass aus:

    functions.php
    PHP-Code:
     
    <?php
     
    function pf_validate_number($value$function$redirect) {
    if(isset(
    $value) == TRUE) {
    if(
    is_numeric($value) == FALSE) {
    $error 1;
    }
     
    if(
    $error == 1) {
    header("Location: " $redirect);
    }
    else {
    $final $value;
    }
    }
    else {
    if(
    $function == 'redirect') {
    header("Location: " $redirect);
    }
     
    if(
    $function == "value") {
    $final 0;
    }
    }
     
    return 
    $final;
    }
     
    function 
    showcart()
    {
     
    if(
    $_SESSION['SESS_ORDERNUM'])
    {
    if(
    $_SESSION['SESS_LOGGEDIN'])
    {
    $custsql "SELECT id, status from orders WHERE customer_id = " $_SESSION['SESS_USERID'] . " AND status < 2;"
    $custres mysql_query($custsql);
    $custrow mysql_fetch_assoc($custres);
     
    $itemssql "SELECT products.*, orderitems.*, orderitems.id AS itemid FROM products, orderitems WHERE orderitems.product_id = products.id AND order_id = " $custrow['id'];
    $itemsres mysql_query($itemssql);
    $itemnumrows mysql_num_rows($itemsres);
    }
    else
    {
    $custsql "SELECT id, status from orders WHERE session = '" session_id() . "' AND status < 2;"
    $custres mysql_query($custsql);
    $custrow mysql_fetch_assoc($custres);
     
    $itemssql "SELECT products.*, orderitems.*, orderitems.id AS itemid FROM products, orderitems WHERE orderitems.product_id = products.id AND order_id = " $custrow['id'];
    $itemsres mysql_query($itemssql);
    $itemnumrows mysql_num_rows($itemsres);

    }
    else
    {
    $itemnumrows 0;

     
    if(
    $itemnumrows == 0)
    {
    echo 
    "You have not added anything to your shopping cart yet.";
     
    }
    else

    echo 
    "<table cellpadding='10'>";
    echo 
    "<tr>";
    echo 
    "<td></td>";
    echo 
    "<td><strong>Item</strong></td>";
    echo 
    "<td><strong>Quantity</strong></td>";
    echo 
    "<td><strong>Unit Price</strong></td>";
    echo 
    "<td><strong>Total Price</strong></td>";
    echo 
    "<td></td>";
    echo 
    "</tr>";
     
    while(
    $itemsrow mysql_fetch_assoc($itemsres))

    $quantitytotal $itemsrow['price'] * $itemsrow['quantity'];
    echo 
    "<tr>";
     
    if(empty(
    $itemsrow['image'])) {
    echo 
    "<td><img src='./productimages/dummy.jpg' width='50' alt='" $itemsrow['name'] . "'></td>";
    }
    else {
    echo 
    "<td><img src='./productimages/" $itemsrow['image'] . "' width='50' alt='" $itemsrow['name'] . "'></td>";
    }
     
    // echo "<td><img src='./productimages/" . $itemsrow['image'] . ".jpg' alt='" . $itemsrow['name'] . "' width='50'></td>";
    echo "<td>" $itemsrow['name'] . "</td>";
    echo 
    "<td>" $itemsrow['quantity'] . "</td>";
    echo 
    "<td><strong>&pound;" sprintf('%.2f'$itemsrow['price']) . "</strong></td>";
    echo 
    "<td><strong>&pound;" sprintf('%.2f'$quantitytotal) . "</strong></td>";
    echo 
    "<td>[<a href='" $config_basedir "delete.php?id=" $itemsrow['itemid'] . "'>X</a>]</td>";
    echo 
    "</tr>";
     
    $total $total $quantitytotal;
    $totalsql "UPDATE orders SET total = " $total " WHERE id = " $_SESSION['SESS_ORDERNUM']; 
    $totalres mysql_query($totalsql);

     
    echo 
    "<tr>";
    echo 
    "<td></td>";
    echo 
    "<td></td>";
    echo 
    "<td></td>";
    echo 
    "<td>TOTAL</td>";
    echo 
    "<td><strong>&pound;" sprintf('%.2f'$total) . "</strong></td>";
    echo 
    "<td></td>";
    echo 
    "</tr>";
     
    echo 
    "</table>";
     
    }
    }
    und "addtobasket.php":

    PHP-Code:
    <?php
    session_start
    ();
     
    require(
    "db.php");
    require(
    "functions.php");
     
    $validid pf_validate_number($_GET['id'], 
    "redirect"$config_basedir);
     
    $prodsql "SELECT * FROM products WHERE id = " $_GET['id'] . ";";
    $prodres mysql_query($prodsql);
    $numrows mysql_num_rows($prodres); 
    $prodrow mysql_fetch_assoc($prodres);
     
    if(
    $numrows == 0)
    {
    header("Location: " $config_basedir);
    }
    else
    {
    if(
    $_POST['submit'])
    {
    if(
    $_SESSION['SESS_ORDERNUM'])
    {
    $itemsql "INSERT INTO orderitems(order_id, 
    product_id, quantity) VALUES("
    $_SESSION['SESS_ORDERNUM'] . ", " 
    $_GET['id'] . ", "
    $_POST['amountBox'] . ")";
    mysql_query($itemsql);
    }
    else
    {
    if(
    $_SESSION['SESS_LOGGEDIN'])
    {
    $sql "INSERT INTO orders(customer_id, 
    registered, date) VALUES("
    $_SESSION['SESS_USERID'] . ", 1, NOW())";
    mysql_query($sql);
    session_register("SESS_ORDERNUM");
    $_SESSION['SESS_ORDERNUM'] = mysql_insert_id();
     
    $itemsql "INSERT INTO 
    orderitems(order_id, product_id, quantity) VALUES("
    $_SESSION['SESS_ORDERNUM'] . ", " $_GET['id'] . ", "
    $_POST['amountBox'] . ")";
     
    mysql_query($itemsql);
    }
    else
    {
    $sql "INSERT INTO orders(registered, 
    date, session) VALUES("
     
    "0, NOW(), '" session_id() . "')";
    mysql_query($sql);
    session_register("SESS_ORDERNUM");
    $_SESSION['SESS_ORDERNUM'] = mysql_insert_id();
     
    $itemsql "INSERT INTO 
    orderitems(order_id, product_id, quantity) VALUES("
    $_SESSION['SESS_ORDERNUM'] . ", " $_GET['id'] . ", "
    $_POST['amountBox'] . ")";
     
    mysql_query($itemsql);

    }
     
     
    $totalprice $prodrow['price'] * $_POST['amountBox'] ;
     
    $updsql "UPDATE orders SET total = total + " 
    $totalprice " WHERE id = " 
    $_SESSION['SESS_ORDERNUM'] . ";";
    mysql_query($updres);
     
    header("Location: " $config_basedir "showcart.php");
    }
    else
    {
    require(
    "header.php");
     
    echo 
    "<form action='addtobasket.php?id=" 
    $_GET['id'] . "' method='POST'>";
    echo 
    "<table cellpadding='10'>";
     
     
    echo 
    "<tr>";
    if(empty(
    $prodrow['image'])) {
    echo 
    "<td><img 
    src='./productimages/dummy.jpg' width='50' alt='" 
    $prodrow['name'] . "'></td>";
    }
    else {
    echo 
    "<td>
    <img src='./productimages/" 
    $prodrow['image'
    "' width='50' alt='" $prodrow['name'
    "'></td>";
    }
     
    echo 
    "<td>" $prodrow['name'] . "</td>";
    echo 
    "<td>Select Quantity <select name='amountBox'>";
     
    for(
    $i=1;$i<=100;$i++)
    {
    echo 
    "<option>" $i "</option>";
    }
     
    echo 
    "</select></td>";
    echo 
    "<td><strong>&pound;" 
    sprintf('%.2f'$prodrow['price']) 
    "</strong></td>";
    echo 
    "<td><input type='submit' 
    name='submit' value='Add to basket'></td>"
    ;
    echo 
    "</tr>";
     
    echo 
    "</table>";
    echo 
    "</form>";
    }
    }
     
    require(
    "footer.php");
    ?>
    ?>


  • #2
    Könntest du vielleicht die BBCodes für PHP-Code-Hightlighting ([php ] ohne den Leerschlag) verwenden, damit der Code einfacher lesbar ist und am besten auch gleich noch alle Funktionen, die nichts mit dem addtobasket zu tun haben, einfach mal weglassen?

    So wie ich dich verstanden habe, schreibst du irgendwo in der addtobasket.php hardcoded einen Wert rein, wieviele Elemente im Warenkorb sind. Wenn dies der Fall ist, dann kann das auch nicht funktionieren, da die Funktion ja überprüft, ob irgendwelche Produkte in der Warenkorbtabelle der Datenbank vorhanden sind, was in diesem Fall nicht der Fall wäre => die genannte Fehlermeldung.

    Kommentar


    • #3
      Fehlermeldung

      ...Am bestens würde ich dir die ganze FOLDER mit Scripts per Email schicken, damit Du dir alles besser analisieren kannst...

      Oder sind URL-Links hier erlaubt? (Dann schicke ich sie Dir über meine Webseite)

      Grüße!

      Kommentar


      • #4
        Hier ist die Adresse:

        http://metatranslations.com/shoppingkarte.zip

        Ich hoffe, dass meine ZIP-Software funktioniert wieder

        Kommentar

        Lädt...
        X