Доступ к значениям записей по имени входа в php - PullRequest
0 голосов
/ 02 февраля 2012

У меня есть следующий код:

     <?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 ]

1 голос
/ 02 февраля 2012

Хорошо, во-первых, у вас есть проблема, потому что у вас будет 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).

0 голосов
/ 02 февраля 2012

Вы инициализировали $input, чтобы содержать 0..15 в случайном порядке. Затем вы выбрали первые 5 записей с помощью $i, поэтому 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"]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...