Отрисовка выбранного radio батона

221
06 июля 2017, 03:40

Например, в массиве есть ключ answer, со значением 2 и надо сделать, что бы появилась форма, с радиокнопками и автоматически, была нажата вторая.

Я это сделал, но у меня код очень большой, как можно его сократить?

    <?php
if($question['answer'] == 1) {
     echo '
       <label>1. <input name="answer" checked type="radio" value="1"></label>
       <label>2. <input name="answer" type="radio" value="2"></label>
       <label>3. <input name="answer" type="radio" value="3"></label>
       <label>4. <input name="answer" type="radio" value="4"></label>
        ';
}
if($question['answer'] == 2) {
     echo '
       <label>1. <input name="answer" type="radio" value="1"></label>
       <label>2. <input name="answer" checked type="radio" value="2"></label>
       <label>3. <input name="answer" type="radio" value="3"></label>
       <label>4. <input name="answer" type="radio" value="4"></label>
        ';
}
if($question['answer'] == 3) {
     echo '
       <label>1. <input name="answer" type="radio" value="1"></label>
       <label>2. <input name="answer" type="radio" value="2"></label>
       <label>3. <input name="answer" checked type="radio" value="3"></label>
       <label>4. <input name="answer" type="radio" value="4"></label>
        ';
}
if($question['answer'] == 4) {
     echo '
       <label>1. <input name="answer" type="radio" value="1"></label>
       <label>2. <input name="answer" type="radio" value="2"></label>
       <label>3. <input name="answer" type="radio" value="3"></label>
       <label>4. <input name="answer" checked type="radio" value="4"></label>
        ';
}

?>
Answer 1

Как то так:

function answers_echo($checked = 1, $count = 4)
{
    for( $i = 1; $i<=$count; $i++ )
    {
        $string = '<label>'.$i.'<input name="answer" ';
        if( $i == $checked )
        {
            $string .='checked ';
        }
        $string .= 'type="radio" value="'.$i.'"></label>';
        echo $string;
    }
}

т.е передаем значения лейбла, который должен быть отмечен и их количество. И кстати тут прям идеально использовать switch case

switch($question['answer'])
{
  case 1:
     answers_echo(1);
     break;
  case 2:
     answers_echo(2);
     break;
  case 3:
     answers_echo(3);
     break;
  case 4:
     answers_echo(4);
     break;
}

Хотя можно и так:

answers_echo($question['answer']);

P.S. Я бы посоветовал на досуге посмотреть что такое шаблонизаторы и для чего они нужны, т.к. выводить таким образом html не комильфо.

READ ALSO
Как выполнить скрипт только при первом просмотре страницы?

Как выполнить скрипт только при первом просмотре страницы?

Добрый день! Нужно поместить на страницу с заказом скрипт (js массив dataLayer с данными для GTM)Но, выполниться он должен при первом просмотре страници...

185
Выдернуть часть из массива

Выдернуть часть из массива

Есть код, на ответ выдаётся массив данных, как выдернуть содержимое строки title после знака =>

295
Сортировка в Closure Table

Сортировка в Closure Table

Привет! Можно ли сделать сортировку (напрпо полю position), и привести к иерархии с помощью SQL в MySql

245
Как получить значение из SimpleType в SOAPClient?

Как получить значение из SimpleType в SOAPClient?

Всем доброгоСразу к делу

282