Php代码:使用带单选按钮的表单将项目添加到购物车

时间:2015-05-30 02:42:17

标签: php cart

我正在尝试使用PHP为旧项目创建购物车系统。我倾向于犯小错误,所以请原谅我。我的表格如下:

<form action="connect.php" method="POST">
<p>Size:
  <input type="radio" name="size" value="small"> Small
  <input type="radio" name="size" value="medium"> Medium
  <input type="radio" name="size" value="large"> Large
  <input type="radio" name="size" value="x-large"> X-large
  <input type="radio" name="size" value="xx-large"> XX-large
  </p></form><br>

<p>Color:
<input type="radio" name="color" value="black"> Black
<input type="radio" name="color" value="blue"> Blue
<input type="radio" name="color" value="red"> Red
<input type="radio" name="color" value="white"> White
</p></form><br>

  <p>Quantity:
    <select name="quantity">
    <option value="1" name="amt">1</option>
    <option value="2" name="amt">2</option>
    <option value="3" name="amt">3</option>
    <option value="4" name="amt">4</option>
    <option value="5" name="amt">5</option>
    </select>
  </p>
  <br>
  <input id="addItem" class="btn" type="submit" name="addItem" value="Add to Cart">
</form>

PHP如下。我在提交表单时遇到困难,并检查我的数据库是否有项目。一旦我可以使用它,我希望代码检索该信息并实际将其添加到“购物车”进行购买。

<?php
 session_start();
include_once("connect.php");

if (isset($_POST['addItem'])) {
// echo "working";
$search_size = $_GET['size'];
$search_color = $_GET['color'];
//$search_amt = $_GET['amt'];

$addingSize = mysqli_query($conn,"SELECT * FROM 'products' WHERE 'prod_name' like '%$search_size%'");
$addingColor = mysqli_query($conn,"SELECT * FROM 'products' WHERE 'prod_color' like '%$search_color%'");
//$addingAmt = mysqli_query($conn,"SELECT * FROM 'products' WHERE 'prod_name' like '%$search_size%'");

//fetch info and put into cart

//mysqli_fetch_array(result,resulttype);
while($row=mysqli_fetch_array($conn,MYSQLI_BOTH)){
$price = $row['price'];
$name = $row['prod_name'];
$size = $row['prod_size'];
$color = $row['prod_color'];

echo "<h1>added to cart</h1>";
 }
}

?>

2 个答案:

答案 0 :(得分:0)

您对mysql_fetch_array的调用不正确。

$addingSize = mysqli_query($conn,"SELECT * FROM 'products' WHERE 'prod_name' like '%$search_size%'");
$addingColor = mysqli_query($conn,"SELECT * FROM 'products' WHERE 'prod_color' like '%$search_color%'");

//fetch info and put into cart
while($row=mysqli_fetch_array($conn,MYSQLI_BOTH)){
    ...
}

mysqli_fetch_array的第一个参数应该是mysqli_result资源,而不是连接资源。

尝试将其更改为

while($row=mysqli_fetch_array($addingSize,MYSQLI_BOTH))

你应该能够迭代第一个查询的结果。

然后使用

从第二个查询中获取结果
while($row=mysqli_fetch_array($addingColor,MYSQLI_BOTH))

答案 1 :(得分:0)

首先,从两个中删除表和列选择的引号 FROM 'products' WHERE 'prod_name'FROM 'products' WHERE 'prod_color'

这些是作为字符串文字传递的。

  • 使用滴答或删除它们。

Ticks示例:

SELECT * FROM `products` WHERE `prod_name`

关于标识符限定符。

对查询使用错误检查会触发语法错误。

or die(mysqli_error($conn))添加到mysqli_query(),您将自行查看。

然后你在<:p>中使用了错误的变量$conn

while($row=mysqli_fetch_array($conn,MYSQLI_BOTH))
                              ^^^^^ // incorrect variable, syntax error.

使用$addingSize$addingColor,具体取决于您要获取所需的查询。您也可能想要使用两个不同的while,但不确定您希望在循环中回显哪个查询以及从哪个查询查询;只有你知道哪一个。

然后是这些GET数组:

$search_size = $_GET['size'];
$search_color = $_GET['color'];
//$search_amt = $_GET['amt'];
  • 那些应该是POST而不是GET,因为你的表单方法是“post”。

另一件事,在你的下拉列表中选择:

<select name="quantity">
<option value="1" name="amt">1</option>
<option value="2" name="amt">2</option>
<option value="3" name="amt">3</option>
<option value="4" name="amt">4</option>
<option value="5" name="amt">5</option>
</select>

只有<select>带有“name”属性,而不是<option>。因此<select name="quantity">应该具有“amt”名称属性而不是“数量”。

error reporting添加到文件的顶部,这有助于查找错误。

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// rest of your code

旁注:错误报告应仅在暂存时完成,而不是生产。