value不会进入switch语句

时间:2012-04-27 23:58:23

标签: php switch-statement

我有一个电子商务网站项目,这里是细节,这是一个很小的问题,我无法解决它。我有2个表第一个表叫项目,第二个表是购物车。我在一个页面中将名为“添加到购物车”的链接转换为cart.php

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>` 

此外我已经购买了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将转移到cart.php, 问题是$动作无法插入到Switch语句中,尽管我已经 echo $ action并打印添加 我不知道它为什么不进入开关声明 我也尝试回复$ id并打印2这是正确的 我已经尝试了var_dump($ _ GET)并且它的工作原理它告诉我有字符串添加和id = 2 我希望自己变得很糟糕,因为我整天都在设置latop,但这不起作用。

这里我不介意购物车的会话和用户,这就是为什么在添加案例中我刚刚插入1作为uid的第一个值,如果它成功,我将添加会话。 按下添加到卡后,它将直接转移到我们发现编辑和删除的展示案例 当然在展示案例中按删除它将转移他删除案件 然而

如果他在展示案例中按编辑链接,则会将他转移到showupdate案例,在那里他可以编辑数量,如果id匹配id文本框将生成其他产品将没有文本框,默认情况下如果文本框生成则数量为1保存链接会出现哪些变形更新了我们更新购物车表中的数量的情况。

我只是想知道为什么$action没有进入切换语句?

4 个答案:

答案 0 :(得分:0)

此行之后的回复$动作

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

并检查其值

答案 1 :(得分:0)

你知道这些行是做什么的:

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

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

如果没有,我谦虚地建议您考虑购买电子商务解决方案或使用开源选项。

如果你这样做,那么你应该看到这实际上是你的错误源于你查询字符串中有空格的地方。

此外,由于您没有view分支或default分支,因此您正在跳过整个switch语句。

答案 2 :(得分:0)

我找到了解决方案;如果你知道答案,你会笑的。它是:

它不应该以{{1​​}}开头 因为在链接&#34;添加&#34;到购物车&#34;首先是行动$id= $_GET['id']; 我从开始时删除了id,然后将其放在每个案例中,它正在运行。谢谢你的帮助。

答案 3 :(得分:-1)

$_GET[id]更改为$id,因为您已在$ id

中收到此信息