我有以下php代码,它创建下拉菜单,读取包含名称
的文本文件files.txt
JAMES
MARK
TONY
drop-down.php
<?php
$path = "files.txt";
$file = fopen($path, 'r');
$data = fread($file, filesize($path));
fclose($file);
$lines = explode(PHP_EOL,$data);
echo '<select name="file">';
foreach($lines as $line) {
echo '<option value="'. urlencode($line).'">'.$line.'</option>';
}
echo '</select>';
?>
这是代码的POST部分,它是一个循环
foreach ($_POST["bname"] AS $id => $value)
{
...
...
USERNAME: "'.$_POST["file"][$id].'"
一切正常但当我向其他表单提交数据时,我只收到用户的第一个字母,如果我选择JAMES
并提交数据,我只会在J
中收到.$_POST
个字母。我想要全名JAMES
,我的代码有什么问题?
答案 0 :(得分:1)
您的选择的name属性是错误的,必须是:
echo '<select name="file[]">';
或
echo '<select name="file[someNumber]">';
答案 1 :(得分:1)
你不需要Id,因为那就是说“我想要这个值,第二部分说的是哪个角色”(至少你使用它的方式)。试试这个:
"USERNAME " . $_POST["file"]
字符串在PHP中被视为数组。
所以如果你有字符串kitty
$string = "Kitty";
echo $string[0]; // prints "K"
echo $string[4]; // prints "y"
答案 2 :(得分:1)
尝试使用file()
读取txt文件,将行直接添加到数组中,然后使用for()
遍历数组。
<?php
$path = "files.txt";
$lines = file($path, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
$nrl = count($lines);
echo '<select name="file[]">';
for($i=0; $i<$nrl; $i++) {
echo '<option value="'. urlencode($lines[$i]).'">'.$lines[$i].'</option>';
}
echo '</select>';