PHP选择列表以驱动表格显示

时间:2012-01-06 05:06:48

标签: php select options

我很难搞清楚如何选择列表来驱动表中返回的内容。方案中,有一个项目列表,等待您的用户有权访问项目子集的项目。

以下是一些代码:

查询:

$q = "SELECT DISTINCT projectid, projectname FROM projects where active=1";

选择列表构建:

//variable for projects list select list name
$dropdown = "Projects Lists \n <select name=\"ProjectsLists\">";

//loop results
while ($row = mysql_fetch_assoc($result)){
$dropdown .= "\r\n<option value='{$row['projectid']}'>{$row['projectname']}</option>";
}//end while

$dropdown .= "\r\n</select>";

echo $dropdown;

然后我想要做的是显示从选择列表被选中时需要运行的查询返回的项目:

$s_query = "SELECT contentname, contentlocation FROM projectscontent WHERE projectname=<select list value>";

我无法确定是否可以捕获所选值。如果是这样,怎么样?我以为我可以做$_GET['selectlistname'];,但我不认为这是对的。

3 个答案:

答案 0 :(得分:1)

你必须使用jquery事件.change()这可以帮助你获得你想要的东西 例如:

  1. 在您添加ID选择选项
    $dropdown = "Projects Lists \n <select id=\"mylist\" name=\"ProjectsLists\">";
  2. 现在jquery使用这样的东西:

    $('#mylist').change(
      //provide you selected value
      var proName = $(this).val();
    
      //call ajax
      $.ajax({
       url: 'queryPage.php',
       data: 'proName=' + proName,
       success: function(data){
          $('#result').html(data);
       }
      });
    );
    

    queryPage.php:

    //$_REQUEST['proName'] provide you select product name
    $productname = mysql_real_escape_string( $_REQUEST['proName'] );
    
    // Now start your query
    $s_query = "SELECT contentname, contentlocation FROM projectscontent 
                WHERE projectname='$productname' ";
    

    现在开始运行查询并在同一页面上回显结果,这会将数据返回到您调用queryPage.php的页面。

答案 1 :(得分:1)

我个人使用jQuery DataTables来表示此类功能。我生成一个下拉列表或一组下拉列表,然后点击一个按钮我更新了我的DataTable元素。有几个关于如何在网站上执行此操作的教程。

但是,我有点担心,你的桌子有点不稳定。这应该非常简单,可能需要比您告诉我们更多的表格。如果我使用上面显示的结构,我会亲自将我的两张桌子链接到projectid上。然后,我添加一个附加表(通过userid上的内部联接)链接users.userid,permissions和projectid。这将在上面示例中的第二个查询中查询以处理权限。

当我生成下拉列表时,我也保持这么简单。每个<option>都有一个值= projectid,显示值将是项目名称。在更改列出项目的select元素时,我会运行一个查询(最好是ajax)来获取所有项目详细信息,并使用where子句加入权限,以根据权限将结果限制为用户。不需要做异国情调&#34;合并&#34;价值观等。

答案 2 :(得分:-1)

如果您的下拉列表使用如下语法:

<option value="1||This is my name">This is my name</option>

然后你可以简单地爆炸()数据来获得ID和名称。

$input = $_POST['field']; // or $_GET['field']
explode('||', $input);

嗯,显然这有一些安全漏洞。我建议您使用ID简单地提取选项的名称。那会更安全。