最好的方式来显示数据

最好的方式来显示数据

问题描述:

我有一个ID,名字,状态和表上方的表我想要4个链接,阅读所有,热,温暖,冷。通过点击链接,下面的表格将只显示状态=热的用户。最好是在php中创建新页面以显示所有用户的相应状态,或者是否有更好的方法来完成它,以便它们全部在单个页面上完成?最好的方式来显示数据

预先感谢您!

+0

JavaScript会为你工作吗? (这是谁的?你会担心人们禁用JavaScript?) – jswolf19

+0

我可以使用java,没有人会禁用它 – Josh

你应该只在单个页面上做..这是最好的做法。 我相信你是在按钮的点击刷新页面,然后 你应该火的查询中,你将不得不条件

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

这是相当开放的SQL注入,如果你使用这种方法确保你至少逃脱$ _REQUEST变量,然后在查询中使用它们。 – phindmarsh

使用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
+0

已注册并更正,谢谢 – phindmarsh

+0

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

对于这种情况,你可以做两件事情,

  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为表生成行。