Почему атрибут Checked не работает для переключателя с использованием PHP?

#php

#php

Вопрос:

Вот мой фрагмент кода:

 echo "<tr>
    <td>Fruits</td>
    <td>
    <input type='radio' name='fruit' value='Apple'    ($fruit=='Apple')?'checked':''> Apple
    <input type='radio' name='chamber' value='Banana' ($fruit=='Banana')?'checked':''> Banana</td>
    </tr>";
  

Значение $fruit равно Apple , но атрибут переключателя по-прежнему не установлен checked .

Комментарии:

1. и почему вы используете переключатель, когда у них другой атрибут name? Просто используйте флажок

2. Я предполагаю, что name='chamber' это просто опечатка?

3. @jeroen: хороший улов

Ответ №1:

Если вы проверите вывод этого, вы увидите, что оператор не будет выполняться так, как вы хотите, потому что он находится внутри " " . Вам нужно прервать " before и продолжить после проверки следующим образом:

 echo "<tr>
 <td>Fruits</td>
 <td>
 <input type='radio' name='fruit' value='Apple'  " .  (($fruit=='Apple')?'checked="checked"':'') . "> Apple
 <input type='radio' name='chamber' value='Banana' " .(($fruit=='Banana')?'checked="checked"':'') . "> Banana</td>
</tr>";
  

И лучше включить все внутренние скобки (...) , чтобы не связываться с чем-то еще.

Также лучше иметь checked="checked" , когда вы хотите пометить что-то как отмеченное.

Ответ №2:

Проще всего проверить, если обнаружена какая-либо проблема:

 if($fruit=='Apple') $check="checked"; else $check="";
if($fruit=='Banana') $check="checked"; else $check="";
	
echo "<tr>
 <td>Fruits</td>
 <td>
 <input type='radio' name='fruit' value='Apple'  " .$check. "> Apple
 <input type='radio' name='chamber' value='Banana' " .$check. "> Banana</td>
</tr>";  

Ответ №3:

В вашем примере вы можете либо добавить ?'checked':'' внутри ($fruit=='Apple') , либо добавить еще одну скобку для всех ternary .

Пример (лучше использовать <?php ?> там, где вам нужно):

 <tr>
<td>Fruits</td>
<td>
<input type='radio' name='fruit' value='Apple' <?=($fruit=='Apple' ? 'checked' : '')?>> Apple
<input type='radio' name='fruit' value='Banana' <?=($fruit=='Banana' ? 'checked' : '')?>> Banana</td>
</tr>