2016-03-30 4 views
1

Я пытаюсь ввести значение, выбранное из опции радио с PHP, в переменную, чтобы я мог использовать значение.Как сохранить выбор переключателя в переменной с помощью PHP

Как только пользователь выбрал опцию из моего радио (существует 5 вариантов: от 1 до 5) Я пытаюсь сохранить значение в переменной через PHP в переменной $ rating, а затем попытался напечатать значение переменной в два раза, один раз в моем PHP-код с

echo $rating; 

и один раз в моем HTML с

<?php echo $rating;?> 

Но не печатает ни в одном из случаев, так что я предполагаю, Я не могу сохранить значение.

Любая помощь будет высоко оценена.

<html> 
<body> 
    <?php 
     if ($_SERVER["REQUEST_METHOD"] == "POST") { 
      $rating = ""; 
      $rating = $_POST['rating']; 
      echo $rating; 

     <input type="radio" name="rating" value="1"> 
     <input type="radio" name="rating" value="2"> 
     <input type="radio" name="rating" value="3"> 
     <input type="radio" name="rating" value="4"> 
     <input type="radio" name="rating" value="5"> 

     <br> 
     <?php echo $rating;?> 
</body> 
</html> 
+3

любые теги формы там? Если нет, вам нужны они. Дайте ему минутку или две, кто-то собирается ответить вам за ответ ;-) или RTM тем временем http://php.net/manual/en/tutorial.forms.php * Нет лучшего способа «научиться» *. –

+0

Fred является правильным и обратите внимание, что вам не нужно проверять метод запроса, просто проверьте, существует ли '$ _POST ['rating']' с 'isset ($ _ POST ['rating'])'. И, кстати, вам не хватает 'if''} 'закрытия и фактически смешивает HTML и PHP. – vard

+0

Также убедитесь, что вы правильно избегаете любых данных, предоставленных пользователем, прежде чем повторять их в браузере. т. е. делать 'echo htmlentities ($ rating);'. Это предотвращает атаки XSS. – Mike

ответ

1

Принимая несколько минут, чтобы помочь вам.

Как я уже говорил в комментариях, вам нужны <form></form> теги, чтобы обрабатывать массивы POST и почтовый метод.

Следующее делает это и использует тернарный оператор PHP (это более чистый) и isset().

<!DOCTYPE html> 
<head> 
<title></title> 
</head> 

<body> 
    <?php 
     if ($_SERVER["REQUEST_METHOD"] == "POST") { 

      $rating = $_POST['rating']; 

} 

?> 

<?php 

$choice = "You chose: "; 

    echo isset($rating) ? $choice.$rating : 'Make a selection'; 

?> 

<form method = "post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>"> 

     <input type="radio" name="rating" value="1"> 
     <input type="radio" name="rating" value="2"> 
     <input type="radio" name="rating" value="3"> 
     <input type="radio" name="rating" value="4"> 
     <input type="radio" name="rating" value="5"> 

<input type="submit" name="submit" value="Submit"> 

</form> 

</body> 
</html> 

Ссылки:

0

Ваш код кажется неполным. Хотя вы проверяете метод запроса POST, для отправки данных через метод POST нет формы.

<html> 
<body> 
    <?php 
    if ($_SERVER["REQUEST_METHOD"] == "POST") { 
     $rating = ""; 
     $rating = $_POST['rating']; 
     echo $rating; 
    } 
    else{ 
    ?> 
    <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" 
     <input type="radio" name="rating" value="1"> 
     <input type="radio" name="rating" value="2"> 
     <input type="radio" name="rating" value="3"> 
     <input type="radio" name="rating" value="4"> 
     <input type="radio" name="rating" value="5"> 
     <input type="submit" name="submit"> 
     <br> 
    </form> 
    <?php } //end of 'if' statement ?> 
</body> 
</html> 

For reference on html form