我目前有这个表格 - 下面是其中的一个片段:
<li>
<label for="Catid">Pick a Category:</label>
<select name="Catid">
<?php
$Products = New Products();
$Products->form_Cat_Picker();
?>
</select>
</li>
<li>
<label for="Subcatid">Sub Category:</label>
<select name="Subcatid">
<?php
$Products = New Products();
$Products->form_Subcat_Picker();
?>
</select>
好的,然后这将发送到 products.php,它在 products 类中执行以下操作:
function form_Cat_Picker() {
$mysqli = new mysqli(DB_SERVER, DB_USER, DB_PASSWORD, DB_NAME);
if (!$mysqli) {
die('There was a problem connecting to the database.');
}
$catPicker = "SELECT Catid, Catname
FROM ProductCats
ORDER BY Catid";
if ($Result = $mysqli->query($catPicker)){
if (!$Result) {
echo 'Could not run query: ' . mysql_error();
exit;
}
else {
$Result = $mysqli->query($catPicker);
}
while ($row = $Result->fetch_assoc()) {
echo '<option value="'.$row["Catid"].'">'.$row["Catname"]."</option>";
}
}
$mysqli->close();
}
function form_Subcat_Picker() {
$mysqli = new mysqli(DB_SERVER, DB_USER, DB_PASSWORD, DB_NAME);
if (!$mysqli) {
die('There was a problem connecting to the database.');
}
$catPicker = "SELECT Subcatid, Subcatname, Parentid
FROM ProductSubCats
ORDER BY Subcatid";
if ($Result = $mysqli->query($catPicker)){
if (!$Result) {
echo 'Could not run query: ' . mysql_error();
exit;
}
else {
$Result = $mysqli->query($catPicker);
}
while ($row = $Result->fetch_assoc()) {
echo '<option value="'.$row["Subcatid"].'">'.$row["Subcatname"]."</option>";
}
}
$mysqli->close();
}
这两者本质上都是从数据库中返回类别和子类别的列表,以填充表单的下拉列表。
问题是,除非在初始下拉框中选择了它们的父类别,否则我不希望出现子类别。我怎样才能做到这一点?我目前在 ProductSubCats 表中有一个额外的列,它是 Parentid,ProductCats 中有一个是 Catid,它们连接起来。
但是我将如何设置一个条件首先创建一个选择选项/值的变量,然后说“这个变量 $selected”。我会知道如何将它传递给该代码并使用条件 WHERE $selected =无论如何,但它已经到了让我感到困惑的地步。谢谢
编辑 - 似乎我的错误在于忘记 php 将在页面加载时运行一次。所以我应该让它呈现所有数据,然后使用 jquery 只显示那些已被选中的数据。但我也应该有一个值 0 和一个空白条目。例如,如果我有一个值为 1 的类别和 2 个父 id 为 1 的子类别我将如何让 jquery 显示那些父 id 为 1 的子猫,而不是说那些父 id 为 2 的子类别?用户选择后?