![](/img/trans.png)
[英]Dependent dropdown list working in php and not working in codeigniter
[英]Making a dropdown list dependent on another list in PHP
我要创建一个下拉列表,该列表根据所做的选项创建一个新的下拉列表。 我可以使用以下代码使用JavaScript在HTML中完成此操作:
<div>
<legend> Question </legend>
<select class="source" id="selType">
<option>Select</option>
<option value="A1"> Answer1 </option>
<option value="A2"> Answer2 </option>
<option value="A3"> Answer3 </option>
</select>
</div>
<div id="Answers">
<div id="A1" style="display: none;">
<select id="Option1">
<label>Select Workshop</label>
<option value="1"> 1 </option>
<option value="2"> 2 </option>
<option value="3"> 3 </option>
</select>
</div>
<div id="A2" style="display: none;">
<select id="Option2">
<-- list items -->
</select>
</div>
<div id="A3" style="display: none;">
<select id="Option3">
<-- list items -->
</select>
</div>
</div>
<script>
$(function () {
$('#selType').change(function () {
$('#Answers > div').hide();
$('#Answers').find('#' + $(this).val()).show();
});
});
</script>
但是,我似乎无法使用2个通过PHP在MySQL中获取的数据制成的列表来做同样的事情。 如下。
// Pull data for cluster names
$query="SELECT LIST_OF_CLUSTERS.CLUSTER_NAME
FROM LIST_OF_CLUSTERS";
$data = mysqli_query($db_connect, $query) or die(mysqli_error());
// Create drop down list of cluster names
echo "<label>Location</label>";
echo "<select class='form-control' name='location1'>";
echo "<option value='All'>All</option>";
$number_results = mysqli_num_rows($data);
while($results = mysqli_fetch_array($data)){
echo "<OPTION value='". $results['CLUSTER_NAME'] ."'>" . $results['CLUSTER_NAME'] . "</option>";
}
echo "</select>";
// Pull data for university names
$query="SELECT LIST_OF_UNIVERSITIES.UNIVERSITY_NAME
FROM LIST_OF_UNIVERSITIES
ORDER BY LIST_OF_UNIVERSITIES.UNIVERSITY_NAME";
$data = mysqli_query($db_connect, $query) or die(mysqli_error());
// Create drop down list of cluster names
echo "<label>University</label>";
echo "<select class='form-control' name='university1'>";
echo "<option value='All'>All</option>";
$number_results = mysqli_num_rows($data);
while($results = mysqli_fetch_array($data)){
echo "<OPTION value='". $results['UNIVERSITY_NAME'] ."'>". $results['UNIVERSITY_NAME'] . "</option>";
}
echo "</select>";
在数据库中,大学名称按簇(北,南,东西西等)进行组织,当前代码很好地完成了簇列表和大学列表(均以“ All”开头)的列表,但是彼此没有关联。 我试图通过各种id标签实现上述JavaScript,并试图将PHP拆分,但无济于事。
数据库中的大学数组包含一个名为“ Cluster”的条目的值,该值等于各个数字,具体取决于它们所在的群集(0、1,2等),我可以使列表仅显示该群集中的大学在下面添加WHERE CLUSTER ='n',因此创建我需要的列表很容易,我只是不能让它们仅在需要时显示;
// Pull data for uni names - South West
$query="SELECT LIST_OF_UNIVERSITIES.UNIVERSITY_NAME
FROM LIST_OF_UNIVERSITIES
WHERE CLUSTER='2'
ORDER BY LIST_OF_UNIVERSITIES.UNIVERSITY_NAME";
任何帮助将非常感激 :)
没关系,我最终知道了。
它所需要的只是将php部分放在选择括号内,现在看来是如此明显。 我想我只是空白的一天:)
<div>
<label>University?</label>
<select class= "source form-control" id="selUni" name="university1">
<option>Select</option>
<option value='All'>All</option>
<?php
$number_results = mysqli_num_rows($data);
while($results = mysqli_fetch_array($data)){
echo "<OPTION value=\"". $results['UNIVERSITY_NAME'] . "\">". $results['UNIVERSITY_NAME'] . "</option>";
}
?>
</select>
</div>
**与MVC相关的完整代码,使用Ajax下拉菜单**
<div class="col-md-4" id="cars_reff_idedt">
<select name="cars_reff_id" id="edtcars_reff_id" class="col-md-12" >
<option value="">--Select Car--</option>
<?php
foreach ($car as $new) {
$sel = "";
if (set_select('cars_reff_id', $new->id))
$sel = "selected='selected'";
echo '<option value="' . $new->id . '" ' . $sel . '>' . $new->name . '</option>';
}
?>
</select>
</div>
<div class="col-md-4" id="chasis_id">
<select name="chasis_id" id="chasis_id" class="col-md-12" > </select>
</div>
<script>
//Dependent DropDown Car+Chessis
$(document).on('change', '#edtcars_reff_id', function () {
vch = $(this).val();
if (vch) {
$.ajax({
url: '<?php echo site_url('admin/expense/getChessisNo') ?>',
dataType: 'Json',
data: {'id': vch},
success: function (data) {
$('select[name="chasis_id"]').empty();
$.each(data, function (key, value) {
$('select[name="chasis_id"]').append('<option value="' + key + '">' + value + '</option>');
});
}
});
} else {
$('select[name="city"]').empty();
}
});
</script>
<?php
function getChessisNo() {
$data = $this->car_model->getChessisByCarId($_GET['id']);
$json = [];
foreach ($data as $row) {
$json[$row->id] = $row->number;
}
echo json_encode($json);
}
?>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.