如何根据字段中的1或0获得不同的结果?

时间:2011-11-29 13:07:40

标签: php mysql html

我有一个表设置了一个名为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 
)

3 个答案:

答案 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; ?>

你会得到你的结果。我个人喜欢以这种方式将事物变成变量,因为它使事情变得非常有条理,并且它使您能够在返回到页面之前将更多内容应用于返回。