#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>