2013-05-15 2 views
0

세션 카트에 항목 배열이 있습니다. 테이블에 채워집니다.세션 장바구니에서 항목 배열 제거

$i = 0; 
foreach($_SESSION['cart'] as $item) 
{ 
    //Populate items in a table ?> 
<tr> 
<td><center><?php echo $i; ?></center></td> 
<td><center><?php echo $item['item'];?></center></td> 
<td><center><?php echo '£'. $item['unitprice'];?></center></td> 
<td><center><?php echo $item['quantity'];?></center></td> 
    <td><center><?php echo '£'.($item['unitprice'] * $item['quantity']) ?></center></td> 
<td><input type="submit" value="Remove" Onclick = unset($_SESSION['cart'][$i]); ></td> 
</tr> 
<?php 
$total += ($item['unitprice'] * $item['quantity']); 
$i++; 
} 

모든 I : 각 행 인덱스와 $ _SESSION에서 특정 항목 (items 배열)를 제거하는 버튼을 갖는다 '카트'] ..

이것은 I 순간에있는 코드 하나의 데이터 행 (인덱스, 항목, 항목 가격, 항목이 여러 개있는 경우 각 행에 단추가있는 경우)을 세션 카트에서 제거하는 것입니다. 미리 감사드립니다.

답변

0

설정이 잘못되었지만 PHP가 서버 측에서 실행됩니다. 따라서 이것이 클라이언트 액션이기 때문에 JavaScript를 사용하여 액션을 선택해야합니다. (당신은 또한 오래된 fasion 양식을 사용할 수 있습니다). jQuery는 allready가 AJAX 지원 기능을 내장하고 있으므로 쉽게 사용할 수 있습니다. 기본적으로 onClick에서 삭제하려는 요소의 "ID"를 전달하는 함수를 호출하면됩니다. 그런 다음 해당 함수는 해당 ID를 가져와 요소를 제거하는 다른 스크립트로 AJAX 호출을 작성합니다. 해당 스크립트가 성공하면 JavaScript로 요소를 삭제 (또는 숨기기)하도록합니다. 이 방법은 사용자가 결코 떠나지 않는다 또는 페이지를 새로 고침하고 스크립트가

여기
i = 0; 
foreach($_SESSION['cart'] as $item) 
{ 
    //Populate items in a table ?> 
<tr> 
<td><center><?php echo $i; ?></center></td> 
<td><center><?php echo $item['item'];?></center></td> 
<td><center><?php echo '£'. $item['unitprice'];?></center></td> 
<td><center><?php echo $item['quantity'];?></center></td> 
    <td><center><?php echo '£'.($item['unitprice'] * $item['quantity']) ?></center></td> 
<td><input type="submit" value="Remove" onClick="RemoveItem(<?= $i ?>)" ></td> 
</tr> 
<?php 
$total += ($item['unitprice'] * $item['quantity']); 
$i++; 
} 

내가 사용하는 온 클릭 섹션을 변경했습니다 (요청을 검증 등을 데이터베이스 업데이트, 세션 업데이트 등) 몇 가지 추가 정리 작업을 수행 할 수 있습니다 자바 스크립트 호출. 내가 <?php echo 대신 <?= tag을 사용했음을 알 수 있습니다. 이것은 php5에서 약식 <?=을 사용하여 표현식을 반향시킬 수 있기 때문입니다.

스크립트 섹션에서 이와 같은 작업을 수행 할 수 있습니다. 더 안전하기 때문에 POST를 사용합니다. 는 DOM에서 항목을 제거하기위한

function RemoveItem(id) { 
    $.post('script-to-remove.php', 
     { ItemID: id }, 
     function(data) { 
     if(data==='success') { 
      //Remove item from DOM 
     } else alert("There was an error!"); //If you want error handling 
     } 
    ); 
} 

, 정말 같은 페이드 아웃, slideUp, 애니메이션 등 내가 div의로 다시 포맷을 조사하는 것처럼 작동합니다 멋진 효과 없음 이래 약간의 테이블과 난이도를.

php 스크립트에 관해서는, unset을 호출하는 것처럼 간단합니다. 가능하면 요청의 유효성을 검사 할 수 있도록 더 많이 개발할 수 있지만, 지금은 설정하지 않을 것입니다.

<?php 
$ItemID = isset($_POST['ItemID'])?intval($_POST['ItemID']):-1; 
if($ItemID<0) die("Invalid ID"); //Change this if you want 
if(isset($_SESSION['cart'][$ItemID])) unset($_SESSION['cart'][$ItemID]); 
echo 'success'; 
?> 

기본적으로이에, 내가 먼저, 그렇지 않으면 내가 -1에 기본, 그것은 정수의 확인 및 저장, 올바른 매개 변수가 와서 확인하십시오. 그런 다음 항목 ID가 0 (너무 잘못됨) 인 경우 스크립트에 메시지를 출력하고 종료하도록 지시합니다. 마지막으로 ID 또는 인덱스의 값이 실제로 있는지 확인하고 설정을 해제합니다. 그것이 끝나면 성공을 출력하십시오.

+0

안녕하세요! 빠른 답변 주셔서 감사합니다 ...하지만 솔직히 말해서 나는 AJAX 나 jQuery를 시도한 적이 없으므로 아이디어를 얻지 못했을 것입니다 ... 미안하지만, 나는 숙련되지 않습니다. 저는 멍청합니다.))) –

+0

Google을 사용하여 몇 가지 추가 정보를 얻을 수 있도록 정보를 업데이트했습니다. 정말로 AJAX에 뛰어 들기를 원하지 않는다면 (그렇지만), 설정되지 않은 스크립트로가는 양식을 사용할 수 있습니다. 하지만 ID를 제대로 전달해야합니다. 그렇지 않으면 여기에 몇 가지 독서가 있습니다. http://phpcodeforbeginner.blogspot.com/2013/01/jquery-ajax-tutorial-and-example-of.html http://net.tutsplus.com/articles/web-roundups/jquery-for- absolute-beginners-video-series/ – CP510

+0

정말 고마워요! 그 함수 RemoveItem .. 그것은 PHP 함수입니까? –