создать форму php, показать сообщение в зависимости от выбора пользователя - PullRequest
0 голосов
/ 20 ноября 2011

Я хочу создать форму php с флажком, например:

< form method="post>
        <input type="checkbox" name="formpractise[]" value="A" /> <br/>
        <br/>
        <input type="checkbox" name="formpractise[]" value="B" /> <br/>
        <br/>
        <input type="checkbox" name="formpractise[]" value="C" />  <br/>
        <br/>
        <input type="checkbox" name="formpractise[]" value="D" /> <br/>
        <br/>
        <input type="checkbox" name="formpractise[]" value="E" /> <br/>
        <br/>
        <input type="checkbox" name="formpractise[]" value="F" /> <br/>
        <br/>
        <input type="submit" name="formsubmit" value="Submit" />
</form>

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

Ответы [ 4 ]

0 голосов
/ 20 ноября 2011

Ну, так как вы используете чекбоксы и возможен множественный выбор, я бы использовал двоичный код, чтобы помочь мне выбрать другое сообщение для каждой возможной комбинации.Например, если пользователь выбирает поля A, D, E и F, вы можете преобразовать это в двоичный код.Если: F = 1 E = 2 D = 4 C = 8 B = 16 A = 32

Сообщение, которое вы должны отобразить, будет сообщением № 39 (из 64 возможных сообщений) A = 32 + D= 4 + E = 2 + F = 1

32 + 4 + 2 + 1 = 39

<form method="post">
        <label>
          <input type="checkbox" name="formpractise[]" value="32" /> Choice A
        </label> <br/>
        <label>
          <input type="checkbox" name="formpractise[]" value="16" /> Choice B
        </label> <br/>
        <label>
          <input type="checkbox" name="formpractise[]" value="8" /> Choice C
        </label> <br/>
        <label>
          <input type="checkbox" name="formpractise[]" value="4" /> Choice D
        </label> <br/>
        <label>
          <input type="checkbox" name="formpractise[]" value="2" /> Choice E
        </label> <br/>
        <label>
          <input type="checkbox" name="formpractise[]" value="1" /> Choice F
        </label> <br/>
        <input type="submit" value="Submit" />
</form>
<?
if($_POST)
{
    $message[1] = 'you will come into money';
    $message[2] = 'you will meet someone special';
    $message[3] = 'don\'t trust your neighbor';
    $message[4] = 'answers to your questions will come from SO';
    $message[5] = 'there\'s no need to read all of these';
    //...
    //...
    $message[39] = 'wow you selected lucky number 39';
    $message[40] = 'really, you\'re still reading';

    echo $message[array_sum($formpractise)];
}
?>

Просто создайте массив из 64 сообщений, и вы получите другое сообщение длякаждая комбинация

0 голосов
/ 20 ноября 2011

Ваш флажок является массивом, поэтому вы должны принять это во внимание.Вы можете иметь несколько действительных вариантов.Не знаю о своей цели, но простое и упрощенное решение может быть:

$choices = array(A,B,C,D,E,F)
foreach ($choices as $choice) {
  if (in_array($choice, $_POST)) {
     // do something with your message
     // (append, edit, whatsoever)
  }
}
0 голосов
/ 20 ноября 2011

Вы можете реализовать это на одной странице:

<?php
$messages = array(      // Array of choices and messages
    'A' => 'Message A',
    'B' => 'Message B',
    'C' => 'Message C',
    'D' => 'Message D',
    'E' => 'Message E',
    'F' => 'Message F'
);

if($_POST['submit'] === 'Submit') {  // If the form is submitted
    // If a choice was made and it is in the messages array
    if(isset($_POST['choice']) && array_key_exists($_POST['choice'], $messages)) {
        die($messages[$_POST['choice']]);  // Display the message and end execution
    } else {
        die('Unknown Message');  // Otherwise, display and error and end execution
    }
}
?>

<form action="" method="POST">
    <p><input type="radio" name="choice" value="A" /> A</p>
    <p><input type="radio" name="choice" value="B" /> B</p>
    <p><input type="radio" name="choice" value="C" /> C</p>
    <p><input type="radio" name="choice" value="D" /> D</p>
    <p><input type="radio" name="choice" value="E" /> E</p>
    <p><input type="radio" name="choice" value="F" /> F</p>
    <p><input type="submit" name="submit" value="Submit" /></p>
</form>

Я также считаю, что в этом случае вы ищете переключатель, а не флажок.Флажки позволяют выполнять несколько проверок в наборе блоков, в которых переключатели позволяют выбирать только одну из группы.

0 голосов
/ 20 ноября 2011

Если вы используете библиотеку jQuery, Javascript будет выглядеть примерно так:

$(function(){
    // The messages
    var messages = {
        A  : "Message for A",
        B  : "Message for B",
        C  : "Message for C",
        D  : "Message for D",
        E  : "Message for E",
        F  : "Message for F"
    };
    $("input").click(function(){
        var key = $(this).val();
        // Only if the checkbox is checked
        if( $(this).is(":checked") )
        {
            // Alert the message
            alert(messages[key]);

            // Fill the HTML of the div with the id messageDIVID
            $("#messageDIVID").html(messages[key]);
        }
    });
});

Если у вас есть все ваши сообщения внутри вашего кода PHP. И у вас есть массив, вы можете сделать это

$messages = Array("A" => "Message for A", 
                  "B" => "Message for B", 
                  "C" => "Message for C", 
                  "D" => "Message for D", 
                  "E" => "Message for E", 
                  "F" => "Message for F");

echo "var messages = " . json_encode($messages) . ";";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...