通过php中的输入名称访问post值

时间:2012-02-02 18:35:36

标签: php forms

我有以下代码 -

     <?php
                $input = array();
                for($i=0; $i<15; $i++)
                $input[]=$i;
                shuffle($input);

                $file="data.xml";
                $test= new SimpleXMLElement($file, null, true); ?>
                 <?php      

                          for($i=0; $i<5; $i++) {
                  ?> 

                <form action="submit.php" method="post" id="form">
                     <p id="ques"><?php echo $test->easy->question[$input[$i]]->ques?> </p>
                     <p id="option"><input type="radio" name="<?php echo $input[$i]?>" value="0" /><?php echo $test->easy->question[$input[$i]]->option[0]; ?></p>
                     <p id="option"><input type="radio" name="<?php echo $input[$i]?>" value="1" /><?php echo $test->easy->question[$input[$i]]->option[1]; ?></p>
                     <p id="option"><input type="radio" name="<?php echo $input[$i]?>" value="2" /><?php echo $test->easy->question[$input[$i]]->option[2]; ?></p>
                     <p id="option"><input type="radio" name="<?php echo $input[$i]?>" value="3" /><?php echo $test->easy->question[$input[$i]]->option[3]; ?></p>   
                 </form>
      <?php } ?>  

现在,在提交页面中如何使用输入名称$input[i]? $ _POST [我在这里写什么?]?

2 个答案:

答案 0 :(得分:1)

好的,首先,你有一个问题,因为你将在页面上有5个不同的form,我猜你只想要一个。{因此,您需要form循环之外的for标记。

提交表单时,您需要检查每个参数。这些将是$_POST[0]$_POST[1],通过$_POST[14] - 您需要查看哪些存在。

但是,我不会仅使用数字来命名输入变量。而是让每个radio都有一个

<input type="radio" name = "i<?php echo $input[$i]; ?>" ...

然后您正在寻找$_POST["i0"]$_POST["i14"]。使用array_key_exists("i0", $_POST)确定它是否存在(http://php.net/manual/en/function.array-key-exists.php)。

答案 1 :(得分:0)

您已按随机顺序初始化$input以包含0..15。接下来,您通过$i选择了前5个条目,因此input[$i]将包含0到15之间的随机数。如果您将其用作name属性,则不会有常量集要使用的POST参数。

所以我建议你这样做:

<form action="submit.php" method="post" id="form">
    <p id="ques"><?php echo $test->easy->question[$input[$i]]->ques?> </p>
    <input type="hidden" name="question" value="<?php echo $i; ?>">
    <p id="option"><input type="radio" name="q<?php echo $input[$i]?>" value="0" /><?php echo $test->easy->question[$input[$i]]->option[0]; ?></p>
    ....
    <p id="option"><input type="radio" name="q<?php echo $input[$i]?>" value="3" /><?php echo $test->easy->question[$input[$i]]->option[3]; ?></p>   
</form>

在提交页面阅读$_POST['question'],这会让您返回$i,然后阅读$_POST["q$i"]