From: Jason Woofenden Date: Tue, 16 Oct 2007 23:05:39 +0000 (-0400) Subject: fixed pulldown() so you can have two elements with the same value X-Git-Url: https://jasonwoof.com/gitweb/?p=wfpl.git;a=commitdiff_plain;h=1b3ef2591aad28325486101883dd7c8a22d56670 fixed pulldown() so you can have two elements with the same value --- diff --git a/encode.php b/encode.php index bad7b4b..b29cd09 100644 --- a/encode.php +++ b/encode.php @@ -143,27 +143,27 @@ function enc_provinces($str) { define('PULLDOWN_ARRAY', 0); define('PULLDOWN_HASH', 1); define('PULLDOWN_2D', 2); -function pulldown_options_to_hash($options, $keys_from) { +function pulldown_options_to_2d($options, $keys_from) { # convert other types of input to value=>display hash switch($keys_from) { case PULLDOWN_HASH: - return $options; - case PULLDOWN_ARRAY: $new_options = array(); - foreach($options as $opt) { - $new_options[$opt] = $opt; + foreach($options as $value => $display) { + $new_options[] = array($value, $display); } return $new_options; - break; - case PULLDOWN_2D: + case PULLDOWN_ARRAY: $new_options = array(); foreach($options as $opt) { - $new_options[$opt[0]] = $opt[1]; + $new_options[] = array($opt, $opt); } return $new_options; break; + case PULLDOWN_2D: + return $options; + break; default: - die('unknown value: "' . print_r($keys_from) . '" passed in $keys_from parameter'); + die('pulldown_options_to_2d(): unknown value: "' . print_r($keys_from) . '" passed in $keys_from parameter'); } } @@ -187,7 +187,7 @@ function pulldown_options_to_hash($options, $keys_from) { # multiple: UNTESTED set to true for multiple-select boxes. function pulldown($name, $options, $keys_from = PULLDOWN_ARRAY, $multiple = false) { - $options = pulldown_options_to_hash($options, $keys_from); + $options = pulldown_options_to_2d($options, $keys_from); $GLOBALS[$name . '_options'] = array(); $GLOBALS[$name . '_options']['options'] = $options; $GLOBALS[$name . '_options']['multiple'] = $multiple; @@ -201,7 +201,7 @@ function enc_options($values, $name) { if($GLOBALS[$name . '_options']['multiple']) { # FIXME test this $values = explode(', ', $values); } - return encode_options($values, $GLOBALS[$name . '_options']['options'], PULLDOWN_HASH); + return encode_options($values, $GLOBALS[$name . '_options']['options'], PULLDOWN_2D); } # use this function along with a special template to generate the html for pulldowns and multiple select boxes. @@ -216,10 +216,13 @@ function encode_options($selected, $options, $keys_from) { $selected = array($selected); } - $options = pulldown_options_to_hash($options, $keys_from); + if($keys_from != PULLDOWN_2D) { + $options = pulldown_options_to_2d($options, $keys_from); + } $out = ''; - foreach($options as $value => $display) { + foreach($options as $valdisp) { + list($value, $display) = $valdisp; $out .= '