Hi all,

Having trouble with the logic behind this.

I have a dynamic SKU, and a dynamic size_range array.

Examples:

$sku = '44044';
$size_range = array('S', 'M', 'L');


Which I use to build a pull down select box:

<SELECT name="myselect">
<?
foreach($sizes as $k => $v)
    {
    echo "<OPTION value=\"$v\">$v</OPTION>";
    }
?>
</SELECT>


Note, the select's name is just a string now, not an array.  Sinxe there are
many SKU's on the page, What I'd like to do is dynamically generate this
name, so that each SKU is part of an array. Eg:

$selected_size['44044'] = 'M';
$selected_size['44045'] = 'S';
$selected_size['44046'] = 'L';
etc etc

This will make processing the data HEAPS easier.


So I need to dynamically generate the SELECT's name:

<SELECT name="selected_size['<?=$sku?>']>

Easy.


BUT, since this form may be spat back out to the user if fields were left
blank, etc etc, I like to do something like:

<SELECT name="myselect">
<?
foreach($sizes as $k => $v)
    {
    $myselect = $_POST['myselect'];
    if($myselect == $v) { $sel = " selected"; } else { $sel = ""; }
    echo "<OPTION value=\"{$v}\"{$sel}>{$v}</OPTION>";
    }
?>
</SELECT>

Which ensures that any values they did select will still be selected when
they get given the form again to make changes.

Trouble is, with a dynamically assigned SELECT name, I have no idea how to
test for an existing value.

I thought it'd be something like:

<SELECT name="myselect['<?=$sku?>']">
<?
foreach($sizes as $k => $v)
    {
    $myselect["$sku"] = $_POST['myselect']["$sku"];
    if($myselect["$sku"] == $v) { $sel = " selected"; } else { $sel = ""; }
    echo "<OPTION value=\"{$v}\"{$sel}>{$v}</OPTION>";
    }
?>
</SELECT>

But this isn't working.  My guess is that I need variable variables, or some
other way of referencing the select's name.

Any ideas welcome.



Justin French


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to