2012-11-29 4 views
0

저는 PHP와 PostgreSQL을 사용하여 장바구니를 만들고 있습니다. 배열에 저장된 참조 번호를 사용하여 장바구니에 항목을 가져올 수있었습니다. 사용자가 확인란을 클릭하여 항목을 장바구니에 추가하는 것과 같이 제거 기능을 만들려고 시도하는 중 항목을 제거하지만 모든 작업이 페이지를 새로 고치는 것입니다. 테이블을 제거합니다. 지금까지PHP- 쇼핑 카트 항목을 삭제 하시겠습니까?

내 코드 :

<form action="shoppingcart.php" method="post" style="width: 80%"> 
    <input type="submit" name="RemoveFromCart" value="Remove"> 

    <?php 
    if(isset($_POST['itemsre'])) 
    { 
     $n = count($_POST['itemsre']); 
     for($i = 0; $i < $n; $i++) 
     { 

     } 

     $items = array(); 
     foreach($_POST['itemsre'] as $item) 
     { 
      $items[] = pg_escape_string($con, $item); 
     } 

     if(!$_SESSION["deletingrows"]) 
     { 

      $item_string = "'" . implode("','", $items) . "'"; 

      $result = pg_query($con, "SELECT title, platform, description, price FROM CSGames WHERE refnumber IN ($item_string)"); 

      while($result) 
      { 
       unset($result); 
      } 
     } 
    } 

답변

1

첫 번째 애완 동물 초조 : 당신은 그냥 XHTML을 위하여, 당신의 <input> 태그를 닫아야합니다.

<input type="submit" name="RemoveFromCart" value="Remove" /> 

나는이 사용되는지 확실하지 않다 :

$n = count($_POST['itemsre']); 
for($i = 0; $i < $n; $i++) 
{ 

} 

당신의 파일에 사용되지 않는 것으로 보인다. 다시 말하지만 문제에 너무 많은 영향을 미치지 않아야합니다. 실제로 코드가 될 필요가없는 코드를 추가합니다.

나는 문제가 궁극적으로이에게 있습니다 생각 :의 unset

while($result) 
{ 
    unset($result); 
} 

PHP는 기본적으로 지역 변수를 파괴합니다. 이 명령은 한 번 실행되고 $result을 삭제 한 다음 $result이 정의되지 않았 음을 나타내는 E_NOTICE를 발생시킵니다. 당신이 그것을 사용하는 방법을 찾고, 당신은 이런 식으로 쿼리를 변경할 수 있습니다 :

$result = pg_query($con, "DELETE FROM CSGames WHERE refnumber IN ($item_string)"); 

이 당신의 CSGames 테이블에서 삭제됩니다 참조 번호가 항목 문자열입니다. 그러나 여러 사용자가이 기능을 사용하면 한 사람의 장바구니 항목을 삭제하면 다른 장바구니 항목이 삭제 될 수 있습니다. cartID (사용자가 로그인하지 않은 경우 세션 ID 또는 사용자가 로그인해야하는 경우 사용자 ID로 설정할 수 있음)를 유지해야합니다. 다음과 같이

따라서, 당신의 목표는 무엇인가 다음과 같습니다

<form action="shoppingcart.php" method="post" style="width: 80%"> 
    <input type="submit" name="RemoveFromCart" value="Remove" /> 

    <?php 
    if(isset($_POST['itemsre'])) 
    { 

     $items = array(); 
     foreach($_POST['itemsre'] as $item) 
     { 
      $items[] = pg_escape_string($con, $item); 
     } 

     if(!$_SESSION["deletingrows"]) 
     { 

      $item_string = "'" . implode("','", $items) . "'"; 
      $cartID = $_SESSION['userID']; // This must be changed to how you maintain unique users! 
      $result = pg_query($con, "DELETE FROM CSGames WHERE cartID=$cartID AND refnumber IN ($item_string)"); 
     } 
    }