【发布时间】:2015-09-04 19:00:38
【问题描述】:
我正在尝试创建一个成绩分布网站,我正在创建 4 个下拉菜单,这些下拉菜单与学科(cs、数学等)、班级(数据结构、人工智能等)、教授和班级所在的季度相关采取。选择季度下拉菜单后,我想显示一个包含数据的条形图。
我遇到的问题是我无法用数据填充第二个下拉列表基本上,我可以成功地从数据库中为第一个下拉列表提取数据,如果用户选择了某些内容然后第二个下拉列表(最初使用 jquery 隐藏)变得可见,但它没有正确地从数据库中提取数据并将其作为选项添加到第二个下拉列表中。例如,我可以从第一个下拉列表中选择计算机科学,然后第二个下拉列表可见,但其中不包含“编程简介”、“数据结构”等;相反,它只是空白。
仅供参考,我正在使用这些选择器:http://silviomoreto.github.io/bootstrap-select/
PHP(错误很可能出现在 getClasses 函数的某个地方,很可能是代码的 $_POST 部分):
<?php
function getSubjects()
{
/* Get mysql connect information from external file and connect*/
require_once 'database.php';
$connection = new mysqli($db_hostname, $db_username, $db_password, $db_database);
if($connection->connect_error) die ($connection->connect_error);
/* Get the column containing the subjects from the table */
$query = 'SELECT DISTINCT Subject FROM gradelist ORDER BY Subject';
$result = $connection->query($query);
if(!$result) die ($connection_error);
/* Keep track of the number of rows in the column; necessary for iterating */
$rows = $result->num_rows;
/* selectBar keeps track of the html code for the select Bar*/
$selectBar = '';
for($j = 0; $j < $rows; $j++)
{
$result->data_seek($j);
$value = $result->fetch_assoc()['Subject'];
$selectBar .= '<option>' . $value .'</option>';
}
$result->close();
$connection->close();
return $selectBar;
}
function getClasses()
{
$connection = new mysqli($db_hostname, $db_username, $db_password, $db_database);
if($connection->connect_error) die ($connection->connect_error);
if(isset($_POST['subject']))
{
$query = "SELECT DISTINCT Class FROM gradelist WHERE Subject = $subject";
$result = $connection->query($query);
if(!$result) die ($connection_error);
}
else
{
die($connection_error);
}
$rows = $result->num_rows;
for($j = 0; $j < $rows; $j++)
{
$result->data_seek($j);
$value = $result->fetch_assoc()['Class'];
$selectBar .= '<option value = "' . $value . '">' . $value .'</option>';
}
$result->close();
$connection->close();
return $selectBar;
} ?>
代码的 HTML 部分(同样,错误可能与代码的 $_POST 部分有关):
<form class="form-horizontal" method = "post" role="form">
<div class="form-group">
<div class="col-lg-10">
<select name = "subject" id="subject" class="selectpicker show-tick form-control" data-live-search="true" title ="Subject">
<?php echo getSubjects(); ?>
</select>
</div>
</div>
</form>
<form class="form-horizontal" method = "get" role="form">
<div class="form-group">
<div class="col-lg-10">
<select name = "class" id="class" class="selectpicker show-tick form-control" data-live-search="true" title ="Class">
<?php if(isset($_POST['subject'])) echo getClasses(); ?>
</select>
</div>
</div>
</form>
jQuery:
$(document).ready(function() {
$('#class').selectpicker('hide');
$('#professor').selectpicker('hide');
$('#quarter').selectpicker('hide');
});
$('#subject').on('change', function(){
$('#class').selectpicker('refresh');
$('#class').selectpicker('show');
});
$('#class').on('change', function(){
$('#professor').selectpicker('show');
});
$('#professor').on('change', function(){
$('#quarter').selectpicker('show');
});
$('#quarter').on('change', function(){
showTable();
temp = $('#class').selectpicker('val') + " with " + $('#professor').selectpicker('val') + " during " + $('#quarter').selectpicker('val');
$('#displayName').text(temp);
});
【问题讨论】:
-
第一次加载页面时不会设置主题。您将需要在您的 JS 中使用 jQuery 或 JS 进行 ajax 调用以获取新数据。或者你可以每次都提交一个表单,但我认为这将是一个奇怪的流程。这可能是您想要查看的答案。 stackoverflow.com/questions/5861090/…
标签: javascript php jquery html mysql