从页面上的每个文本框中获取价值

时间:2015-04-11 20:03:08

标签: php html

我正在编辑一个页面,我遇到了问题。 问题是我正在创建一个页面,你可以回答所有类型的问题,但是由于可以为该页面提出新的问题,我无法跟踪每个输入框,因为它不能是手动的东西。

我们说我有文本框:

<input type="text" name="question_1" />
<input type="text" name="question_2" />
<input type="text" name="question_3" />
<input type="text" name="question_4" />

但是当我从另一个页面添加更多问题时,在MySQL的帮助下,出现了新的领域,例如:

<input type="text" name="question_5" />
<input type="text" name="question_6" />
<input type="text" name="question_7" />

因为可以提出无限的问题,我不能通过制作像这样的PHP字符串来获得它们的价值:

$question1 = $_POST["question_1"];
$question2 = $_POST["question_2"];
$question3 = $_POST["question_3"];

等等,因为我不知道会有多少。

所以我的问题是:是否有可能获得每个输入框的值,该名称以“question_”开头并将它们存储在变量中?

提前致谢,抱歉我的英语不好:)

2 个答案:

答案 0 :(得分:4)

$i = 1;
$myarray = [];
while ($_POST["questions_".$i]) {
    $i++;
    array_push($myarray, $_POST["questions_".$i]);
}

循环通过它们直到它为空。这将它们推送到数组,但您可以在循环中使用它们。

然后,您也可以从这些字符串生成一个字符串,例如MySQL查询:

$i = 1;
$firstpartofquery = "";
$secondpartofquery = "";
while ($_POST["questions_".$i]) {
    $i++;
    if ($firstpartofquery) { $firstpartofquery .= ", "; }
    $firstpartofquery .= "question_" . $i;
    if ($secondpartofquery) { $firstpartofquery .= ", "; }
    $secondpartofquery .= "'" . $_POST["questions_".$i] . "'";
}
$myquery = "INSERT INTO question($firstpartofquery) VALUES($secondpartofquery)";

答案 1 :(得分:1)

只需将表单的所有输入元素命名为question[]

<input type="text" name="question[]" />
<input type="text" name="question[]" />
<input type="text" name="question[]" />

然后,从您的脚本中,您可以遍历它们,如下所示:

$questions = $_POST['question'];    
foreach ($questions as $question){    
   echo $question." <br /> \n";
}

如果您想在处理这些字段,例如通过,此解决方案可让您的工作更轻松,您可以轻松处理它们:

<script>
questions = document.getElementsByName('question[]');
</script>

因此,通过这种方式,您可以获得包含所有问题的所有对象 - 字段数组。我认为,这是处理表单中同一实体的多个字段的标准解决方案。