如何使用一个提交按钮执行多行多下拉表单?

时间:2016-05-31 21:17:38

标签: php html

我正在尝试创建一个程序,允许用户输入名称列表(在表单中)。

在下一页,拉动表单创建的值,用户从一系列下拉列表中进行选择,为三个不同的类别选择“优秀”,“好”或“差”(性能,努力)每个名字的出席率。

一旦所有下拉列表都进行了选择,用户就会提交表单。

到目前为止,我有几个输入框允许用户输入名称($ name0和$ name2)。

<form action="form_action.php" method="post">
Name: <input type="text" name="name0"><br />
<br />
Name: <input type="text" name="name1"><br />
<input type="submit">
</form>

然后以最基本的形式显示此数据。

<?php echo $_POST["name0"]; ?><br>
  <br />
 <?php echo $_POST["name1"]; ?>

我知道我的代码与目前基本相同,但我现在基本上需要添加一些不同的下拉框,允许用户为列表中的每个人做出选择。

1 个答案:

答案 0 :(得分:0)

在第一个表单上,您可以将输入的名称更改为names[],然后在[{1}}的{​​{1}}中将这些名称作为数组提供。

$_POST['names']

然后在你的form_action.php中,你可以简单地在名字数组上做一个foreach循环。

<form action="form_action.php" method="post">
    <label>Name 1<input name="names[]"></label>
    <label>Name 2<input name="names[]"></label>
</form>

如果您输入了#34; Bob&#34;并且&#34; Ted&#34;作为名称,上面的PHP将生成此HTML:

form_action.php

提交此生成的表单后,<form action="submit_ratings.php" method="post"> <?php foreach ($_POST['names'] as $name): ?> <h2>Rate <?= $name ?></h2> <!-- hidden input to pass along name to next step --> <input type="hidden" name="names[]" value="<?= $name ?>"> <select name="performance[]"> <option value="excellent">Excellent</option> <option value="good" selected>Good</option> <option value="poor">Poor</option> </select> <select name="effort[]"> <option value="excellent">Excellent</option> <option value="good" selected>Good</option> <option value="poor">Poor</option> </select> <?php endforeach ?> </form> 脚本会在<form action="submit_ratings.php" method="post"> <h2>Rate Bob</h2> <!-- hidden input to pass along name to next step --> <input type="hidden" name="names[]" value="Bob"> <select name="performance[]"> <option value="excellent">Excellent</option> <option value="good" selected>Good</option> <option value="poor">Poor</option> </select> <select name="effort[]"> <option value="excellent">Excellent</option> <option value="good" selected>Good</option> <option value="poor">Poor</option> </select> <h2>Rate Ted</h2> <!-- hidden input to pass along name to next step --> <input type="hidden" name="names[]" value="Ted"> <select name="performance[]"> <option value="excellent">Excellent</option> <option value="good" selected>Good</option> <option value="poor">Poor</option> </select> <select name="effort[]"> <option value="excellent">Excellent</option> <option value="good" selected>Good</option> <option value="poor">Poor</option> </select> </form> 中收到三个数组:submit_ratings.php$_POSTnames。然后你可以这样显示它们:

performance

这种方法的一个优点是,在您的第一个表单上,您可以拥有任意数量的effort输入,并且所有后续步骤仍然有效。