Etwas in der Art
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' : ''));
funktioniert. Es verwendet den ternären Operator, um entweder 'CHECKED'
einzufügen oder eine leere Zeichenfolge in das Eingabe-Tag, basierend auf dem Wert von $subscribedrips
.
Sie können dies auch ausführlicher tun, zum Beispiel mit 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);
Persönliche Präferenz wirklich.
Aktualisiertes Snippet 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' : ''));
Aktualisiertes Snippet 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);
In Bezug auf Ihre letzte Frage ist der Unterschied zwischen unseren Ansätzen ziemlich einfach, aber noch einmal (ahh!) es ist eine Stilwahl, beide erreichen das gleiche Ziel, beide Methoden werden in „Produktions“-PHP-Code verwendet.
Mein Beispiel erstellt das gesamte Eingabe-Tag in PHP und gibt es aus. Der Ansatz von Valentinas zieht den statischen Text aus den PHP-Strings und fügt ihn direkt in HTML ein.
Beispielsweise führen die folgenden Zeilen alle zu derselben Ausgabe:
<?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>
Ich bezweifle, dass es einen signifikanten Leistungsunterschied zwischen den beiden Methoden gibt, aber es gibt einen kosmetischen Unterschied, den ich hervorheben möchte.
-
Syntax-Highlighting - Wenn Sie einen Editor mit Syntax-Highlighting verwenden, ermöglicht der Ansatz von Valentinas dem Syntax-Highlighter, die
input
entsprechend hervorzuheben -Tag und seine Attribute. Mit meinem Ansatz würde die gesamte Zeichenfolge gleich hervorgehoben werden. Hier ist ein Screenshot zeigt, wie Notepad++ die beiden Methoden hervorhebt.Wie Sie sehen können, führt der Ansatz von valentinas zu einer farbenfroheren Anzeige, die helfen könnte, Fehler zu identifizieren und aufzuspüren.
Es gibt einige subtile Unterschiede, wenn es darum geht, wie Ihr Code formatiert werden muss, wenn Sie das gesamte Tag bedingt drucken möchten, aber sie sind nicht wirklich der Rede wert – der größte ist meiner Meinung nach die Syntaxhervorhebung.