Algo assim
printf('<input type="radio" name="subscribedrips" value="Yes" %s /> Yes'."\n",
($subscribedrips == 'Yes' ? 'CHECKED' : ''));
printf('<input type="radio" name="subscribedrips" value="No" %s /> No'."\n",
($subscribedrips == 'No' ? 'CHECKED' : ''));
funciona. Ele usa o operador ternário para inserir
'CHECKED'
ou uma string vazia na tag de entrada, com base no valor de $subscribedrips
. Você também pode fazer de uma maneira mais detalhada, por exemplo, com switch:
$sel_y = '';
$sel_n = '';
switch($subscribedrips)
{
case 'Yes':
$sel_y = 'CHECKED';
break;
case 'No':
$sel_n = 'CHECKED';
break;
default:
// Neither need to be changed, so we dont even need this branch
break;
}
printf('<input type="radio" name="subscribedrips" value="Yes" %s /> Yes'."\n", $sel_y);
printf('<input type="radio" name="subscribedrips" value="No" %s /> No'."\n", $sel_n);
Preferência pessoal realmente.
Fragmento 1 atualizado
printf('<input type="radio" name="subscribedrips" value="Yes" %s /> Yes'."\n",
((array_key_exists('subscribedrips', $row) && $row['subscribedrips'] == 'Yes') ? 'CHECKED' : ''));
printf('<input type="radio" name="subscribedrips" value="No" %s /> No'."\n",
((array_key_exists('subscribedrips', $row) && $row['subscribedrips'] == 'No') ? 'CHECKED' : ''));
Fragmento 2 atualizado
$sel_y = '';
$sel_n = '';
if(array_key_exists('subscribedrips', $row))
{
switch($row['subscribedrips'])
{
case 'Yes':
$sel_y = 'CHECKED';
break;
case 'No':
$sel_n = 'CHECKED';
break;
default:
// Neither need to be changed, so we dont even need this branch
break;
}
}
printf('<input type="radio" name="subscribedrips" value="Yes" %s /> Yes'."\n", $sel_y);
printf('<input type="radio" name="subscribedrips" value="No" %s /> No'."\n", $sel_n);
Com relação à sua última pergunta, a diferença entre nossas abordagens é bem simples, mas mais uma vez (ahh!) é uma escolha de estilo, ambos atingem o mesmo objetivo, ambos os métodos são usados na "produção" de código PHP.
Meu exemplo constrói a tag de entrada inteira em PHP e a imprime. A abordagem de Valentinas extrai o texto estático das strings PHP e o coloca diretamente em HTML.
Por exemplo, as linhas a seguir resultarão todas na mesma saída:
<?php printf("<strong>%s</strong>", $some_string); ?>
<?php echo "<strong>$some_string</strong>"; ?>
<?php echo "<strong>".$some_string."</strong>"; ?>
<strong><?php echo $some_string; ?></strong>
Duvido que haja alguma diferença significativa de desempenho entre os dois métodos, mas há uma diferença cosmética que vou destacar.
-
Destaque de sintaxe - Se você usar um editor com realce de sintaxe, a abordagem do valentinas permitirá que o realce de sintaxe destaque adequadamente ainput
marca e seus atributos. Usando minha abordagem, a string inteira seria destacada da mesma forma. Aqui está uma captura de tela mostrando como o notepad++ destaca os dois métodos.
Como você pode ver, a abordagem de valentinas resulta em uma tela mais colorida, o que pode ajudar a identificar e rastrear erros.
Existem algumas diferenças sutis quando se trata de como seu código deve ser formatado se você quiser imprimir condicionalmente a tag inteira, mas não vale a pena falar sobre elas -- a maior, na minha opinião, é o realce de sintaxe.