2017-11-27 2 views
0

$ _POST [ 'amount']는 상품 금액을받지 못하고 $ _POST [ 'itemId']는 마지막 항목을 db로 표시하지만 클릭 한 항목은 표시하지 않습니다. 따라서 모든 제품은 표시하지만 형식은 마지막이 아니라 같은 폼 요소의 양식 입력의 내부를 모두 작성하고 같은 이름의 속성을 재사용하는 코드에서

<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

. 제출을 클릭하면 같은 '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