2012-04-27 108 views
-5

我有一個電子商務網站項目,這裏是細節,這只是一個小問題,我無法修復它。我有2個表第一個表稱爲項目,第二個表是購物車。我已經叫鏈接添加到購物車中的一個網頁,其中變換我cart.php值不輸入switch語句

a href="cart.php? action=add & id=<?php echo $itemId; ?>"> Add to Cart </a><br/>

'<a href="cart.php? action=show & id=<?php echo $itemId; ?> ">View Shopping Cart </a>` 

afther,我已經cart.php頁:

<?php 
// Script Error Reporting 
error_reporting(E_ALL); 
ini_set('display_errors', '1'); 
?> 
<html> 
<head> 
<title> Cart Page </title> 
</head> 
<body> 
<?php 
include "function.php"; 
ConnectToDb(); 
$id= $_GET['id']; 
$action = $_REQUEST['action']; 
$action=(isset($_GET['action']) && $_GET['action'] != '') ? $_GET['action'] : 'view'; 

switch($action){ 
case "add": 
{$sql=mysql_query("SELECT * FROM items WHERE itemId='$id'"); 
$row=mysql_fetch_array($sql); 
$itemPrice= $row["itemPrice"]; 
$itemName= $row["itemName"]; 
$quanty=$row["qty"]; 

$query="insert into cart values('1',".$_GET[id].",1,".$itemPrice.",".$itemName.")"; 
$result=mysql_query($query); 
header("location:cart.php? action=show "); 
echo "Item Was Added"; 
break; 
} 
case "remove": 
{ 
$query="delete from cart where itemId=".$_GET['id']; 
$result = mysql_query($query); 
header("location:cart.php?action=show"); 
} 

case "update": 
{ 
$query="update cart set". $quanty = $_POST['quantity']."where itemId=".$_GET['id']; 
$result = mysql_query($query); 
header("location:cart.php?action=show"); 
break; 
} 
case "show_update": 
{ 
$result = mysql_query("select * from cart"); 
$uid=$row["uid"]; 
$itemId= $row["itemId"]; 
$qty=$row["qty"]; 
$itemPrice= $row["itemPrice"]; 
$itemName= $row["itemName"]; 
while($row = mysql_fetch_array($result)) 
{ if ($itemId == $id) 
    { 
      $totalCost =0; 
      $query = "select * from cart inner join items on cart.itemId= items.itemId";  
      $result = mysql_query($query); 
      echo "<table width ='100%' border ='1'>"; 
      while($row = mysql_fetch_array($result)) 
      {$totalCost += ($qty * $itemPrice); 
      echo "<tr>"; 
      echo "<td>"; echo $itemName;  echo "</td>"; 
      echo "<td> SR"; echo $itemPrice; echo "</td>"; 
      echo "<td> <input type ='text' name='quantity' value=".$qty."</td>"; 
      echo'<td width="23%"><a href="cart.php?action=update&id='.$itemId.'">save</a></td>'; 
      echo'<td width="23%"><a href="cart.php?action=remove&id='.$itemId.'">Remove</a></td>'; 
      echo"</tr>";} 
      // Increment the total cost of all items 
      $totalCost += ($row["qty"] * $row["itemPrice"]); 
      echo "<tr> <td colspan='2'> <a href='products.php'>Keep Shopping</a></td>"; 
      echo "<td colspan='2'> <b>Total: SR".$totalCost."</b></td></tr>"; 
      echo "</table>"; 
      } 
     else{ 
      $totalCost =0; 
      $query2 = "select * from cart inner join items on cart.itemId= items.itemId"; 
      $result2 = mysql_query($query2); 
      echo "<table width ='100%' border ='1'>"; 
      while($row2 = mysql_fetch_array($result2)) 
      {$totalCost += ($row2["qty"] * $row2["itemPrice"]); 
      echo "<tr>"; 
      echo "<td>"; echo $row2['itemName'];  echo "</td>"; 
      echo "<td> SR"; echo $row2["itemPrice"]; echo "</td>"; 
      echo "<td>";  echo $row2["qty"];   echo "</td>"; 
      echo'<td width="23%"><a href="cart.php?action=show_update&id='.$row2["itemId"].">edit</a></td>"; 
      echo'<td width="23%"><a href="cart.php?action=remove&id='.$row2["itemId"].">Remove</a></td>"; 
      echo"</tr>"; 
      } 
      // Increment the total cost of all items 
      $totalCost += ($row2["qty"] * $row2["itemPrice"]); 
      echo "<tr> <td colspan='2'> <a href='homestore.php'>Keep Shopping</a></td>"; 
      echo "<td colspan='2'> <b>Total: SR".$totalCost."</b></td></tr>"; 
      echo "</table>";} 
      break; 
}} 
case "show": 
{ 
$totalCost =0; 
$query = "select * from cart inner join items on cart.itemId = items.itemId"; 
$result = mysql_query($query); 
?> 
<table width="100%" border="1"> 
    <?php while($row = mysql_fetch_array($result)) 
    { 
    $totalCost += ($row["qty"] * $row["itemPrice"]); 
    ?> 
    <tr> 
    <td><?php echo $row["itemName"]; ?></td> 
    <td>SR<?php echo $row["itemPrice"]; ?></td> 
    <td><a href="cart.php?action=show_update&id=<?php echo $row["itemId"]; ?>">edit</a></td> 
    <td><a href="cart.php?action=remove&id=<?php echo $row["itemId"]; ?>">Remove</a></td> 
    </tr> 
<?php } 

// Increment the total cost of all items 
$totalCost += ($row["qty"] * $row["itemPrice"]); 
$totalCost = $totalCost + ($row["qty"] * $row["itemPrice"]); ?> 
<tr> <td colspan="2"> <a href="products.php">Keep Shopping</a></td> 
<td colspan="2"> <b>Total: SR<?php echo $totalCost; ?></b></td></tr> 
</table> 

<?php break; } 
} 


?> 
</body> 
</html> 

這裏的想法如果用戶點擊鏈接的行動=「添加」,產品的ID將transfare到cart.php, 問題是$行動不能插入switch敘述eventhough我有 回聲$行動,並將其打印添加 我做沒有知道爲什麼它不列入進入switch敘述 還我已經試過回聲$ ID,並將其打印2這是正確的 我試過的var_dump($ _ GET),也它的工作原理就說明我有字符串添加和id = 2 我想成爲crasy,因爲我整天在舞臺2上設置,這是行不通的。

在這裏,我不與車的會議,也沒有,這就是爲什麼在加的情況下我插入1作爲UID第一個值就在剛纔,如果它的工作的成功,我將添加會話用戶interset。 之後添加到卡壓會直接傳送到顯示的情況下,我們找到編輯和刪除課程的 在表演的情況下按壓刪除它會轉移他刪除的情況下 然而

如果出現在他按下編輯鏈接它會將他轉移到showupdate的情況下,他可以編輯的數量,如果ID匹配ID文本框將生成其他產品將不會有文本框,默認情況下數量將1如果文本框wasgenerated保存鏈接它會出現哪些變換他更新的情況下我們更新購物車表格中的數量。

我只是想知道爲什麼$action沒有得到進入到switch敘述?

+1

它有可能''ConnectToDb()'函數不會自動返回或失敗,在它後面放一個打印語句以確保你從它返回。你應該添加一個默認的案例(參見[docs](http://php.net/manual/en/control-structures.switch.php)),看看你是不是正確匹配一個案例。 – jedwards 2012-04-28 00:03:47

+5

另一集[Bobby Tables](http://xkcd.com/327/) – 2012-04-28 00:04:20

+0

爲了調試的目的嘗試添加一個默認的開關,並在其中打印$ action – Musa 2012-04-28 00:05:22

回答

-1

變化$_GET[id]$id因爲你已經在$ ID此行

$action=(isset($_GET['action']) && $_GET['action'] != '') ? $_GET['action'] : 'view'; 

並檢查其值之後

+1

的removoe空間您是否期望這解決他的問題? – jedwards 2012-04-28 00:02:35

+0

這應該起作用,因爲他詢問沒有插入switch語句中的值。如果我可能會問,你爲什麼懷疑? – Satya 2012-04-28 00:05:13

+0

這個工作是如何進行的?我必須從產品頁面獲得它,因爲我在$ action – shosho 2012-04-28 00:10:05

0

回聲$行動接收到這個

+0

它打印添加意味着它的工作,但仍然沒有進入案件 – shosho 2012-04-28 00:08:41

+0

然後嘗試以下內容,只是爲了檢查交換機內的代碼是否導致此:switch($ action){case} { case 「add」:echo「添加」; break; case「delete」:echo「delete」; break; case「update」:echo「update」; break;} – Oras 2012-04-28 00:10:04

+0

同樣的...空白頁 – shosho 2012-04-28 00:22:11

0

你知道這些行做:

'<a href="cart.php? action=show & id=<?php echo $itemId; ?> ">View Shopping Cart </a>` 

and

$action=(isset($_GET['action']) && $_GET['action'] != '') ? $_GET['action'] : 'view'; 

如果不是,我虛心地建議您考慮購買電子商務解決方案或使用開源選項。

如果你這樣做,那麼你應該看到,這其實是你錯誤的,因爲你必須在查詢字符串空間莖。

此外,由於您沒有view分支或default分支,因此您將跳過整個switch聲明。

+0

雖然通過調試'$ action ==='action'case來檢查是很容易的。 – raina77ow 2012-04-28 00:16:47

+0

'$ _GET ['action']'不會存在,'$ _GET ['action']'會。關於$ action的第二個注意事項是指出他是「違約」$ action來「查看」,但不是在switch語句中處理它,也不使用默認分支。 – jedwards 2012-04-28 00:19:21

+0

是的,這很合乎邏輯;但他如何獲得「添加」打印呢? )可能是'add'(這是唯一的解釋,爲什麼開關工作錯誤,當它應該是正確的)),但仍然... – raina77ow 2012-04-28 00:20:57

0

我找到了解決方案;如果你答案是肯定會笑的。它是:

它不應該開始$id= $_GET['id']; 因爲鏈接「添加」到購物車」的行動是第一位的則id
我已經刪除從一開始$id= $_GET['id'];,我把它放在每個錶殼裏。 ,它正在工作,謝謝你的幫助