您好我有一段PHP代码从数据库中获取php变量然后填充A下拉框。这样可以正常工作,但一旦页面更新,它就不会显示所选的值,而只是再次显示原始列表。
我已经玩过使用isset显示所选值的一些不同想法,但它只是显示该值而没有别的。
我已将原始代码附加到其中,但始终只显示数据库中的原始值列表。
如果任何一个机构可以提供解决方案,甚至可以向正确的方向轻推,那么我们将非常感激。
由于
if (isset($select) && $select != "location") {
$select = $_POST['location'];
}
?>
<select name="location">
<?php
// Get records from database (table "name_list").
$list = mysql_query("select DISTINCT region_name from masterip_details WHERE country_code='GB' AND TRIM(IFNULL(region_name,'')) <> '' order by region_name asc");
// Show records by while loop.
while ($row_list = mysql_fetch_assoc($list)) {
$location = $_POST['location']; ?>
<option value="<?php echo $row_list['region_name']; ?>"
<?php if $row_list['region_name'] == $select) {
echo "selected";
} ?>><?php echo $row_list['region_name']; ?></option>
<?php } ?>
答案 0 :(得分:1)
您确定要发送带有帖子请求的表单吗?
您的代码无法阅读 最好做这样的事情:
<?php
//database request don't belong in the presentation layer
$list=mysql_query("select DISTINCT region_name from masterip_details WHERE country_code='GB' AND TRIM(IFNULL(region_name,'')) <> '' order by region_name asc");
$location = "";
$isSelect = "";
if(isset($_POST['location'])){
$location = $_POST['location'];
}
while($row_list=mysql_fetch_assoc($list)){
if($row_list['region_name'] == $location ){
$isSelect = "selected";
}
echo '<option value="'.$row_list['region_name'].'" '.$isSelect.' >'. $row_list['region_name'].'</option>';
}
?>
答案 1 :(得分:1)
您没有正确检查选择值。
更改此内容:
if (isset($select) && $select != "location") {
$select = $_POST['location'];
}
以强>
if (isset($_POST['location']) && $_POST['location'] != "location") {
$select = $_POST['location'];
}
答案 2 :(得分:0)
创建<option>
标记时,您可以使用以下内容:
<?php if ($row_list['region_name'] == $select) { echo "selected='true'"; } ?>
您可能还想检查条件$row_list['region_name'] == $select
是否正在返回true
。您可以单独尝试echo
他们的结果:
echo ($row_list['region_name'] == $select)
或类似的内容,如果您获得true
,则会显示。
答案 3 :(得分:0)
问题在于第一行 - 实际上系统永远不会执行第二行来分配$select
因为$select
从未设置:
if(isset($_POST['select']) && $select!="location") { $select=$_POST['location']; } ?>