2013-07-26 97 views
1

從本質上講,我完全新的PHP - 使用Dreamweaver CS6(它的一切我都)PHP如何顯示隱藏DIVS基於查詢字符串值

我得查詢字符串(someurl的價值。 COM/ID =東西)。 我得到的價值後,我需要顯示一個基於ID的div。

雖然我知道真的沒有任何真正的「頁面加載」事件的PHP,我想要打開頁面時它。

那麼,我該如何做到這一點?

我開始用這樣的:

<?php 
    $stringId = $_GET['id'] 
    ?> 

    <script language="javascript">  
     document.getElementById('$stringId').style.display = "block"; 
    </script> 
    <? 
?> 

因爲我沒有一臺服務器的設置,將這樣的工作? 你會建議別的嗎? 我完全錯了嗎?

任何輸入,將不勝感激。 謝謝。

+5

退房WAMP,XAMP等,並得到一個測試環境去。你需要一個... –

+0

嘗試使用jquery slideToggle() –

+0

1)我在做這個工作,我必須讓IT爲我做,但我會嘗試。 (謝謝) 2)jquery slideToggle() - 我會檢查出來。 (謝謝) –

回答

2

您應該設置內聯樣式,而不依賴於JavaScript,因爲某些用戶可能已關閉了javascript。

<div <?php if($_GET['id'] == 'X'){ ?>style="display: block;"<?php } ?>> 
    your div content 
</div> 

與其他的要求

<div style="<?php if($_GET['id'] == 'X'){ ?>display: block;<?php } else { ?>display: none;<?php } ?"> 
    your div content 
</div> 

你也可以使用一個預先定義的CSS類

根據您關於有辦法很多做一個開關評論,如果您需要混了只需插入此

<script language="javascript">  
    document.getElementById('<?php echo $_GET['id']; ?>').style.display = "block"; 
</script> 
+0

嗯...也許... –

+0

如果我們有一個「其他」在那裏呢?就像一個好奇心...... –

2

它應該是這樣的:

<?php 
switch($_GET['id']) { 
    case 'asdf': 
     echo '<div>ASDF in QS</div>'; 
     break; 
    case 'bcd': 
     echo '<div class="some-class-because-i-can">something else</div>'; 
} 

你不能簡單地將JavaScript與PHP混合。

當然,您需要服務器設置,建立在php(http://php.net/manual/en/features.commandline.webserver.php)服務器應足以滿足您的需求。

+0

有太多的事情要做,但這是一個很酷的想法。 –

+1

我可能不得不將它用於我正在考慮的其他內容......所以,感謝您收集這些內容。 :-) –

0

是的,你可以在javascript/jquery中引用php變量。確保在你的代碼中放入一個echo語句。

<?php 
     if(is_numeric($_GET['id'])) $stringId = $_GET['id']; 
     // good eye Agares 
    ?> 

    <script language="javascript">  
     document.getElementById('<?php echo $stringId; ?>').style.display = "block"; 
    </script> 
    <? ?> 

這應該可以正常工作。

雖然我建議使用jQuery顯示/隱藏。 jQuery通常更加靈活。

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js" > 
</script> 
<script> 
$(document).ready(function() { 

     $('#<?php echo $stringId; ?>').show(); 
    } 
</script> 
+0

我不會推薦這樣做,因爲: a)javascript(不需要)開銷 b)如何轉義該值? – Agares

+0

@ Agares gooooood眼睛! xss漏洞數日!我會在逃跑中編輯! – XaxD

2

PHP是服務器端的腳本語言,這意味着它只能運行在服務器(任何輸出所呈現的用戶屏幕上),這就是說,你需要一個本地服務器像WAMP XAMP調試/運行代碼上。

你試圖做的是不會工作正如我前面提到的那樣,PHP在服務器上執行,並且Javascript在瀏覽器中運行,當您的JavaScript代碼運行時,變量$ stringID不會出現。

當PHP可以渲染該元素並僅顯示該元素時,爲什麼還要隱藏具有url ID的元素。

<?php 
    if(isset($_GET['id'])) { //checks weather the link has data in the id field 
     $stringId = $_GET['id']; 

     echo "<div> content here </div>"; //anything you echo will be rendered in the 
             //pages source code be it HTML, Javascript etc. 
    } 
>? 

如果不想從jQuery的刷新頁面使用AJAX(google一下:d)來從PHP這個數據

+0

你提出了一個很好的觀點。但是我的每個div都有多達15行的信息,而我有大約20個div。這將需要永遠,大聲笑。這就是爲什麼我想這樣做的原因。但是,嘿,這給了我另一個頁面我有另一個想法 - 所以謝謝你! :-) –