problems with an array

PHP programming forum. Ask questions or help people concerning PHP code. Don't understand a function? Need help implementing a class? Don't understand a class? Here is where to ask. Remember to do your homework!

Moderator: General Moderators

Post Reply
nineseveninteractive
Forum Newbie
Posts: 7
Joined: Mon Jun 25, 2007 6:13 pm

problems with an array

Post by nineseveninteractive »

hi

i'm having a problem with the search function on the following site http://www.jasonmillward.com

basically when you use the drop to perform a search it all works fine and pulls the correct results from the database expect when you do a search for the first term in the array - in this case hotel / catering jobs where by the full results are shown.

below is the code that performs the search


Code: Select all

function career_level($c, $id) {
	
	$levels = array("Hotel / Catering Jobs", "Industrial / Warehouse Jobs", "Office Jobs", "Sales Jobs");

	if($id >= '0')
	{
		$level = $levels[$id];
		return $level;
	
	}
	else
	{
		$select = "<select name=\"careerlevel\">\n\t";

		while(list($k,$v) = each($levels))
		{
			if($c >= '0')
			{
				if($c == $k)
				{
					$select .= "<option value=\"$k\" selected>$v</option>\n\t";
				}
				else
				{
					$select .= "<option value=\"$k\">$v</option>\n\t";
				}
			}
			else
			{
				$select .= "<option value=\"$k\">$v</option>\n\t";
			}
		}

		$select .= "</select>\n\n";

		return $select;
	}
}
coud anyone tell me why thsi is happening and how i would go about correcting the problem. i've been trying for a few days with no joy

many thanks in advance
User avatar
feyd
Neighborhood Spidermoddy
Posts: 31559
Joined: Mon Mar 29, 2004 3:24 pm
Location: Bothell, Washington, USA

Post by feyd »

I'm not quite sure how your problem and this function connect.
User avatar
RobertGonzalez
Site Administrator
Posts: 14293
Joined: Tue Sep 09, 2003 6:04 pm
Location: Fremont, CA, USA

Post by RobertGonzalez »

You might be able to clean that code a little to start...

Code: Select all

<?php
function career_level($c, $id) { 
    $levels = array("Hotel / Catering Jobs", "Industrial / Warehouse Jobs", "Office Jobs", "Sales Jobs"); 
    
    // This does not need quotes
    // Also, what if $id is 45667564? Perhaps you could check ...
    if($id >= 0 && $id <= count($levels)) { 
        return $levels[$id]; // No need for an assignment either
    } else { 
        $select = '<select name="careerlevel">' . "\n\t";
        
        // I am more of the foreach guy myself, mainly because of the reset pointer
        foreach($levels as $k => $v) { 
            // Again, no need for quotes
            // In fact, no need for this equality check here
            $selected = $c == $k ? ' selected="selected"' : '';
            $select .= '<option value="' . $k . '"' . $selected . '>' . $v . '</option>' . "\n\t"; 
        } 
        $select .= '</select>' . "\n\n"; 
        return $select; 
    } 
}
?>
Post Reply