我正在编辑一个页面,我遇到了问题。 问题是我正在创建一个页面,你可以回答所有类型的问题,但是由于可以为该页面提出新的问题,我无法跟踪每个输入框,因为它不能是手动的东西。
我们说我有文本框:
<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_”开头并将它们存储在变量中?
提前致谢,抱歉我的英语不好:)
答案 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";
}
如果您想在client-side处理这些字段,例如通过javascript或jquery,此解决方案可让您的工作更轻松,您可以轻松处理它们:
<script>
questions = document.getElementsByName('question[]');
</script>
因此,通过这种方式,您可以获得包含所有问题的所有对象 - 字段数组。我认为,这是处理表单中同一实体的多个字段的标准解决方案。