2011-08-02 96 views
1

我有一個ID,名字,狀態和表上方的表我想要4個鏈接,閱讀所有,熱,溫暖,冷。通過點擊鏈接,下面的表格將只顯示狀態=熱的用戶。最好是在php中創建新頁面以顯示所有用戶的相應狀態,或者是否有更好的方法來完成它,以便它們全部在單個頁面上完成?最好的方式來顯示數據

預先感謝您!

+0

JavaScript會爲你工作嗎? (這是誰的?你會擔心人們禁用JavaScript?) – jswolf19

+0

我可以使用java,沒有人會禁用它 – Josh

回答

-1

你應該只在單個頁面上做..這是最好的做法。 我相信你是在按鈕的點擊刷新頁面,然後 你應該火的查詢中,你將不得不條件

$sql = "SELECT * FROM TABLE WHERE 1=1".(isset($_REQUEST['status'])? " AND status = '".$_REQUEST['status']."'":""); 
+2

這是相當開放的SQL注入,如果你使用這種方法確保你至少逃脫$ _REQUEST變量,然後在查詢中使用它們。 – phindmarsh

1

使用JavaScript會回落到多少條記錄,你會立即有顯示的決定。如果你在該表中有一行lot,那麼你的HTML會變得相當大,並且用JS來操縱它將花費很多資源。

如前所述,我會建議傳遞參數給PHP腳本,用正確的狀態進行篩選用戶,類似於下面的內容:

HTML

<div class="filter-status"> 
    <a href="/script.php?status=all">All</a> - 
    <a href="/script.php?status=hot">Hot</a> - 
    <a href="/script.php?status=warm">Warm</a> - 
    <a href="/script.php?status=cold">Cold</a> 
</div> 

PHP腳本

// check the status is set in the arguments, and that its something we expect 
if(isset($_GET['status']) 
    && in_array($_GET['status'], array('all', 'hot', 'warm', 'cold'))){ 
    $status = $_GET['status']; 
} 
else { 
    $status = 'all'; // default to show all rows 
} 

// get the rows from the database based on the status 
$query = "SELECT * FROM table "; 
if($status !== 'all') 
    $query .= "WHERE status = '".$status."'"; 

$query .= ';'; 

// do your mysql query as normal 

然後,如果您的腳本位於www.domain.com/script.php您可以通過訪問www.domain.com/script.php?status=hot來過濾所有熱點。

+0

您的代碼已廣泛用於SQL注入。例如,'script.php?status =; TRUNCATE TABLE table' –

0

對於這種情況,你可以做兩件事情,

  1. 您可以使用JavaScript來獲取每行的「狀態」 TD的價值,只有顯示這些行。

  2. 您可以使用PHP和Ajax從不同的頁面獲取該內容,並讓jQuery(因爲它更舒適,然後使用普通ol'javascript)來獲取結果。

我將使用選項#2,因爲在較大的表上您可能想要限制結果或節省資源,這會更好。

/* JavaScript */ 
//NOTE THIS IS JQUERY, NOT REGULAR JAVASCRIPT! 
//YOU MUST INCLUDE THE JQUERY LIBRARY BEFORE USING THIS! 

$(document).ready(function() { //When DOM is ready. 
    $table = $('#status-table'); //Cache the table, no need to select it every time. 
    $('a.status').click(function() { //Add click handler, "when the link is clicked.." 
     status = $(this).text(); //Status = the text it has <a>TEXT</a> 
     $.get(
      "filter-status.php", //Target 
      'status='+status, //Data 
      function(data) { //Callback 
       $table.hide().empty().append(data).slideDown(); 
      } 
     ); 
    }) 
}) 

並讓PHP爲表生成行。

相關問題