2017-01-24 14 views
0

私は前のPHPページからすべてのデータを受け取るPHPページを作っています。私はすでに製品のリストを表示していますが、カートに追加ボタンをクリックするたびに、最後の製品の数量だけが読み込まれます。値渡しPHP(オンラインカート)

while($row=mysql_fetch_array($result)) { 
$dib = $row['db_prod_id']; 
$Item_ID =$row['bbs_prod_id']; 
$Item_Name =$row['prod_name']; 
$Item_Description =$row['description']; 
    $Price =$row['price']; 
$Item_Image =$row['item_image']; 

echo "<input type='hidden' name='dib' value='$dib'>"; 
echo "<input type='hidden' name='id' value='$Item_ID'>"; 
echo "<input type='hidden' name='name' value='$Item_Name'>"; 
echo "<input type='hidden' name='desc' value='$Item_Description'>"; 
echo "<input type='hidden' name='price' value='$Price'>"; 
echo "<input type='hidden' name='img' value='$Item_Image'>"; 

echo "<tr>"; 
echo "<th><label>$Item_ID</label></th>"; 
echo "<th><label>$Item_Name</label></th>"; 
echo "<th><label>$Item_Description</label></th>"; 
echo "<th><label>$Price</label></th>"; 
echo "<th><img src='$Item_Image' height='100' width='100'></th>"; 
echo "<th><input type='text' value='' placeholder='how many' name='quantity'>"; 

echo "<th><input type='submit' value='Add to Cart'></th>"; 
echo "<tr>"; 

私は数量の通過をテストします。 最後の項目だけが数量をエコーし​​ます。

session_start(); 

$user = $_SESSION['bbs_buyer_login']; 

require("dbconnect.php"); 

$quantity = $_POST['quantity']; 

echo "$quantity"; 

私はすでに私のリスト上の3つの項目を持っていますが、唯一の3番目の項目は、数量をエコーのみ、私は「add to cart」ボタンをクリックするたび読み込まれています。

お願いします。ありがとうございました!

+0

'$ _POST'は' $ _POST'データを '$ _SOSSION'に保存して別のリクエストで再利用する必要があります。 – KDOT

答えて

0

あなたはループ内です。配列として扱われるためにあなたの入力を変更します。

echo "<th><input type='text' value='' placeholder='how many' name='quantity[]'>"; 

その後$_POST['quantity']は量を持つ配列となります。あなたは、私はあなたのコードの残りの部分がどのように動作するかわかりませんが、それはこの場合には、トリックを行う必要があります

print_r($_POST['quantity']); 

または

var_dump($_POST['quantity']); 

を経由して、これをルックアップすることができます。

0

$_POSTは、入力のnamevalueの配列key => valueを含むサーバーに送信しているHTTPリクエストから派生しています。

数量を保管して後で追加するには、クッキー/セッションを使用する必要があります。まず、例えばこのようなカート配列:後で参照するために、そして

if(isset($_POST['quantity']) && isset($_POST['id']) { 
    $q = $_POST['quantity']; 
    $pid = (int) $_POST['id']; 
    $c = $_SESSION['cart']; 
    $c[$pid] = $c[$pid] ? $c[$pid] + (int) $q : (int) $q; 
    $_SESSION['cart'] = $c; 
} 

if(!isset($_SESSION['cart'])) { 
    $_SESSION['cart'] = array(); 
} 

あなたはその後、製品ID($pid)このように、このアレイ内の量($q)を設定することができその数量の製品は単に各製品のSQLクエリを実行します。

foreach($_SESSION['cart'] as $pid => $q) { 
    // change SQL to meet your DB 
    $sql = 'SELECT * FROM products WHERE product_id = :product_id LIMIT 1'; 
    $stmt = $pdo->Prepare($sql); // using PDO driver 
    $stmt->bind_param(':product_id', (int) $pid); // dont trust the data 
    $stmt->execute(); 
    $r = $stmp->fetch(); 
    $cost = $r['price'] * $q; // get the price and multiply by quantity 
}