MYSQL查询:
$sql_product = "SELECT * FROM products WHERE product_id= $product_id";
$sql_result = $dbh->query($sql_product);
PHP:
foreach($sql_result as $row)
{
$product_id=$row['product_id'];
$product_name=$row['product_name'];
$price=$row['price'];
$picture=$row['picture'];
// output
echo "
<div>$product_name</div>
<div>$price</div>
<div>
<form action='cart.php' method='POST' id='buy'>
Amount: <select name='amount'>
<option value='1'>1</option>
<option value='2'>2</option>
<option value='3'>3</option>
</select>
</form>
</div>
";
if (isset($_POST['amount']))
{
$amount = $_POST['amount'];
echo $amount, '<br /><br />';
}
}
echo "<button type='submit'class='btn btn-primary' form='buy'>Buy</button>";
PHP foreach循环中的选项标记有问题。这是一个购物车,表格中有一个HTML选项标签。然后将option标签中的值转换为名为$ amount的变量。但每当我按下按钮时,购物车中的所有产品的金额都会发生变化。因此,如果我在购物车中有3个产品,并且我想购买第一个中的1个,第二个和第三个中的2个,则所有产品的变量$ amount变为1。任何人都可以帮助我吗?
答案 0 :(得分:0)
在for循环中添加一个计数器或其他东西。
类似
$x=0;
foreach() {
//your code here
<form action='cart.php' method='POST' id='buy'>
Amount: <select name='amount'".$x.">
<option value='1'>1</option>
<option value='2'>2</option>
<option value='3'>3</option>
</select>
</form>
//your code here
$x++;
}
而不是创建$ x,你可以试试$ row。你只需要添加一些东西
name='amount'".$variable."'>
如果你改变你的foreach
foreach($sql_result as $row)
到
foreach($sql_result as $k => $row)
你可以使用那个$ k
`name='amount'".$k."'>`
//// *更新* ////
如评论中所述,问题可能是表单在foreach中创建。所以我建议在外面创建它。这就是你如何做到的。有一些变化,试着找到它们。
// output is only $html at the end //
$html = '<form action="cart.php" method="POST" id="buy">';
foreach($sql_result as $row) {
$product_id=$row['product_id'];
$product_name=$row['product_name'];
$price=$row['price'];
$picture=$row['picture'];
$html.='
<div>$product_name</div>
<div>$price</div>
<div>
Amount: <select name="amount'.$row.'">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
</div>';
if (isset($_POST['amount'])) {
$amount = $_POST['amount'];
$html.= $amount.'<br /><br />'; //here string concatennation in php is with .
}
}
$html.='<button type="submit" class="btn btn-primary" form="buy">Buy</button>';
$html.='</form>';
// output happends here
echo $html;
// now all of this above you could wrap in a function and then
// return $html;
答案 1 :(得分:0)
您正在为循环内创建的所有表单分配相同的ID(购买),每页只应有一个ID。 做类似的事情:
<form action='cart.php' method='POST' id='buy_$row@index'>
并将按钮放在循环中,正确为id:
echo "<button type='submit'class='btn btn-primary' form='buy_$row@index'>Buy</button>";