将选择下拉列表发送到另一个选择下拉列表

时间:2012-07-25 18:10:53

标签: php javascript jquery mysql

我正在建立一个网站来学习编码,我正在制作2个选择下拉列表,其中1个将从数据库表中填充 - >猫。另一个选择下拉列表将从表格中填充 - > SUBCAT。 cat和subcat的数据库如下所示:

表格猫

id(int 15)||猫(varchar 75)|| number(int 3)

表Subcat

id(int 15)|| subcat(varchar 75)|| catnumber(int 3)

每个subcat行都有一个与cat中的行对应的catnumber - >数。因此,例如,如果我们在Cat中有一排数量为2的餐馆,那么如果我们还有美国食品和中国食品的数量为2,那么它们就相应了。

这是我的所有3个猫下拉列表中的数据库退出的代码。

<p><b>Cat1:</b><br />
<?php
  $query="SELECT id,cat FROM cat";
  $result = mysql_query ($query);
  echo"<select name='cselect1' class='e1'><option value='0'>Please Select A Category</option>";
  // printing the list box select command
  while($catinfo=mysql_fetch_array($result)){//Array or records stored in $nt
  echo "<option value=\"".htmlspecialchars($catinfo['cat'])."\">".$catinfo['cat']."</option>";

  }

  echo"</select>";
?>

<!-- Next CAT -->

<p><b>Cat2:</b><br />
<?php
  $query="SELECT id,cat FROM cat";
  $result = mysql_query ($query);
  echo"<select name='cselect2' class='e1'><option value='0'>Please Select A Category</option>";
  // printing the list box select command
  while($catinfo=mysql_fetch_array($result)){//Array or records stored in $nt
  echo "<option value=\"".htmlspecialchars($catinfo['cat'])."\">".$catinfo['cat']."</option>";

  }

  echo"</select>";
?>

<!-- Next CAT -->

<p><b>Cat3:</b><br />
<?php
  $query="SELECT id,cat FROM cat";
  $result = mysql_query ($query);
  echo"<select name='cselect3' class='e1'><option value='0'>Please Select A Category</option>";
  // printing the list box select command
  while($catinfo=mysql_fetch_array($result)){//Array or records stored in $nt
  echo "<option value=\"".htmlspecialchars($catinfo['cat'])."\">".$catinfo['cat']."</option>";

  }

  echo"</select>";
?>

这是我的所有3个 subcat 下拉列表退出数据库的代码

<p><b>Subcat1:</b><br />
<?php
  $query="SELECT * FROM subcat WHERE catnumber='1' ";
  $result = mysql_query ($query);
  echo"<select name='sselect1' class='e1'><option value='0'>Please Select A Category</option>";
  // printing the list box select command
  while($catinfo=mysql_fetch_array($result)){//Array or records stored in $nt
  echo "<option value=\"".htmlspecialchars($catinfo['subcat'])."\">".$catinfo['subcat']."</option>";

  }

  echo"</select>";
?>
<p><b>Subcat2:</b><br />
<?php
  $query="SELECT id,subcat FROM subcat WHERE catnumber='1' ";
  $result = mysql_query ($query);
  echo"<select name='sselect2' class='e1'><option value='0'>Please Select A Category</option>";
  // printing the list box select command
  while($catinfo=mysql_fetch_array($result)){//Array or records stored in $nt
  echo "<option value=\"".htmlspecialchars($catinfo['subcat'])."\">".$catinfo['subcat']."</option>";

  }

  echo"</select>";
?> 
<p><b>Subcat3:</b><br />
<?php
  $query="SELECT id,subcat FROM subcat WHERE catnumber='1' ";
  $result = mysql_query ($query);
  echo"<select name='sselect3' class='e1'><option value='0'>Please Select A Category</option>";
  // printing the list box select command
  while($catinfo=mysql_fetch_array($result)){//Array or records stored in $nt
  echo "<option value=\"".htmlspecialchars($catinfo['subcat'])."\">".$catinfo['subcat']."</option>";

  }

  echo"</select>";
?>

所以现在所有的subcat选择都试图得到数量为1的猫的所有子类别(即餐馆)。如何获取cat上选择的任何内容(不刷新页面)相应的subcat选择显示相应的catcat列表中的cat?

^非常抱歉做一个可怕的工作来解释它。最后我基本上想要它像Yelps - &gt; here

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

您需要进行ajax调用以在后台查询数据库,然后返回结果(以HTML格式)并填充子类别select。

<select name="cat" id="cat">...</select>
<select name="subCat" id="subCat">...</select>

<script language="javascript">
    $('#cat').change(function() {
        $.post('getSubcat.php', {
           cat: $(this).val()
        }, function(data) {
            $("#subCat").html(data);
        }
    });
</script>

确保您的getSubcat.php脚本以

的形式回显结果
<option value='whatever'>Label</option>
<option value='whatever2'>Label2</option> ...

getSubcat.php将是一个简单的查询/输出脚本:

<?php
$category = $_POST['cat'];

$query = "SELECT * FROM subcategories WHERE parent_category = " . $category;
$result = mysql_query($query);

echo "<option value='0'>Select a subcategory</option>";
while($row = mysql_fetch_array($result)) {
    echo "<option value='" . $row['id'] . "'>" . $row['subcategory_name'] . "</option>";
}

注意:这使用jQuery - 确保您的页面包含jQuery库

<script src="http://code.jquery.com/jquery-latest.min.js"></script>