2011-05-21 64 views
2

我有一個菜單下面的代碼中提到的href ...如果條件在PHP

<ul class="left_menu"> 
    <li class="odd"><a href=\"?x=nk\">NOKIA</a></li> 
    <li class="even"><a href="services.html">SONY ERISSON</a></li> 
    <li class="odd"><a href="services.html">LG</a></li> 
    <li class="even"><a href="services.html">ALCATEL</a></li> 
    <li class="odd"><a href="services.html">BIRD</a></li> 
    <li class="even"><a href="services.html">SAMSUNG</a></li> 
    <li class="odd"><a href="services.html">DO MOBILE</a></li> 
    <li class="even"><a href="services.html">iPHONE</a></li> 
    <li class="odd"><a href="services.html">ETEL</a></li> 
    <li class="even"><a href="services.html">HTC</a></li> 
    <li class="odd"><a href="services.html">BLACKBERRY</a></li> 
    <li class="even"><a href="services.html">I-MATE</a></li> 
    <li class="odd"><a href="services.html">VODAFONE</a></li> 
    </ul> 


<?php 
$page = $_GET['x']; 
    switch ($page) 
    { 
    case "nk": 
    include("nokia.php"); 
    break; 

case "SONY ERISSON": 
    include("sony_erisson.php"); 
    break; 

case "LG": 
include("lg.php"); 
    break; 

case "ALCATEL": 
    inlcude("alcatel.php"); 
    break; 

case "BIRD": 
include("bird.php"); 
    break; 

case "SAMSUNG": 
    include("samsung.php"); 
    break; 

case "DO MOBILE": 
    include("do_mobile.php"); 
    break; 

case "iPHONE": 
    include ("iphone.php"); 
    break; 

case "ETEL": 
    include ("etel.php"); 
    break; 

case "HTC": 
    include ("htc.php"); 
    break; 

case "BLACKBERRY": 
    include ("blackberry.php"); 
    break; 

case "I-MATE": 
include ("imate.php"); 
    break; 

case "VODAFONE": 
include ("vodafone.php"); 
    break; 


default: 
    include("default.php"); 
} 
?> 

現在我需要做的是..我需要包括每一個頁面的內容,一旦用戶點擊特定的電話類別。我只需要做..現在讓我們說..如果諾基亞是點擊..然後我需要包括nokia.php內容到這個頁面,這是index.php ..我怎麼做tihs?我上面寫了一些代碼..但它不工作..任何人都可以幫助我..

+2

如果我明白你的意思,你需要做的就是將所需的GET值添加到你的鏈接中。例如:services.html?x = catname – 2011-05-21 19:17:18

回答

1

那些反斜槓在你的代碼中做什麼? ;)

<a href=\"?x=nk\">

如果刪除它們,也許它會工作

+0

以及我試過..它抽了這個錯誤消息:未定義的索引:x在C:\ wamp \ www \ mobile \ index.php在行156上,這是156行的代碼:'$ page = $ _GET ['x'];' – user755673 2011-05-21 19:30:18

+1

add'if(isset($ _GET ['x'])){your rest of your code}'你看到這個錯誤,因爲在你點擊之前$ _GET爲空諾基亞 – 2011-05-21 19:35:29

+0

我試過你的代碼。這是我怎麼做。'if(isset($ _GET ['x'])){my code} else {echo'GET is not set'; }'因此,我能夠看到「GET未設置」,這意味着我的$ _GET ['x']不具有值。我怎麼才能得到' NOKIA'的價值'一旦用戶點擊我需要閱讀的內容nokia.php到我的index.php這就是爲什麼我需要得到的價值' NOKIA' – user755673 2011-05-22 10:59:06

1

你不需要逃避HTML報價:

<li class="odd"><a href="?x=nk">NOKIA</a></li> 

,但如果你從一個HTML reffering你不能在其中運行php代碼。你必須有文件的php擴展才能運行它。

+0

好吧,我試過..它在第156行的C:\ wamp \ www \ mobile \ index.php中添加了這個錯誤信息:未定義的索引:x,這是第156行的代碼:$ page = $ _GET ['x']; – user755673 2011-05-21 19:27:41

+0

請檢查它.. – user755673 2011-05-21 19:34:16

+0

當你收到你的錯誤時,你的網址是如何顯示的?正確的網址必須是「... /?x = nk」 – Headshota 2011-05-21 19:42:07

1

可以減少你這樣的代碼:

$x = $_GET['x']; // the name of the file 
if (isset($x)) { 
    $filename = "/path/to/".$x.".php"; 
    if (file_exists($filename)) { 
     include($filename); 
    } 
    else { 
     include("default.php"); 
    } 
} 
+0

不太好,isset檢查得太晚(錯誤)並且很容易用這種代碼破解(你不檢查$ x中的內容) – 2011-05-21 20:37:47

+0

因爲這只是一個例子;) – 2011-05-21 20:41:20

0

我也同意瓦西里。

嗯,我認爲整個事情需要重新設計(只是我的觀點),建立一個網站沒有一個單一的入口點讓我想起很多很多以前..在運行中,你將面臨許多方面的缺點。

如果你不能承諾一個MVC,至少用舊式的單入口點這種方式,你只需要在一個地方加載一次。

這意味着你永遠不會直接調用文件是這樣的:

<a href=somescript.php>Click me</a> 

insted的你做

<a href=index.php?scr=somescript>Click me</a>如右圖如上所述。


但是如果你不知道的東西是向前發展......

- 你可以甚至無需刷新頁面加載PHP腳本的結果(如數據庫查詢或其他),我用它很多html格式[http xml連接GET或POST - 我使用POST自己]

- 您甚至可以加載css文件或腳本或更改頁面內容而無需再次刷新頁面。

- 可以使用MVC有事情做esaily和受控

- 能在飛行在你的代碼隨時隨地創建CSS用PHP

- 可以輸出任何東西甚至取消先前的字符串輸出中或取消以前css或js之前加載的,而不涉及如何以及在哪裏顯示所有這些內容。把它想象成一個巨大的管道,任何腳本都會添加或刪除東西,最終所有這些都會得到迴應。 MVC模式是與它相關的一些關鍵字。

只要時間允許實施新技術,我認爲這是值得的。

+0

請更多的解釋。高度讚賞你的評論。 – user755673 2011-05-22 10:49:48