根据php中GET的值显示特定的警报



我正在学习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
}

最新更新