Re: Elegance is the goal... Sticky form submit help

From: Date: Sat, 11 Sep 2010 16:39:01 +0000
Subject: Re: Elegance is the goal... Sticky form submit help
References: 1  Groups: php.general 
Request: Send a blank email to php-general+get-307952@lists.php.net to get a copy of this message
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> 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"; ?> On Sep 11, 2010, at 8:49 AM, Jason Pruim wrote:
Hey everyone! Hope you are having a great weekend, and I'm hoping someone might be coherent enough to help me find a more elegant solution to a problem that I have... I have a form for submitting an event to a website, and if the form is not submitted successfully (such as they didn't fill out a required field) I want it to redisplay the form with inline errors as to what happened and display the values they selected... I have a working solution but was hoping for something a little more elegant. And something that would work better for a month selector as well... Here is the relevant code that I have that works: <?PHP
       if ($_POST['hidSubmit'] ==TRUE & $_POST['type'] == "meeting"):
echo <<<HTML
       <select name="type" id="type">
           <option value="0">-- select type --</option>
           <option value="meeting" selected>Meeting</option>
           <option value="event" >Event</option>
       </select>
HTML; elseif ($_POST['hidSubmit'] == TRUE & $_POST['type'] == "event"): //if ($_POST['hidSubmit'] == TRUE & $_POST['type'] == "event") { echo <<<HTML
       <select name="type" id="type">
           <option value="0">-- select type --</option>
           <option value="meeting">Meeting</option>
           <option value="event" selected>Event</option>
       </select>
HTML; else: //if ($_POST['hidSubmit'] != TRUE): echo <<<HTML
       <select name="type" id="type">
           <option value="0" selected>-- select type --</option>
           <option value="meeting">Meeting</option>
           <option value="event">Event</option>
       </select>
HTML; endif; ?> which works BUT I don't want to have to have that for a month selector or a day selector :) Any ideas what I'm missing? --PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php


« previous php.general (#307952) next »