下面的下拉列表中填充了来自sql数据库的数据:
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="post">
<select name="Select" id="vals" onchange="this.form.submit()" class="btn btn-warning">
<option value="">-- Select Country --</option>
<?php
$user=new User();
$sql5=DB::getInstance()->get('country', array('user', '=', $user->data()->username));
if (!$sql5->count()) {
echo 'No data';
} else {
foreach ($sql5->results() as $sql5) { ?>
<option value="<?php echo $sql5->name;?>">
<?php echo $sql5->name;?></option>';
<?php }
} ?>
</select>
</form>
</div>
用户从下拉列表中选择,以便输出连接到所选数据的信息:
<? php
if (isset($_POST['Select']) && !empty($_POST['Select'])) {
$userSelection = $_POST['Select'];
$sql = DB::getInstance() - > get('country', array('country', '=', $userSelection));
if (!$sql - > count()) {
echo 'no data';
} else {
foreach($sql - > results() as $sql) {
echo 'data';
}
当我从下拉列表中单击一个选项时,什么都不会显示。问题出在$userSelection上,这是一个空格问题。当我用"China"替换$userSelection时,数据会出来,但当我尝试时,"China"什么都没有出来,只有当它前面有空白时,它才起作用。我还检查了我的数据库,发现值中没有空白。
foreach($sql5->results()作为$sql5){?>
您正在尝试迭代$sql5->results(),并将子项设置为与父项具有相同的变量名,从而替换父项。在另一次迭代中,你也在做同样的事情。。。尝试:
<select name="Select" id="vals" onchange="this.form.submit()" class="btn btn-warning">
<option value="">-- Select Country --</option>
<?php
$user=new User();
$sql5=DB::getInstance()->get('country', array('user', '=', $user->data()->username));
if (!$sql5->count()) {
echo '<option value="no-data">No data</option>';
} else {
foreach ($sql5->results() as $item) {
echo '<option value="'.$item->name.'">'.$item->name.'</option>';
}
}
?>
</select>