>我目前正在处理一个网站的标题,我已经定义了一个函数来给出数据库的结果以显示在标题部分,它适用于条件 1 和 2,但是当我需要它显示"主页"时,即当条件 1 或 2 未设置或为空时,它不会返回"主页"。我希望在第三个条件下做错了什么,但不确定在哪里。
P.s:get_path() 是一个提取 url 参数以将它们与数据库值进行比较的函数。
<?php
function title($dbc){
$path_info = get_path();
$title_prod= $path_info['call_parts'][0];
$title_cat = $path_info['call_parts'][1];
if(isset($title_cat))
{
$query = "SELECT * FROM prdct_categories WHERE slugs = '$title_cat'";
$result = mysqli_query($dbc, $query);
$row = mysqli_fetch_assoc($result);
$titleslug = $row['subgroup'];
} elseif(isset($title_prod))
{
$query1 = "SELECT * FROM prdct_categories WHERE product = '$title_prod'";
$result1 = mysqli_query($dbc, $query1);
$row = mysqli_fetch_assoc($result1);
$titleslug = $row['product'];
} elseif(!isset($title_prod) OR !isset($title_cat) OR isset($title_prod)=='' OR isset($title_cat)=='')
{
$titleslug = 'Home';
}
return $titleslug;
mysqli_close($dbc);
}
?>
<title><?php echo title($dbc); ?></title>
提前感谢您的调查。
我猜isset($title_prod)==''
应该$title_prod == ''
和 isset($title_cat)==''
应该是$title_cat
== ''。
您不能像这里那样将isset
与空字符串进行比较:
OR isset($title_prod)=='' OR isset($title_cat)==''
isset
返回一个布尔值。
在以下情况下,您应该执行此操作:
elseif(!isset($title_prod) OR !isset($title_cat) OR $title_prod=='' OR $title_cat=='')
你的第三个条件有一个小错误:
elseif(!isset($title_prod) OR !isset($title_cat) OR isset($title_prod)=='' OR isset($title_cat)=='')
isset()
返回一个布尔值,这意味着这些条件之一永远不会为真isset($title_prod)=='' OR isset($title_cat)==''
我想你的意思如下:[...] OR $title_pord == "" OR $title_cat == ""
我用下面的标题标签更改修复了它;
<title><?php if(title($dbc) != null){echo title($dbc)." | ".'Upperbit';}else echo "Home" ." | ".'Upperbit'; ?></title>
以及建议的上述更改。也许我不需要第三个条件
假设您已经按照正确的isset
语法以这种方式更改了脚本:
elseif(!isset($title_prod) OR !isset($title_cat) OR $title_prod=='' OR $title_cat=='')
但是,您的脚本会产生意外的结果,因为如果,即$title_cat==''
,第一个if
语句被计算为True
:
if( isset($title_cat) )
您必须以这种方式更改代码:
if( $title_cat )
{
(...)
}
elseif( $title_prod )
{
(...)
}
else
{
(...)
}