我创建了两个链接,我希望页面内容能够改变.问题是URL更改但不是页面内容.
<h3>Filter Results</h3>
<p><a href="index.php?filter='Action'>Action</a></p>
<p><a href="index.php?filter='Comedy'">Comedy</a></p>
Run Code Online (Sandbox Code Playgroud)
if (isset($_GET['filter']) == 'Action') {
echo 'Action';
}
else if (isset($_GET['filter']) =='Comedy') {
echo 'Comedy';
}
Run Code Online (Sandbox Code Playgroud)
它总是输出第一个链接信息"Action".
您的链接有问题:
<p><a href="index.php?filter=Action">Action</a></p>
<p><a href="index.php?filter=Comedy">Comedy</a></p>
<!-- ^ ^ No single quotes (' ') -->
Run Code Online (Sandbox Code Playgroud)
此外,isset()将返回一个布尔值(true或false;根据是否设置变量).您将布尔值与字符串进行比较,字符串将始终转换为TRUE(除非字符串为"false"或类似),因此基本上,如果设置了变量,则第一个条件将始终匹配.
你要
if (isset($_GET["filter"]) && $_GET["filter"] === "Action")
Run Code Online (Sandbox Code Playgroud)
注意使用===,这将确保变量完全符合您的想法,而不是某种其他类型变量.
如果有多个可能的过滤器,请检查变量是否存在一次,并使用switch/case块来确定它们中的哪一个:
if(isset($_GET['filter'])) {
switch($_GET['filter']) {
case 'Action':
echo 'Action';
break;
case 'Comedy':
echo 'Comedy';
break;
}
}
Run Code Online (Sandbox Code Playgroud)该函数isset仅检查变量是否存在!它不会返回它的价值!试试这个:
<h3>Filter Results</h3>
<p><a href="index.php?filter=Action">Action</a></p>
<p><a href="index.php?filter=Comedy">Comedy</a></p>
Run Code Online (Sandbox Code Playgroud)
if(isset($_GET['filter']) && $_GET['filter'] == 'Action'){
echo 'Action';
}
else if(isset($_GET['filter']) && $_GET['filter'] == 'Comedy') {
echo 'Comedy';
}
Run Code Online (Sandbox Code Playgroud)
此外,使用switch可能会在未来使事情变得更容易:
<h3>Filter Results</h3>
<p><a href="index.php?filter=Action">Action</a></p>
<p><a href="index.php?filter=Comedy">Comedy</a></p>
Run Code Online (Sandbox Code Playgroud)
if(isset($_GET['filter'])) {
switch($_GET['filter']) {
case 'Action':
echo 'Action';
break;
case 'Comedy':
echo 'Comedy';
break;
}
}
Run Code Online (Sandbox Code Playgroud)