【发布时间】:2014-07-31 23:49:33
【问题描述】:
我以前只在 MySQL 中使用过 PHP,但我发现自己陷入了如何在没有数据库的情况下工作的困境!我真的很感激任何帮助。
我想创建两个动态下拉菜单。第一个选择目录,第二个选择所选目录中的文件。
这是我目前用来选择目录的代码,但我不知道下一步该做什么。
此功能用于提取目录。我想将所选目录传递到下一个下拉列表,并让下一个下拉列表显示所选目录中的文件列表。
<select name="Dirs">
<option value="" selected="selected">Lab</option>
<?php
$dirs = glob("/var/www/html/blast/labs/*", GLOB_ONLYDIR);
foreach($dirs as $val){
echo '<option value="'.basename($val).'">'.basename($val)."</option>\n";
}
?>
</select>
解决办法:
我在主页上使用此脚本添加了两个下拉菜单:
<select id="Files" name="Files">
</select>
<script type="text/javascript">
$(function(){
$("#Dirs").on('change', function(){
var Dir = $(this).val();
//Make an ajax call
$( "#Files" ).html( '<option>Loading...</option>' );
$.get( "listfiles.php?Dirs=" + encodeURIComponent(Dir), function( data ) {
//Update the files dropdown
$( "#Files" ).html( data );
});
});
});
</script>
并创建了一个名为“listfiles.php”的文件,其中包含以下 php 脚本:
$folder = $_GET['Dirs'];
if(!file_exists($folder)) {
exit('File Not Found');
}
$out = '';
function only_files($file) { $idx = strlen($file) - 1;
return substr($file, $idx) != '/';
}
$files = array_filter(glob($folder . "/*", GLOB_MARK), 'only_files');
foreach($files as $val){
$out .= '<option value="'.$val.'">'.basename($val)."</option>\n";
}
//Output the file options
exit($out);
【问题讨论】:
-
我不明白缺少数据库与此有什么关系
-
好像可以这样。还有什么事?
-
好吧,没有疑问,我只是不确定它是如何工作的。我还用post吗?我可以将 $val 传递到下一个下拉菜单吗?所以这个函数可以拉起目录。我想将所选目录传递到下一个下拉列表,并让下一个下拉列表显示所选目录中的文件列表。
-
不理解你不理解的东西;(
-
肯定考虑使用 Ajax。这么简单的功能很可能是您的最佳选择
标签: php html dynamic drop-down-menu