Вопрос по php – PHP - создание оператора switch с использованием идентификатора из ввода формы

3

Я делаю небольшую викторину на PHP, которая расскажет вам, о каком существе вы думаете, основываясь на 4 вопросах да / нет. Я сделал так, чтобы в зависимости от вашего ответа на каждый вопрос, который вы получили на другой вопрос, я делал это, используя в основном операторы switch.

У меня вопрос, есть ли способ сделать оператор switch с условием в качестве идентификатора из кнопок отправки из формы?

      echo "<form method ='post' action='Creatures.php'>
     <input type='submit' name='answer' id='1' value='Yes' />
     <input type='submit' name='answer' id='2' value='No' />
     </form>";

Это форма, которую я использую для отображения кнопок, я сделал так, чтобы у каждой кнопки был свой идентификатор, чтобы в конце теста, в зависимости от того, какой идентификатор последней нажатой кнопки, я мог отобразить ответ. Ниже приведено то, что я пытался сделать, но это не сработало.

switch($_POST['id'])
{
 case 1: echo "It's a goldfish";
 case 2: echo "It's a eel";
}

Также эти поля являются единственными, которые используют идентификаторы на всей веб-странице, какие-либо предложения о том, как я могу заставить это работать должным образом, не обязательно используя операторы switch?

Это меняет название кнопки «Отправить». Вместо этого добавьте скрытый ввод со значением идентификатора вопроса,<input type="hidden" name="id" value="2"> Тогда у вас есть$_POST['id'] а также$_POST['answer'] tigrang
имя в $ _POST соответствуетname атрибут ввода, так что это будет $ _POST ['answer' 'и case' a '; Yes' a ';' no 'apos; tigrang
затем используйте число в качестве значения:<input type='submit' name='answer' id='2' value='2' /> Ben D
Благодарю вас! Теперь это работает нормально, не знал о типе ввода = скрыто. Harry12345
Спасибо, что работает, я пытался использовать идентификатор, так как у меня есть 16 возможных ответов, из которых я хочу выбрать, но половина из них называется да, а половина нет (с момента, когда пользователь нажал кнопку в тесте), поэтому я бы нужно написать 8 операторов switch, должен быть лучший способ, чем этот. Harry12345

Ваш Ответ

8   ответов
0
<form method ='post' name="formAnswer1" action=''>
    <input type='submit' name='answer' value='Yes' />
</form>

<form method ='post' name="formAnswer2" action=''>
    <input type='submit' name='answer' value='No' />
</form>

<?php
switch($_POST['answer'])
{
   case 'Yes': echo "Yes";
   break;

   case 'No': echo "No";
   break;
}
?>
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
0

Тебе нужно

break;

после каждого утверждения и вашей формы ввод неправильный (answer вместоid). Атрибут NAME определяет ключ в массиве POST (идентификатор предназначен только для клиентской части css и javascript).

И, как указал tigrang, значение - это то, что публикуется, а не ID, поэтому массив будет выглядеть так:

$ _POST [& APOS; ответ & APOS;] = & APOS; Да & APOS;

Так что ваше заявление будет

switch($_POST['answer'])
{
 case 'Yes': echo "It's a goldfish";break;
 case 'No': echo "It's a eel";break;
}
Error: User Rate Limit Exceeded Harry12345
Error: User Rate Limit Exceeded
0

switch(key($_POST['answer']))
{
case 1: 
    echo "answer 1"; break;
case 2: 
    echo "answer 2"; break;
}
echo "<form method ='post' action='/tmp/test.php'>
<input type='submit' name='answer[1]' value='Yes' />
<input type='submit' name='answer[2]' value='No' />
</form>";

Я думаю, что это работает так, как вы хотите. Но ваш подход немного нелогичен для программистов POV; рассмотрите возможность использования радиокнопок + кнопка отправки.

0

рвер в виде пар ключ-значение. Ключи - это имена форм, а значения - значения входов.

поэтому, чтобы получить значение вашего входного имени ответа, вы используете$_GET['answer'];

что либо даст вам «Да» или "Нет", потому что это значения. Вы также должны выполнить некоторую проверку ошибок, так как люди могут отправлять произвольные данные на ваши серверы, например, кто-то может посетитьyoursite.com/creatures.php?answer=somerandomstuffthatidontexpect

Error: User Rate Limit Exceeded
0

ревизии класса. Это то, что сработало для меня. Идея заключалась в том, чтобы показать что-то на основе оценок, введенных в форме.

 <form action="processGrade.php" method "get">
 Enter your grade: <input type = "text" name ="grade">
 <input type = "submit">
 </form>

// В моей форме processGrade.php:

<?php
echo "You have entered: ".$mygrade = $_GET['grade'].". ";

switch($mygrade){

case 100:
    echo " Your grade is A";
    break;

case 70:
    echo " Your grade is B+";
    break;

default: echo "Ungraded";
}
?>
1

echo '<form method ="post" action="Creatures.php">
<button name="answer" type="submit" value="Yes">Yes</button>
<button name="answer" type="submit" value="No">No</button>
</form>';

switch($_POST['answer'])
{
   case 'Yes':
        echo "It's a goldfish";
        break;
   case 'No':
        echo "It's a eel";
        break;
}

Также смэтот а такжеэтот.

Error: User Rate Limit Exceeded
0

вы будете бороться. Различные браузеры будут интерпретировать это по-разному (собственный опыт), так что просто следуйте по пути jQuery :)

http://www.vancelucas.com/blog/ie6-and-multiple-button-submit-elements/ - это должно помочь

3
switch($_POST['answer']) {

case 'Yes':
   // do soemthing
   break;
case 'No':
   // do something
   break;
}
Error: User Rate Limit Exceeded Harry12345

Похожие вопросы