使用PHP和SQL创建包含子项的列表

时间:2011-12-30 16:47:26

标签: php

我目前面临两难选择。我正在尝试构建一个菜单,它将显示数据库中的数据数组。然后,用户将从该列表中选择一个项目,基于此,我需要进行数据库调用以检索与之关联的数据。这是我当前的代码。

function foobar() {
  $first_option_sql = "SELECT * from {location} l ORDER BY name ASC";
  $list_first_option = db_query($first_option_sql);

  $output .= "<p><b>Please select the primary location that you would like to check.</b><p>"
  $output .= "<br><b>Location: </b> <select id='list'><option>Available locations</option>";

  while($first_option_available = db_fetch_object($list_first_option)){
    $output .="<option locationid='$first_option_available->lid'>".$first_option_available->name."</option>";
  }

  $output .="</select><input type=submit value='Search'>";
  $output .="<p><b>Children: </b><select id='child'><option selected='yes'>Available children</option><p>";

  $children_available_sql = "SELECT complexquery WHERE lid='%d' ORDER BY l.name ASC";
  $list_children = db_query($children_available_sql);

  while($children_available = db_fetcj_object($list_children)){
    $output .="<option>".$children_available->name."</option>";
  }

  return $output;

}

这里的问题是使用这个代码,我无法检索所选“第一个选项”的值,因此第二个查询从未实际发生;这不会填充第二个列表。

我在考虑使用AJAX或Javascript,但我对这两者都不太熟悉。因此,我想知道如何能够执行此操作。

1 个答案:

答案 0 :(得分:1)

首先,您的HTML无效或只是缺少详细信息。

您的选择框需要一个名称元素:

<select name="lid" id='list'>

提交表单时,locationid无效:

<option locationid='$first_option_available->lid'>

您需要一个值属性:

<option value='$first_option_available->lid'>

使用正确的HTML,$ _POST ['lid']将是您想要的位置ID。您可以将其传递给您的函数:

$menu = foobar($_POST['lid']);

function foobar($lid) {
    //...
}