0

我有以下 php 代码,它创建下拉菜单读取包含名称的文本文件

文件.txt

JAMES
MARK
TONY

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

4

3 回答 3

1

您选择的名称属性错误,必须是:

echo '<select name="file[]">';

或者

echo '<select name="file[someNumber]">';
于 2013-05-31T15:32:39.400 回答
1

您不需要 Id,因为那是在说“我想要这个值,而第二部分说的是哪个字符”(至少是您使用它的方式)。尝试这个:

"USERNAME " . $_POST["file"]

字符串在 PHP 中被视为数组。

所以如果你有字符串kitty

$string = "Kitty";
echo $string[0]; // prints "K"
echo $string[4]; // prints "y"
于 2013-05-31T15:34:18.823 回答
1

尝试使用 读取 txt 文件file(),它将行直接添加到数组中,然后用于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>';
于 2013-05-31T15:35:03.860 回答