显示特定警报,具体取决于PHP中GET的值

时间:2014-07-20 23:15:06

标签: php twitter-bootstrap get

我正在学习PHP,Html和twitter-bootstrap(v2.3.2)。我正在尝试根据GET收到的值显示消息。

我在网站的不同部分有两个警报,我希望根据GET显示的值显示一个或另一个。不是两个。

即:http:localhost / test.php?load = lannister,应该显示消息:“兰尼斯特总是偿还债务”。但是,网址:http:localhost / test.php?load = stark,应该显示消息:“你什么都不知道约翰雪”。但我无法想象如何做到这一点,我需要一只手,我认为可以用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>

我知道这是一个愚蠢的问题,但我一直在考虑如何在没有任何成功的情况下持续数小时。提前致谢

2 个答案:

答案 0 :(得分:1)

您在使用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>";

答案 1 :(得分:0)

尝试少量清理代码,让您的生活更轻松。

<?php if($_GET){
    $load = isset($_GET['load']) ? $_GET['load'] : null;
}

if ($load == "stark") {
    //ECHO
} 
elseif ($load == "lannister") {
    //echo
}
else {
    //default
}