我正在尝试使用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>";
}
}
?>
答案 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'];
另一件事,在你的下拉列表中选择:
<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
旁注:错误报告应仅在暂存时完成,而不是生产。