php读取文件并创建下拉菜单

时间:2013-05-31 15:19:11

标签: php html drop-down-menu

我有以下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,我的代码有什么问题?

3 个答案:

答案 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>';