1

phpwebcommerceのショッピングカートチュートリアルのコードを使用し、ユーザーが数量を挿入するためのテキストフィールドを追加しようとしています。1つの商品には選択肢の数が異なるため、whileステートメントを使用してサブアイテムをクエリし、各アイテムの横にテキストフィールドと追加ボタンを配置します。ただし、最初のアイテムの数量のみが必要であり、残りのアイテムは必要ありません。最初のアイテムの数量を挿入し、他のアイテムの[追加]をクリックしても、最初のアイテムはカートに保存されますが、保存されるべきではありません...行き詰まっています...誰かが私を助けてくれますか?

<?php
function displayprodDetail($pdId)
{
    $query = mysql_query("SELECT * FROM product_image WHERE p_id ='$pdId'");
    WHILE($datarows = mysql_fetch_array($query))
    {
        $p_num = $datarows['p_number'];
        echo '<h1><span>'.$p_num.' -- $'.$datarows['price'].'</span></h1>';
        echo '<div id="prodPic"><a href ="'.$datarows['image']. '" rel="ibox"    title="'.$p_num.'"><img src ="'.$datarows['image'].'"/></a><br /></div>';
        echo '<div id="items">';
        $sql = mysql_query("SELECT * FROM items WHERE item_number LIKE '$p_num/%' ORDER BY item_number ASC");
        $numProduct = dbNumRows($sql);
        if($numProduct > 1)
        {
            echo '<table border="0" cellspacing="0">';
            WHILE($data = mysql_fetch_array($sql))
            {
                $itemId = $data['item_id'];
                $p_num = $data['item_number']; 
                echo '<tr>';
                echo '<td><INPUT TYPE="HIDDEN" NAME="'.$itemId.'" VALUE="'.$itemId.'">'.$p_num.'</td>';
                echo '<td>&nbsp;&nbsp;Qty: <input type="number" name="qty" id="qty" style="width:30px"></td>';
                $cart_url = "cart.php?action=add&i=$itemId&qty=";
                ?>
                <td><input type="Submit" name="Submit" value="Add" onClick="window.location.href='<?php echo $cart_url; ?>' +document.getElementById('qty').value;" ></td>
                <?php
                echo '</tr>';
            }
            echo '</table>';
        }
        else
        {
            echo 'Items are currently not available.<br>Contact us for more detail.';
        }

        echo '</div>';
    }
}
?>

カートに追加機能は次のとおりです。

function addToCart()
{
    // make sure the product id exist
    if (isset($_GET['i']) && (int)$_GET['i'] > 0) 
    {
        $itemId = (int)$_GET['i'];
    } 
    else 
    {
        header('Location: home.php');
    }
    if (isset($_GET['qty']) && (int)$_GET['qty'] > 0) 
    {
        $qty = (int)$_GET['qty'];
    } 
    // current session id
    $sid = session_id();

    // check if the product is already
    // in cart table for this session
    $sql = mysql_query("SELECT item_id FROM cart_table WHERE item_id = $itemId AND ct_session_id = '$sid'");

    if (dbNumRows($sql) == 0) 
    {
        // put the product in cart table
        $sql = mysql_query("INSERT INTO cart_table (item_id, ct_qty, ct_session_id, ct_date) VALUES ($itemId, $qty, '$sid', now())");
    } 
    else 
    {
        // update product quantity in cart table
        $sql = mysql_query("UPDATE cart_table SET ct_qty = ct_qty + $qty WHERE ct_session_id = '$sid' AND item_id = $itemId");                  
    }   

    // an extra job for us here is to remove abandoned carts.
    // right now the best option is to call this function here
    deleteAbandonedCart();

    header('Location: ' . $_SESSION['shop_return_url']);                
}
4

1 に答える 1

0

入力ボックスに同じ名前を付けているため、期待どおりに機能しないので、次のようにしてみてください。

<input type="number" name="qty_<?php echo $itemId; ?>" id="qty_<?php echo $itemId; ?>" style="width:30px">...
...
<td><input type="Submit" name="Submit" value="Add" onClick="window.location.href='<?php echo $cart_url; ?>' +document.getElementById('qty_<?php echo $itemId; ?>').value;" ></td>
于 2012-12-28T05:48:26.710 に答える