我的图像位于以下文件夹中/文件/图像/产品。我已尝试按如下方式选择我的图像文件夹,并希望从列表中选择一个。
<select name="image1">
<option value="" selected="selected"></option>
<?php
$dir = "../files/images/product";//your path
$dh = opendir($dir);
while (false !== ($filename = readdir($dh))) {
$files[] = $filename;
}
sort($files);
echo "<option value=" . $filename . "'>".$filename."</option>";
?>
</select>
这就是我得到的,但是没有显示列表,所以无法选择任何内容。欢迎提供任何帮助
option元素中value
属性缺少开头引号。
视觉:
echo "<option value='" . $filename . "'>".$filename."</option>";
您的代码看起来像value="
,而不是value='"
,因此它输出的内容如下:
<option value=path/to/my/file'>path/to/my/file</option>
这不是有效的HTML。
正如一位通讯员指出的那样,你的回声不在循环中,所以它只会打印一个选项,给出最后一个文件名。你想要这样的东西:
foreach($files as $filename) {
echo "<option value=" . $filename . "'>".$filename."</option>";
}
此外,为了安全起见,您应该逃离所有打印的内容,例如使用htmlentities
:
while (false !== ($filename = readdir($dh))) {
$files[] = htmlentities($filename);
}
总之,你的代码可能是这样的:
<select name="image1">
<option value="" selected="selected"></option>
<?php
$dir = "../files/images/product";//your path
$dh = opendir($dir);
while (false !== ($filename = readdir($dh))) {
$files[] = htmlentities($filename);
}
sort($files);
foreach($files as $filename) {
echo "<option value='" . $filename . "'>".$filename."</option>";
}
?>
</select>
<select id="mySelect" name="image1">
<option value="" selected="selected"></option>
<?php
$dir = "../files/images/product";//your path
$dh = opendir($dir);
while (false !== ($filename = readdir($dh))) {
$files[] = $filename;
echo "<option value=" . $filename . "'>".$filename."</option>";
}
sort($files);
?>
<script>
$('#mySelect').on('change', function(e) {
var address = e.val();
alert(<?php $dir; ?>+'/'+address);
});
</script>
这只适用于alert,但您可以找到如何使用jQuery或其他东西附加一些html元素。