Coś takiego
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' : ''));
Pracuje. Używa operatora trójargumentowego do wstawienia 'CHECKED'
lub pusty ciąg do tagu input, na podstawie wartości $subscribedrips
.
Możesz też zrobić to w bardziej gadatliwy sposób, na przykład za pomocą przełącznika:
$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);
Naprawdę osobiste preferencje.
Zaktualizowany fragment 1
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' : ''));
Zaktualizowany fragment 2
$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);
Jeśli chodzi o twoje ostatnie pytanie, różnica między naszymi podejściami jest dość prosta, ale po raz kolejny (ahh!) jest to wybór stylu, obie osiągają ten sam cel, obie metody są używane w "produkcyjnym" kodzie PHP.
Mój przykład buduje cały tag input w PHP i drukuje go. Podejście Valentinasa wyciąga statyczny tekst z ciągów PHP i umieszcza go bezpośrednio w HTML.
Na przykład wszystkie poniższe wiersze dadzą ten sam wynik:
<?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>
Wątpię, czy istnieje jakakolwiek znacząca różnica w wydajności między tymi dwiema metodami, ale jest jedna kosmetyczna różnica, którą podkreślę.
-
Podświetlanie składni - Jeśli używasz edytora z podświetlaniem składni, podejście walentynek pozwoli podświetlaczowi składni odpowiednio podświetlić
input
tag i jego atrybuty. Stosując moje podejście, cały ciąg byłby podświetlony tak samo. Oto zrzut ekranu pokazuje, jak notepad++ wyróżnia te dwie metody.Jak widać podejście walentynek skutkuje bardziej kolorowym wyświetlaczem, co może pomóc w identyfikacji i śledzeniu błędów.
Istnieją pewne subtelne różnice, jeśli chodzi o formatowanie kodu, jeśli chcesz warunkowo wydrukować cały tag, ale tak naprawdę nie warto o nich mówić — moim zdaniem największą jest podświetlanie składni.