Något sånt här
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' : ''));
Arbetar. Den använder den ternära operatorn för att antingen infoga 'CHECKED'
eller en tom sträng i inmatningstaggen, baserat på värdet på $subscribedrips
.
Du kan också göra på ett mer utförligt sätt, till exempel med 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);
Egentligen personliga preferenser.
Uppdaterat kodavsnitt 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' : ''));
Uppdaterad kodavsnitt 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);
När det gäller din sista fråga är skillnaden mellan våra tillvägagångssätt ganska enkel, men återigen (ahh!) det är ett stilval, båda uppnår samma mål, båda metoderna används i "produktion" av PHP-kod.
Mitt exempel bygger hela input-taggen i PHP och skriver ut den. Valentinas tillvägagångssätt drar ut den statiska texten ur PHP-strängarna och lägger den direkt i HTML.
Till exempel kommer alla följande rader att resultera i samma utdata:
<?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>
Jag är tveksam till att det finns någon betydande prestandaskillnad mellan de två metoderna, men det finns en kosmetisk skillnad som jag ska lyfta fram.
-
Syntaxmarkering - Om du använder en editor med syntaxmarkering, kommer Valentinas tillvägagångssätt att tillåta syntaxmarkeringen att på lämpligt sätt markera
input
taggen och dess attribut. Med mitt tillvägagångssätt skulle hela strängen markeras på samma sätt. Här är en skärmdump visar hur notepad++ framhäver de två metoderna.Som du kan se resulterar Valentinas tillvägagångssätt i en mer färgstark display, vilket kan hjälpa till att identifiera och spåra fel.
Det finns några subtila skillnader när det kommer till hur din kod måste formateras om du vill skriva ut hela taggen villkorligt, men de är inte riktigt värda att prata om -- den största, enligt min mening, är syntaxmarkeringen.