Richard Lynch wrote:
> On Thu, October 26, 2006 8:31 am, Jochem Maas wrote:
>> bunch of space wasters ;-)
>>
>> <?php foreach (range(1, 31) as $d) echo '<option value="',$d,'"',($d =
>> $selDay?'
>> selected="selected"':''),'>',$d,'</option>'; ?>
>
> You messed up. :-)
dang :-P try again:
function genDayOptionTags($c = 31, $sv = 0, $eco = 1)
{
$o = '';
foreach (range(1, $c) as $d)
$o .= '<option value="',$d,'"',
($d == $sv?' selected="selected"':''),
'>',$d,'</option>';
if ($eco) echo $o; return $o;
}
genMonthSelectTag($m = 1, $sv = 0, $attrs = array(), $eco = 1)
{
// allowed attribs
static $dattr = array('name' => 1, 'id' => 1, 'class' => 1, 'name' =>
1,);
// speedy literal for looking up number of days
static $h = array(1,2,3,4,5,6,7,8,9,10,11,12);
// 'normalize' month (13 -> 1, 14 -> 2, 15 -> 3, etc)
$m -= ((intval($m) % 12) * 12);
// php5.1.0RC1 or higher for array_intersect_key
// otherwise STW for a userland variant (PEAR)?
$attrs = array_intersect_key($attrs, $dattrs);
foreach ($attrs as $k => $v) $attrs[$k] = $v ? "{$k}=\"{$v}\"": '';
$o = '<select name="'.join(' ',
array_filter($attrs)).'>'.genDayOptions($h[$m], $sv, 0).'</select>';
if ($eco) echo $o; return $o;
}
the point being that if your going to put things like this into a function
then you might as well do it properly and completely generalize the generation
of
a select tag and it's options. (as opposed to the above banality :-)
>
> $d == $selDay would be the correct expression in the middle of that.
>
> My personal choice is:
>
> $last_day = 31; //calculated from date()/mktime() etc
> for ($day = 1; $day <= $last_day; $day++){
> $selected = $chosen_day == $ ? 'selected="selected"' : '';
$ ? ;-)
> echo " <option $selected>$day</option>\n";
> }
lately I have been fond of dropping braces around single if/foreach expressions,
I like the fact it makes the code compacter.
>
> I don't *think* the w3c requires/recommends a value= in there, if the
> label *IS* the value, but can live with it either way...
> echo " <option value=\"$day\" $selected>$day</option>\n";
> is fine.
>
> I used to be distracted by \" but I've grown so used to it that it no
> longer bothers me in my reading flow, unless it's excessive and the
> expression spans multiple lines.
I know that feeling. :-)
>
> Separation of logic and presentation is all very well, but this isn't
> even business logic. It's "presentation logic" which, to me,
> shouldn't be crammed into the complex business portion of my
> application.
here, here.
>
> I'd much rather have the complex business logic focus on the
> application needs than the minutae of date formatting.
quite, why would business logic need to deal with anything other
than a timestamp (+zone) ?
>
> It's all down to personal choice, though.
>
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php