2011-09-27 5 views
0

잘 작동하는 장바구니가 있지만 각 루프의 바깥쪽에있는 문의 양식 안에 장바구니의 결과를 표시하려고합니다.각 루프마다 배열을 표시 할 수 있습니까?

내가 가지고있는 문제는 $ Ptitle을 표시하려고 할 때마다 장바구니에 마지막으로 추가 된 것을 표시하는 것입니다. 배열 내부의 전체 제목 목록은 아닙니다. 배열 결과를 표시하는 데 다양한 방법을 시도했지만 아무 것도 작동하지 않는 것 같습니다. 그리고 내가

print_r ($contents); 

를 통해 그러나뿐만 아니라 외부 각 루프에 대한 내부의 배열을 인쇄 할 수 있습니다 보인다. 아래 코드는 지저분한 경우 죄송합니다. 어떤 도움을 주시면 감사하겠습니다.

감사합니다.

function showCart() { 
global $db; 
$cart = $_SESSION['cart']; 
if ($cart) { 
    $items = explode(',',$cart); 
    $contents = array(); 
    foreach ($items as $item) { 
     $contents[$item] = (isset($contents[$item])) ? $contents[$item] + 1: 1; 

    } 
    echo '<form action="http://www.changecompanies.net/dev/theme/cart_checkout.php?action=update" method="post" id="cart">'; 
    //$output[] = '<table>'; 
    ?> 
    <table id="cart"> 
       <tr> 
        <th>Quantity</th> 
        <th></th> 
        <th>Item</th> 
        <th>Product Type</th> 
        <th>Unit Price</th> 
        <th>Total</th> 
        <th>Remove</th> 
       </tr> 
    <?php 
    foreach ($contents as $id=>$qty) { 



     $sql = 'SELECT * FROM tccproducts WHERE id = '.$id; 
     $result = $db->query($sql); 
     $row = $result->fetch(); 
     extract($row); 

     $result = mysql_query("SELECT * FROM tccproducts WHERE Pid ='$id'")or die (mysql_error()); 
     //if (!$result); 
     //echo "no result"; 
     $myrow = mysql_fetch_array($result) or mysql_error('error!'); 
     $name = $myrow['Ptitle']; 
     //$name = substr($name,0,40); 
     $Pprice = $myrow['Pprice']; 
     $Ptitle = $myrow['Ptitle']; 
     $Pimage = $myrow['Pimage']; 
     $Pcat = $myrow['Pcategory']; 
     $mini = $myrow['Pminimum']; 

나머지는 카트를 표시하고 각 루프마다 끝납니다.

+0

왜 foreach 루프 밖으로 배열을 덤프 할 수 없습니까? –

+0

그게 내 질문 Interstellar .... 배열을 표시 할 수 있지만 올바른 값을 얻는 방법을 모르겠어요 ... 예를 들어 'Pids'A9, A9, A9, B12, B12 표시 할 수 있습니다. , B12가 각각 3 개라면 그러나 그 숫자를 파고 제목, 가격 및 기본적으로 장바구니에 나열된 모든 것을 전자 메일 메시지에 표시하려면 어떻게해야합니까? – Zanrok

답변

2

카트의 모든 항목에 대해 루프를 실행하고 해당 항목에 대한 세부 정보를 가져 와서 개별 변수에 세부 정보를 저장합니다. 루프를 반복 할 때마다 이전에 검색 한 데이터는 가져온 데이터의 다음 행으로 덮어 쓰게됩니다. 따라서 가져온 마지막 항목의 데이터 만 저장합니다.

모든 항목 데이터를 저장하려는 경우 화살표로 각 행을 저장하고 나중에 출력하거나 각 행을 가져온대로 출력해야합니다.

while($row = mysql_fetch(...)) { 
    echo <<<EOL 
<tr> 
    <td>{$quantity}</td> 
    <td>{$row['price']}</td> 
    etc... 
</tr> 
EOL; 
} 
+0

나는 당신의 말을 이해한다. 사용자가 장바구니에 "추가하는"결과를 제외하고는 세션 변수 카트에 저장되어있다. 그렇다면 변수를 참조하고 다시 표시 할 수없는 이유는 무엇입니까? 만약 내가 당신의 솔루션을 사용했다면 나는 foreach 외부에서 또는 내부에서 여전히 구현할 수 있을까요? – Zanrok

+0

Marc의 변형을 사용할 수있었습니다. 기본적으로 새 함수를 만들고 카트 변수를 반복하도록 호출했습니다. 기본적으로 다른 표시 방법을 사용하는 별도의 루프입니다. 위대한 작품! 감사. – Zanrok

관련 문제