2014-07-20 38 views
0

在學習PHP,Html和twitter-bootstrap(v2.3.2)。我試圖根據GET收到的值顯示一條消息。顯示特定的警報,取決於在PHP中的值GET

我有兩個警報在網站的不同部分,我想根據GET顯示收到的值之一。不是都。

即:http:localhost/test.php?load = lannister,應顯示消息:「Lannister總是支付他的債務」。然而,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> 

我知道這是一個愚蠢的問題,但我一直在想該怎麼做了好幾個小時沒有任何成功。在此先感謝

+0

將'$ load'更改爲:'$ load = isset($ _ GET ['load'])? $ _GET ['load']:null;' –

回答

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; 

既然你設置$loadnull如果它不存在/空。你可以這樣測試:

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>"; 
0

嘗試清理代碼少量使生活更輕鬆。

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

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

P.S.你也可以在你的案例中實現你的所有行動。 – jjonesdesign