【问题标题】:PHP Select List To Drive Table DisplayPHP选择列表驱动表显示
【发布时间】:2012-02-03 22:24:09
【问题描述】:

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

这里有一些代码:

查询:

$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'];,但我认为这是不对的。

【问题讨论】:

    标签: php select options


    【解决方案1】:

    你必须使用 jquery 事件.change() 这将帮助你实现你想要的。
    例如:

    1. 在您的选择选项中添加一个 ID
      喜欢$dropdown = "Projects Lists \n &lt;select id=\"mylist\" name=\"ProjectsLists\"&gt;";

    现在用 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的页面。

    【讨论】:

    • 所以我尝试了您的示例 jogesh_p。我的 jquery 经验非常有限。所以我所做的是,将 id="plist" 添加到选择中。在下一个 im' 定义一个 div,并在我放置的那个 div 中,
    • 我什至没有收到指示我进入函数的警报。我不确定处理程序是由我自己定义的,还是位于正确的位置。我假设它与“id”相关联,因此它不必直接跟随 ,对吗?
    • 在玩了这个之后我走了一点不同的路线。我在选择列表定义中添加了一个 onchange 函数。调用 jquery/ajax 东西所在的函数。我现在看到警报了 :)
    【解决方案2】:

    我个人将jQuery DataTables 用于此类功能。我生成一个下拉列表或一组下拉列表,然后单击按钮更新我的 DataTable 元素。网站上有几个关于如何做到这一点的教程。

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

    当我生成我的下拉列表时,我也保持简单。每个&lt;option&gt; 都有一个值 = projectid,显示的值是项目名称。在更改列出项目的选择元素时,我会运行一个查询(最好是 ajax),让我自己将所有项目详细信息与where 子句的权限结合起来,以根据权限将我的结果限制为用户。无需做异国情调的“合并”值等。

    【讨论】:

      猜你喜欢
      相关资源
      最近更新 更多
      热门标签