2013-06-21 3 views
0

나는 myList.php에 내 즐겨 찾기에 추가 된 모든 제품을 나열하고 제품의 총 가격을 계산해야합니다. 내 즐겨 찾기에 제품을 추가하려면 아래 add_to_fav.php을 사용즐겨 찾기에 추가 할 코드가 자동으로 실패합니다.

<?php  
    include 'navigation.php' 
?> 

<div class='sectionContents'> 
<?php 
    if (isset($_GET['action']) && $_GET['action'] == 'removed') { 
     echo "<div>" . $_GET['prod_name'] . " was removed from favourites.</div>"; 
    } 

    if (isset($_SESSION['fav'])) { 
     $ids = ""; 
     foreach($_SESSION['fav'] as $prod_id) { 
      $ids = $ids . $prod_id . ","; 
     } 

     // remove the last comma 
     $ids = rtrim($ids, ','); 

     include "db_connect.php"; 

     $query = mysql_query("SELECT prod_id, prod_name, prod_price FROM tbl_product WHERE prod_id IN ('$ids')") or die(mysql_error()); 

     $num = mysql_num_rows($query); 

     if ($num > 0) { 
      echo "<table border='0'>"; //start table 

      // our table heading 
      echo "<tr>"; 
      echo "<th class='textAlignLeft'>Product Name</th>"; 
      echo "<th>Price (MUR)</th>"; 
      echo "<th>Action</th>"; 
      echo "</tr>"; 

      //also compute for total price 
      $totalPrice = 0; 

      while ($row = mysql_fetch_assoc($query)) { 
       extract($row); 

       $totalPrice += $prod_price; 

       //creating new table row per record 
       echo "<tr>"; 
       echo "<td>{$prod_name}</td>"; 
       echo "<td class='textAlignRight'>{$prod_price}</td>"; 
       echo "<td class='textAlignCenter'>"; 
       echo "<a href='remove_favourite.php?prod_id= {$prod_id}&prod_name={$prod_name}' class='customButton'>"; 
       echo "<img src='shopping-cart-in-php/images/remove-from- cart.png' title='Remove from favourite' />"; 
       echo "</a>"; 
       echo "</td>"; 
       echo "</tr>"; 
      } 

      echo "<tr>"; 
      echo "<th class='textAlignCenter'>Total Price</th>"; 
      echo "<th class='textAlignRight'>{$totalPrice}</th>"; 
      echo "<th></th>"; 
      echo "</tr>"; 

      echo "</table>"; 
      echo "<br /><div><a href='#' class='customButton'>Home</a></div>"; 

     } else { 
      echo "<div>No products found in your favourites. :(</div>"; 
     } 
    } else { 
     echo "<div>No products in favourites yet.</div>"; 
    } 
?> 

: 여기

코드입니다. "즐겨 찾기에있는 어떤 제품을 :("내가없는 오전

<?php 
    session_start(); 

    // get the product id 
    $prod_id = $_GET['prod_id']; 
    $prod_name = $_GET['prod_name']; 

    /* 
    * check if the 'fav' session array was created 
    * if it is NOT, create the 'fav' session array 
    */ 

    if (!isset($_SESSION['fav'])) { 
     $_SESSION['fav'] = array(); 
    } 

    // check if the item is in the array, if it is, do not add 
    if (in_array($prod_id, $_SESSION['fav'])) { 
     // redirect to product list and tell the user it was added to favourites 
     header('Location: prod_list.php?action=exists&prod_id' . $prod_id . '&prod_name=' . $prod_name); 
    } 

    // else, add the item to the array 
    else { 
     array_push($_SESSION['fav'], $prod_id); 
     // redirect to product list and tell the user it was added to cart 
     header('Location: prod_list.php?action=add&prod_id' . $prod_id . '&prod_name=' . $prod_name); 
    } 

?> 

을 즐겨 찾기를 보려고 할 때

나는 즐겨 찾기에있는 제품 수를 보여주는 것과 같은 카운터를 가지고 있습니다.

어딘가에 잘못한 적이 있습니까? 어떤 실수를 수정해야합니까?

+0

첫 번째 파일에'session_start()'가 있습니까? – andrewsi

답변

0

몇 가지 일이 발생할 수 있습니다.

1) 당신은 즐겨 찾기를로드하기 전에 세션을 시작되지 않습니다

<div class='sectionContents'> 
<?php 
if(isset($_GET['action']) && $_GET['action']=='removed'){ 
    echo "<div>" . $_GET['prod_name'] . " was removed from favourites.</div>"; 
} 

session_start() 

if(isset($_SESSION['fav'])){ 

2) 사실에 대한 여러분의 SQL 쿼리는 어떤 제품 ID를 찾을 수 없습니다. SQL을 디버그하여 phpMyAdmin 또는 mysql 인터페이스에서 실행하여 사실상 결과를 반환하는지 확인할 수 있습니다.

include "db_connect.php"; 

$query = "SELECT prod_id, prod_name, prod_price FROM tbl_product WHERE prod_id IN ('$ids')"; 
echo $query; // Print query for debugging 
$result = mysql_query($query) or die(mysql_error()); 
$num = mysql_num_rows($result); 

내 생각 엔이 쿼리 때문에 그것은해야 $ids

주위에 작은 따옴표의 잘못이다 :

$query = "SELECT prod_id, prod_name, prod_price FROM tbl_product WHERE prod_id IN ($ids)"; 

또한이에서 간단하게 할 수 있습니다

$ids = ""; 
foreach($_SESSION['fav'] as $prod_id){ 
    $ids = $ids . $prod_id . ","; 
} 

// remove the last comma 
$ids = rtrim($ids, ','); 

받는 사람 :

$ids = implode(",", $_SESSION['fav']); 
+0

$ idsWarning에서 작은 따옴표를 제거하면이 오류 메시지가 나타납니다. mysql_num_rows() 매개 변수 1이 리소스가 될 것으로 예상하고, 부울 값은 C : \ wamp \ www \ buysmart_site \ myList.php에 41 행에 있습니다. –

+0

게시 할 수 있습니까 'echo $ query' 결과는 무엇입니까? 또한 prod_id가 데이터베이스에 어떤 데이터 유형을 게시합니까? 그것은 varchar인가? int? – immulatin

+0

이걸 가지고있다 - Resource id # 6 즐겨 찾기에있는 제품을 찾을 수 없습니다. :(데이터 유형이 int 인 경우 –

관련 문제