|
Posted by gosha bine on 08/22/07 19:35
Miyagi wrote:
> I have a bunch of conditions in which to determine different types of
> questions to ask in a survey I am constructing.
> Just was wondering if anybody has used a two-dimensional switch
> statement. If this works, is this an efficient coding method or would
> anybody else have another way around this?
>
> $type = enters _POST as (employee, client, or peer)
> $visit = enters _POST as ( 0 or 1 )
> $userage = enters _POST as ( 1, 2, 3, or 4)
> $ip is the IP address of the user
>
> function determineUser($type, $userage, $ip, $visit)
> {
>
> switch ($type){
> case 'employee':
> switch ($userage){
> case '1':
> case '2': if($visit){$surveyType=1;}else{$surveyType=2;} break;
> case '3':
> case '4': $surveyType=3; break;
> case 'client': if($visit){$surveyType=4;}else{$surveyType=5;}
> break;
> case 'peer': if($visit){$surveyType=6;}else{$surveyType=7;} break;
> }
>
> $query = "INSERT INTO user(userip, userage, idsurvey)
> VALUES('$ip','$userage','$surveyType')";
> mysql_query($query);
>
> return (getUserId($ip));
> }
>
> Thanks.
>
I think using an explicit configuration / lookup table would make the
code far more maintainable. Something along the lines of
function get_survey_type($type, $age, $visit)
{
// lookup key is either 'type-age-visit'
// or 'type-visit' (assumes any age)
static $map = array(
'employee-1-1' => 1,
'employee-2-1' => 1,
//
'client-1' => 4,
'client-0' => 5,
);
$key = "$type-$age-$visit";
if(isset($map[$key]))
return $map[$key];
$key = "$type-$visit";
if(isset($map[$key]))
return $map[$key];
return default or error;
}
--
gosha bine
extended php parser ~ http://code.google.com/p/pihipi
blok ~ http://www.tagarga.com/blok
Navigation:
[Reply to this message]
|