无法在 php mysql 中获取类别和子类别。
在这里我得到了所有类别(猫和子猫):
function get_categories() {
$conn = db_connect();
$query = "select * from categories";
$result = $conn->query($query);
if(!$result) {
return false;
}else {
$result = db_result_to_array($result);
return $result;
}
}
在这里我得到了子猫:
function get_child_cats($parent_id) {
$conn = db_connect();
$query = "select * from categories where parent_id = '".$parent_id."'";
$result = $conn->query($query);
if(!$result) {
return false;
}else {
$result = db_result_to_array($result);
return $result;
}
}
db_result_to_array()
函数在这里:
function db_result_to_array($result) {
$res_array = array();
for($count = 0; $row = $result->fetch_assoc(); $count++) {
$res_array[$count] = $row;
}
return $res_array;
}
数据库由cat_id、cat_name、parent_id组成
在这里我试图显示猫和子猫:
if(is_array($categories)) {
echo "<ul>";
foreach($categories as $row) {
if(!$row['parent_id']) {
$childs = get_child_cats($parent_id);
echo "<li>".$row['cat_name'];
if($row['parent_id']) {
echo "<ul>";
foreach($childs as $row) {
echo "<li>".$row['cat_name']."</li>";
}
echo "</ul>";
}
echo "</li>";
}
}
echo "</ul>";
}
但是,我只得到没有任何子猫的猫。
最佳答案
您编写了错误的逻辑,认为您的第一个条件是 if(!$row['parent_id']) {
然后在其中添加条件 if($row['parent_id']) ']) {
.因此,如果“假”条件满足并且光标进入“if”内部,那么如何针对相同的参数和条件执行“真”逻辑
我已在下面尝试使您的逻辑正确:
foreach($categories as $row) {
if(!$row['parent_id']) {
echo "<li>".$row['cat_name'];
$childs = get_child_cats($parent_id);
}
else {
echo "<ul>";
foreach($childs as $row) {
echo "<li>".$row['cat_name']."</li>";
}
echo "</ul>";
}
echo "</li>";
}
希望它对您有用!
关于php - 在php mysql中显示类别和子类别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37670811/