Re: Elegance is the goal... Sticky form submit help
| From: | Jim Lucas | Date: | Sat, 11 Sep 2010 19:27:46 +0000 |
| Subject: | Re: Elegance is the goal... Sticky form submit help | ||
| References: | 1 2 3 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-307962@lists.php.net to get a copy of this message | ||
Jason Pruim wrote:
Hi Tamara, On Sep 11, 2010, at 12:39 PM, Tamara Temple wrote:Here is a combination of Tamara's method and they way that I would do it based off her example. Some of hers didn't work for me out of the box, so I modified it to my liking. Then I included your request to do HEREDOC syntax for outputting the list. <?php $o = array(); for ($m = 1; $m <= 12; $m++) { $sel = ($curr_month == $m ? ' selected="selected"':''); $mname = date('F', mktime(0,0,0,$m));Rather than repeating all that code, I suggest the following: <select name="type" id="type> <option value="0">-- select type --</option> <option value="meeting" <?php echo (isset($_POST['hidSubmit'] && $_POST['hidSubmit'] == TRUE && $_POST['type'] == "meeting") ? "selected" : '' ?> <option value="event" <?php echo (isset($_POST['hidSubmit'] && $_POST['hidSubmit'] == TRUE && $_POST['type'] == "event") ? "selected" : '' ?> </select>That's actually what I'm trying to get away from. I was hoping to do it all in HEREDOC syntax. I've always thought it made it cleaner. But that is a personal opinion :)For a month selector, try: <?php // assume current month number is in $curr_month $months = array(1 => "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"); // will create an array of month names, with a starting base of 1 (instead of zero) echo "<select name=\"month\" id=\"month\">\n"; foreach ($months as $m => $mname) { echo "<option value=\"$m\""; if ($curr_month == $m) echo " selected "; echo ">$mname</option>\n"; } echo "</select>\n"; ?> There are other possiblities as well. One time, I didn't want to actually store the month names, perhaps allowing them to be localized. Instead I used strftime, which will return appropriate names based on locale: <?php // assume current month number is in $curr_month echo "<select name=\"month\" id=\"month\">\n"; for ($m = 1; $m <= 12; $m++) { echo "<option value=\"$m\""; if ($curr_month == $m) echo " selected "; echo ">"; $mname = strftime("%B", 0,0,0,2010, $m, 1); // time, year and day don't matter, all we're after is the appropriate month name set in the locale echo $mname; echo "</option>\n"; } echo "</select>\n"; ?>I'm actually doing something similar to that right now... <?PHP if (isset($_POST)) { $date = date("n", $i); echo $date; $i++; } ?> Prints just the numeric reference to the month.
$o[] = ' <option value="'.(int)$m.'"'.$sel.'>'.
htmlspecialchars($mname).'</option>';
}
$select_month_options = join("\n", $o);
echo <<<HTML
<select name="month" id="month">{$select_month_options}
</select>HTML; ?> Jim