是一个php新手,需要一些帮助。基本上我有一个脚本,使用PHP填充下拉选择栏。我希望在提交后保留用户在此下拉列表中选择的值,因此用户不必再次选择它,这是我尝试使用的脚本片段。
<?php
// Start the session
session_start();
$_SESSION["dir"] = $_POST['hiddenVal'];
//echo "hi at last" .$_SESSION["dir"];
?>
<script>
function loadValues()
{
var $x=obj.options[obj.selectedIndex].value;
document.getElementById("hiddenVal").value = $x;
//alert(document.getElementById("hiddenVal").value);
}
</script>
<script>
function country(obj){
//alert(obj.options[obj.selectedIndex].value); //if you want to show in alart
//or put in a variable
var $x=obj.options[obj.selectedIndex].value;
document.getElementById("hiddenVal").value = $x;
alert($x);
}
</script>
<body onload="loadValues();">
<form action="dir20.php" method="post">
<input type="hidden" id="hiddenVal" name = "hiddenVal"/>
<input type="submit" name="submit" id="submit" value="Submit" />
</form>
</body>
<?php
$path = '/docdownloads';
//echo 'php_'.$abc;
$dirs = array();
// directory handle
$dir = dir($path);
while (false !== ($entry = $dir->read())) {
if ($entry != '.' && $entry != '..') {
if (is_dir($path . '/' .$entry)) {
$dirs[] = $entry;
//echo "$entry</br>";
}
}
}
?>
<select name="country" id="country" onChange="country(this)" required>
<!--<option value="">-----------------</option>-->
<?php
asort($dirs);
reset($dirs);
foreach($dirs as $p => $w):
echo '<option value="'.$w.'">'.$w.'</option>'; //close your tags!!
endforeach;
?>
</select>
<?php
$tex = $_SESSION["dir"];
//$def = "docdownloads";
//$dir = "c:/".$tex;
$dir = "c:/docdownloads/".$tex;
//echo "tex is". "$dir";
echo "</br>";
//if ($handle = opendir('.')) {
if ($handle = opendir($dir)) {
while (false !== ($entry = readdir($handle))) {
if ($entry != "." && $entry != "..") {
echo "$entry</br>";
}
}
closedir($handle);
}
?>
答案 0 :(得分:3)
您想要针对所选选项检查$ _GET var。如果当前选项存在且已选中,则为选项提供所选属性。
-----------------
<?php
asort($dirs);
reset($dirs);
foreach($dirs as $p => $w):
$selected = isset($_GET['country']) && $_GET['country'] === $w ? "selected" : "";
echo '<option value="'.$w.'"'.$selected.'>'.$w.'</option>';
endforeach;
?>
</select>
答案 1 :(得分:0)
如果您还没有为用户分配ID,则需要使用相应的ID将提交的选项保存在数据库中。然后当你加载你的下拉框时,在你的脚本中插入一个IF子句来检查用户是否已经保存了一个选项。
答案 2 :(得分:0)
要实现这一点,您应该保存用户选择进入会话的值 并且在显示表单时,您应该检查会话中是否存在该值以及是否存在 - 将其显示为所选选项。
答案 3 :(得分:0)
按GET
或POST
(取决于您的表单method
)获取国家/地区的提交值,并在foreach
循环
$countryId = isset($_POST['country']) ? $_POST['country'] : ''; //or $_GET['country'];
foreach($dirs as $p => $w):
$selected = $countryId==$w ? 'selected' : '';
echo '<option value="'.$w.'" '.$selected.'>'.$w.'</option>';
endforeach;
假设您的表单action
位于同一页面上,如果不同,请将国家/地区值存储在session
中,并从此页面中的session
检索
答案 4 :(得分:0)
Blockquote您需要将select元素放在表单中。否则它将不会提交
问题解决了,脚本现在有效,非常感谢!