我想实现一个有三个下拉菜单的php表单。第一个下拉列表应显示给定路径的所有目录。选择第一个下拉列表的目录后,第二个下拉列表应显示包含其子目录。最后,第三个下拉列表应该包含第二个下拉列表的所有子目录。所有目录和子目录都包含元素。
我已经实现了第一个下拉列表,但我无法为第二个和第三个下拉列表执行此操作。
你能帮我吗?
提前谢谢。
我所做的是:
<select name="s1" id="client" onChange="showSelected(this.value)">
<option value="" selected="selected">Select client</option>
<?php
if (chdir("/home/clients" )) {
$dirs = glob('*', GLOB_ONLYDIR);
foreach($dirs as $val){
echo '<option value="'.$val.'">'.$val."</option>\n";
}
}
?>
</select>
<script type="text/javascript">
function showSelected(val){
document.getElementById
('selectedResult').innerHTML = "Client is : " + val;
}
</script>
答案 0 :(得分:0)
你试过scandir()
吗?它列出了给定路径中的所有目录,如果选择目录,则可以使用一些$.ajax()
来获取目录的子目录。 http://php.net/manual/en/function.scandir.php
编辑:忘了提及scandir()
返回一个目录数组,以便你可以预先知道它。你可以跳过这样的文件:
<?php
function getDirs($path){
$contents=scandir($path);
$dirs = array();
foreach($contents as $content){
if(!is_file($content)){
$dirs[] = $content;
}
}
return $dirs;
}
?>
<select>
<?php $my_dir = "/home/www/"; ?>
<?php foreach(getDirs($my_dir) as $dir){echo '<option class="'.$my_dir.'">'. $dir . '</option>';} /*now you have the directories listed into a dropdown list*/ ?>
</select>
在javascript部分,我有想法,但我没有时间测试它们。我希望至少你掌握了编程的基础知识。祝你好运!
答案 1 :(得分:0)
您可以创建一个参数为parent dir
的PHP函数function getDir($parent_dir = '/home/clients'){
$html = '<select name="s1" id="client" onChange="showSelected(this.value)">';
$html .= '<option value="" selected="selected">Select client</option>';
if (chdir($parent_dir)) {
$dirs = glob('*', GLOB_ONLYDIR);
foreach($dirs as $val){
$html .= '<option value="'.$val.'">'.$val.'</option>';
}
}
return $html;
}
然后使用ajax调用此php函数,并在选择框中选择值并在浏览器上显示。