繁体   English   中英

使用PHP和MySQL的多个下拉消除形式

[英]Multiple dropdown elimination form using PHP and MySQL

我很难解决这个问题。 基本上,它是带有几个下拉菜单的表单。 用户可以从下拉菜单中选择一项或多项,以帮助过滤出MySQL数据结果。 因此,我想在用户填写表单时消除选项。 因此,例如,用户从品牌菜单中选择“耐克”和“阿迪达斯”,所有其他下拉菜单都应更新,并且仅显示与“耐克”或“阿迪达斯”相关的列表。 假设“国家/地区”下拉菜单将不再列出所有国家/地区,而是仅显示美国(耐克)和德国(阿迪达斯)。 依此类推,还有其他下拉菜单。.这是PHP / HTML代码。

<?php

// Connection
require_once('./db.inc.php');


$brands_list_query = "SELECT DISTINCT brand from inventory ORDER BY brand ASC";
$brands_list_result = mysql_query($brands_list_query) or die('Error, brands listing failed: ' . mysql_error());
$brands_list = "";
while($brands_list_row = mysql_fetch_assoc($brands_list_result)) {
    $brand = $brands_list_row['brand'];
    $brands_list .= "<option value=\"$brand\">$brand</option>\n";
}

$countries_list_query = "SELECT DISTINCT country from inventory ORDER BY country ASC";
$countries_list_result = mysql_query($countries_list_query) or die('Error, countries listing failed: ' . mysql_error());
$countries_list = "";
while($countries_list_row = mysql_fetch_assoc($countries_list_result)) {
    $country = $countries_list_row['country'];
    $countries_list .= "<option value=\"$country\">$country</option>\n";
}

$models_list_query = "SELECT DISTINCT model from inventory ORDER BY model ASC";
$models_list_result = mysql_query($models_list_query) or die('Error, models listing failed: ' . mysql_error());
$models_list = "";
while($models_list_row = mysql_fetch_assoc($models_list_result)) {
    $model = $models_list_row['model'];
    $models_list .= "<option value=\"$model\">$model</option>\n";
}

$shapes_list_query = "SELECT DISTINCT shape from inventory ORDER BY shape ASC";
$shapes_list_result = mysql_query($shapes_list_query) or die('Error, shapes listing failed: ' . mysql_error());
$shapes_list = "";
while($shapes_list_row = mysql_fetch_assoc($shapes_list_result)) {
    $shape = $shapes_list_row['shape'];
    $shapes_list .= "<option value=\"$shape\">$shape</option>\n";
}

// Close connection
mysql_close();

?>
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="select2/select2.css">  
<script src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
<script src="select2/select2.js"></script>

<style type="text/css">
.select_width {
    width: 180px;
}
</style>

<script>
  $(function(){
// turn the element to select2 select style
$('#select1').select2();
$('#select2').select2();
$('#select3').select2();
$('#select4').select2();
  });
</script>
</head>
<body>
<form target="browser" method="GET" action="browser.php">

Brands:<br />
<select name="brands[]" id="select1" class="select_width" multiple="multiple">
<?php echo $brands_list; ?>
</select>

</br >

Countries:<br />
<select name="countries[]" id="select2" class="select_width" multiple="multiple">
<?php echo $countries_list; ?>
</select>

</br >

Models:<br />
<select name="models[]" id="select3" class="select_width" multiple="multiple">
<?php echo $models_list; ?>
</select>

</br >

Shapes:<br />
<select name="shapes[]" id="select4" class="select_width" multiple="multiple">
<?php echo $shapes_list; ?>
</select>

<input type="submit" name="submit" value="Update" /> <input type="reset" value="Reset">

</form>

</body>
</html>

MySQL表

CREATE TABLE `inventory` (
  `brand` varchar(15) COLLATE utf8_unicode_ci NOT NULL,
  `country` varchar(15) COLLATE utf8_unicode_ci NOT NULL,
  `model` varchar(25) COLLATE utf8_unicode_ci NOT NULL,
  `reference` varchar(15) COLLATE utf8_unicode_ci NOT NULL,
  `shape` varchar(25) COLLATE utf8_unicode_ci NOT NULL,
  `details` varchar(200) COLLATE utf8_unicode_ci NOT NULL
)

我该怎么办? 用户更新表单时,是否需要jQuery更新列表? 还是有另一种方法? 先感谢您!

在每个选择框中添加一个onclick或onchange事件,以调用js函数,该函数将为页面上的iframe建立一个url。

由于您有多个选择,因此必须传递一个数组。 例如“ inventorySearch.php?brand = Adidas,Nike&country = us,uk&andSoOn”。

然后,php页面将根据在查询字符串中传递的选择条件构建一个查询以从inventory表中进行选择,如“ WHERE brand in('Adidas','Nike')...”中所示,并从数据库中获取并显示这些内容在桌子上。

棘手的部分将是组装查询字符串(满足没有选择的选择框),以及组装SQL的WHERE子句。

够了吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM