我正在学习PHP, Html和twitter-bootstrap (v2.3.2)。我正在尝试根据GET接收到的值显示一条消息。
我在网站的不同部分有两个警报,我想根据GET收到的值显示一个或另一个。不是。
。艾凡:http: localhost/test.php吗?load=兰尼斯特,应该显示这样的信息:"兰尼斯特家的人总是会还债的。"但是,url: http:localhost/test.php?Load =stark,应该显示信息:"你什么都不知道John snow"。但是我不知道怎么做,我需要一个帮手,我认为它可以用if-else来完成,但我根本不明白怎么做。什么好主意吗?
下面是代码: <?php session_start();?>
<!DOCTYPE html>
<html>
<head>
<title>Testing</title>
<!-- Obtain Bootstrap style sheet from CDN (online service) so it doesn't have to be on my machine -->
<link href="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.2.2/css/bootstrap-combined.min.css" rel="stylesheet" media="screen">
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script type="text/javascript">
window.setTimeout(function() {
$("#alert_message").fadeTo(500, 0).slideUp(500, function(){
$(this).remove();
});
}, 2000);
</script>
<script type="text/javascript">
window.setTimeout(function() {
$("#alert_message2").fadeTo(500, 0).slideUp(500, function(){
$(this).remove();
});
}, 2000);
</script>
</head>
<body>
<?php
$load = $_GET['load'];
switch ($load) {
case "stark":
$message="you know nothing john snow";
break;
case "lannister":
$message="A Lannister always pays his debts";
break;
}
?>
<?php
if ($load==='stark'){
echo "<div id="alert_message" class="alert alert-error">
<div id="alert_placeholder" align="center" style="color:#FFFFFF;font-size: 0.9em;">".$message."</div>
</div>";
} else{
?>
<div class="container">
<div class="container">
<h1>Bootstrap CDN starter template using boostrapcdn.com</h1>
<p>Use this document as a way to quick start any new project.<br>
All you get is this message and a barebones HTML document.</p>
</div> <!-- /container -->
<?php
echo "<div id="alert_message2" class="alert alert-error">
<div align="center" style="color:#FFFFFF;font-size: 0.85em;" >".$message."</div>
</div>";
}?>
</div>
</body>
</html>
我知道这是一个愚蠢的问题,但是我已经思考了好几个小时了,怎么做都没有成功。提前感谢
您使用switch语句是正确的,但正如@true在他的评论中所述,您应该检查以确保变量已设置而不是空。
你可以用长/短书写:
// long
if(isset($_GET['load']) && !empty($_GET['load'])) {
$load = $_GET['load'];
} else {
$load = null;
}
//short
$load = (isset($_GET['load']) && !empty($_GET['load'])) ? $_GET['load'] : null;
如果$load
不存在/为空,则将其设置为null
。你可以这样测试:
if($load == NULL) {
// message is error because neither stark/lannister selected
} else {
switch($load) {
case "stark":
//do start stuff here
break;
case "lannister":
// do lannister stuff here
break;
}
}
现在是最后一部分。这段代码:
if ($load==='stark'){
echo "<div id="alert_message" class="alert alert-error">
<div id="alert_placeholder" align="center" style="color:#FFFFFF;font-size: 0.9em;">".$message."</div>
</div>";
}
不需要。(不需要if
条件)因为您已经在switch
语句中做了调节工作,设置了将在告警框中显示的消息。这意味着你在你的标记中有一个回声!
echo "<div id="alert_message" class="alert alert-error">
<div id="alert_placeholder" align="center" style="color:#FFFFFF;font-size: 0.9em;">".$message."</div>
</div>";
试着稍微清理一下代码,让您的工作更轻松。
<?php if($_GET){
$load = isset($_GET['load']) ? $_GET['load'] : null;
}
if ($load == "stark") {
//ECHO
}
elseif ($load == "lannister") {
//echo
}
else {
//default
}