我有一个表设置了一个名为has_sub的列,其中包含tinyint值1或0,具体取决于子类别是否具有其他级别。 1 =有另一个级别,0 =没有其他级别。
我遇到的问题是我似乎无法根据has_sub字段更改我的锚点hrefs(请参阅以下代码)
$dbc = mysql_connect($db_host,$db_user,$db_pass);
$sdb = mysql_select_db($db_database);
$category = mysql_real_escape_string($_GET['category']);
$query = "SELECT subcategory_name, has_sub FROM subcategories WHERE subcategory_parent = '$category'";
$result = mysql_query($query, $dbc)
or die (mysql_error($dbc));
while($row = mysql_fetch_array($result)) {
$subcatname = $row["subcategory_name"];
$hassub = $row["has_sub"];
if($hassub=='1')
echo "<li><a href='getsubsubs.php?category=$subcatname'>$subcatname</a></li>";
else
echo "<li><a href='listings.php?category=$subcatname'>$subcatname</a></li>";
}
由于我是初学者,很可能我错过了一些非常基本的东西,但似乎无法弄明白。我一直在查看文档无济于事。非常感谢提前。
print_r($ row)的结果:(来自OP评论)
Array (
[0] => Alarm Systems
[subcategory_name] => Alarm Systems
[1] => 0
[has_sub] => 0
)
Array (
[0] => Building Interiors and Services
[subcategory_name] => Building Interiors and Services
[1] => 1
[has_sub] => 1
)
答案 0 :(得分:0)
不应该是if($hassub == 1)
而不是if($hassub=='1')
答案 1 :(得分:0)
一切都是正确的,因此检查数据库上的输入是否有错误。
答案 2 :(得分:0)
if-else语句中有一些小错误。你有正确的想法,只需要更改一些角色,因为你安排它的格式,导致它被识别为它不是。如果你将if-else语句中的所有东西都打包成变量而不是仅仅回显它,那么另一件事就是让所有事情变得更加井然有序。
而不是:
if($hassub=='1')
echo "<li><a href='getsubsubs.php?category=$subcatname'>$subcatname</a></li>";
else
echo "<li><a href='listings.php?category=$subcatname'>$subcatname</a></li>";
使用这样的东西:
if ($hassub == "1") {
$hassub_toggle = '<li><a href="getsubsubs.php?category=' . $subcatname . '">' . $subcatname . '</a></li>';
}
else {
$hassub_toggle = '<li><a href="listings.php?category=' . $subcatname . '">' . $subcatname . '</a></li>';
}
现在无论你把
放在哪里<?php echo $hassub_toggle; ?>
你会得到你的结果。我个人喜欢以这种方式将事物变成变量,因为它使事情变得非常有条理,并且它使您能够在返回到页面之前将更多内容应用于返回。