2017-11-27 6 views
0

$ _POST ['amount']は商品の量を取得せず、$ _POST ['itemId']​​は最後のアイテムをdbで表示しますが、クリックしたアイテムは表示しません。だから、すべての商品は、showですが、形だけで、最後の1ではなく、あなたが同じフォーム要素のフォーム入力の内部のすべてを作成し、同じ名前の属性を再利用しているあなたのコードでは

<div class=cart> 
    <b>Cart:</b><br> 
    <?php 
    if(isset($_POST['add'])) 
     {?> 

    <?=$_POST['amount']?> 

     <?php } 
    ?> 
</div> 
<hr> 


<?php 

class shop 
{ 
    public function baseConnect() 
    { 
     $connect = mysqli_connect("localhost", "root", "", "test"); 
     $table = "SELECT * FROM `goods`"; 
     $result = mysqli_query($connect, $table); 

     return $result; 
    } 
} 

$shop = new shop; 
$items = $shop->baseConnect(); 

?> 

<form method='post'> 
<?php 
while ($item = mysqli_fetch_assoc($items)) 
{?> 
    <input type=hidden value='<?=$item['good'];?>' name='itemId'> 
    <b><?=$item['good'];?></b><br> 
    Price: <?=$item['price'];?>$<br> 
    <input type=text name='amount'><br> 
    <input type=submit name='add' value='Add to cart'><br> 
<?php } 
?> 
</form> 
+1

。今すぐsubmitをクリックすると、同じ 'name'属性を持つ複数の項目があります。 – commanderZiltoid

+0

これは大文字のクラスを呼び出すための非常に一般的な標準です: 'Shop' – Michael

答えて

2

でクリックされたものを受け取ります各要素について送信をクリックすると、その名前の最後のインスタンスがサーバーに送信されます。したがって、amountに番号を追加し、リストの最後の項目ではない項目の送信ボタンをクリックすると、最後の例の値はamountitemIdのままです。

これを解決するには、<form method="post" action="">をwhileループ内に移動します(ループの末尾に</form>タグも含める)。

変更:

<form method='post'> 
<?php 
while ($item = mysqli_fetch_assoc($items)) 
{?> 
    <input type=hidden value='<?=$item['good'];?>' name='itemId'> 
    <b><?=$item['good'];?></b><br> 
    Price: <?=$item['price'];?>$<br> 
    <input type=text name='amount'><br> 
    <input type=submit name='add' value='Add to cart'><br> 
<?php } 
?> 
</form> 

へ:

<?php while($item = mysqli_fetch_assoc($items)): ?> 
    <form method='post' action=""> 
     <input type="hidden" value='<?php echo $item['good']; ?>' name='itemId'> 
     <b><?php echo $item['good']; ?></b><br> 
     Price: $<?php echo $item['price']; ?><br> 
     <input type="text" name='amount'><br> 
     <input type="submit" name='add' value='Add to cart'><br> 
    </form> 
<?php endwhile; ?> 
は、whileループ内で、あなたの ``
要素を移動し
+2

何が変更されたのかを言葉で説明するとよいでしょう。したがってpleople(この場合はOP)は見つけ出す必要はありません。 _それはあまりにもローカライズされているように私はOPを言う。) – FirstOne