我需要一些关于这个php文件的帮助。
我先解释一下我需要做什么:
我有主要的产品类别。当您单击某个类别时,您将被带到包含所单击类别的子类别的页面,此部分可以正常工作。我现在需要它,以便当你点击一个子类别时,该子类别的所有产品都被加载到同一页面上的div中(使用带有刷新的php ....)
我会发布我的代码并评论它解释问题。
<?php
include 'connect.php';
$cat_id = intval($_GET['category']); //GETS THE CAT_ID OF THE CLICKED CATEGORY LINK
$sql = mysqli_query($link, "SELECT * FROM subcategories WHERE cat_id = $cat_id AND
status = 1");
$output = '';
while($row = mysqli_fetch_array($sql)){
$data = $row['image'];
$file = substr($data, strpos($data, "/") + 1);
$output .= "<div class='subcats'>";
$output .= "<a href='cats.php?subcategory=" . $row['subcat_id'] . "'>
<img src='$file' />"; //WHEN I CLICK ON A SUBCAT, I GET AN ERROR OF
'UNDEFINED' FOR CATEGORY. NO CATEGORY IS BEING CLICKED. HOW DO I GET IT TO LOOK FOR A
CATEGORY ONLY IF ONE IS CLICKED?
$output .= "<div class='maincatheadings'>{$row['subcategory']}</div>";
$output .="</a>";
$output .= "</div>";
}
echo $output
?>
答案 0 :(得分:2)
因为在第二次点击时您正在使用新值重新加载,并且类别不在新集中。
$output .= "<a href='cats.php?subcategory=" . $row['subcat_id'] . "'>
是否会从cats.php?category = XXXX重定向到cats.php?subcategory = YYYY
这应该在你的例子中完成:
$output .= "<a href='cats.php?category=". $_GET['category'] ."&subcategory=" . $row['subcat_id'] . "'>
是否会从cats.php?category = XXXX重定向到cats.php?category = XXXX&amp; subcategory = YYYY
如果您需要:
,这应该处理“任何被选中”的情况$cat_id = intval(isset($_GET['category']) ? $_GET['category'] : 0);
答案 1 :(得分:2)
您需要类别ID才能显示子类别列表,因此不能完全跳过类别ID。我看到两种解决这个问题的方法:
category
以及subcategory
。category
,但subcategory
存在,则通过搜索所选子类别的父级从数据库中检索类别。选项2比1更稳固,因为这不能被操作到错误的参数集中。 (如果你不确定首先完成所有必要的检查,人们可以操纵URL并导致奇怪的事情发生。)
我仍然会考虑更改代码,因为现在您没有错误处理,以防提交的类别ID不存在。
答案 2 :(得分:0)
在while循环之前使用简单的检查,结果计数为0比去查找产品而不是将其分配给结果:
$result = $mysqli->query($sql_quer);
$num_rows = $result->num_rows;
if($num_rows === 0)
{
$sql = mysqli->query("SELECT * FROM products WHERE cat_id = $cat_id AND
status = 1");
}