值不输入开关语句


value does not enter the switch statement

我有一个电子商务网站项目,这是细节,这只是我无法解决的小问题。我有 2 张表,第一个表称为项目,第二个表是购物车。我在一页中提供了名为"添加到购物车"的链接,它将我转换为购物车.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>` 

在我购物车.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将转入购物车.php的想法是,问题是$action即使我已经无法插入到 Switch 语句中回显$action,它打印添加我不知道为什么它不输入开关语句我也尝试回显$id,它打印 2 是正确的我已经尝试过var_dump($_GET(,而且它可以工作,它向我显示有字符串添加和id = 2我想变得粗鲁,因为我整天都在 latop 2 上设置,这不是工作.

在这里,我

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

如果他在展示案例

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

我只想知道为什么$action没有进入开关语句??

在此

行之后回显$action

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

并检查其值

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

'<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 语句。

我已经找到了解决方案;如果你叩头,你会笑的。是的:

它不应该从$id= $_GET['id'];开始因为在链接中"添加"到购物车"操作首先出现,然后是id
我从一开始就删除了$id= $_GET['id'];,并将其放在每个箱子中,它正在工作。谢谢你的帮助。

$_GET[id]更改为$id,因为您已经在$id中收到此消息