CyberJunkie
CyberJunkie

Reputation: 22674

Codeigniter create associative array from database and use in dropdown

I have a database table named Categories. I want to create a form dropdown containing all the categories in the db. My solution is to create an associative array and add it in the second parameter of the form_dropdown() function. My result is an unwanted multidimensional array.

Model:

function list_categories()
    {
        $user_id = $this->tank_auth->get_user_id();

        $this->db->where('user_id', $user_id);
        $this->db->order_by("date_created", "desc");
        $query = $this->db->get('categories');
        return $query;      
    }

View:

//create array
$categories = array();

if ($query->num_rows() > 0) 
{
     $categories = $query->result_array();
}

//create dropdown
echo form_dropdown('category', $categories, $date_created); //selected value based date created

The code gives a multidimensional array

Array ( 
[0] => Array ( [cat_id] => 27 [user_id] => 3 [cat_title] => Some Title [status] => 0 [date_created] => 2012-06-22 18:48:14 ) 

[1] => Array ( [cat_id] => 24 [user_id] => 3 [cat_title] => Title [status] => 0 [date_created] => 2012-06-20 19:37:47 ) 

[2] => Array ( [cat_id] => 23 [user_id] => 3 [cat_title] => Another Title [status] => 0 [date_created] => 2012-06-20 18:25:45 ) 

etc...

How can I replace the result above with an Associative Array where the ID key is the category id and value the category title?

Example:

$categories = array(
    "23" => "some title",
    "14" => "another title",
);

Upvotes: 0

Views: 9988

Answers (4)

Kiran
Kiran

Reputation: 1210

Use this simple method,

$query = $this->db->get_where('table', array('table_id' => $id));

        $queryArr = $query->result();        

        foreach ($queryArr[0] as $key=>$val)
        {
            $row[$key]=$val;
        }

print_r($row); //this will give associative array

Upvotes: 0

bradhanks
bradhanks

Reputation: 422

You can use _list() function in the html_helper to make nested list from multi-dimensional arrays

Upvotes: 0

Alaa Gamal
Alaa Gamal

Reputation: 1135

SOLUTION WITH AN EXAMPLE:

$categories=array(
'0'=>array("cat_id"=>"27","cat_title"=>"some title"),
'1'=>array("cat_id"=>"24","cat_title"=>"Title"),
'2'=>array("cat_id"=>"23","cat_title"=>"Another Title"),
);

   foreach($categories as $catID=>$categoriesData){
        $finalArray[$categoriesData["cat_id"]]=$categoriesData;
   }

print_r($finalArray);


/*
OUTPUT

Array
(
    [27] => Array
        (
            [cat_id] => 27
            [cat_title] => some title
        )

    [24] => Array
        (
            [cat_id] => 24
            [cat_title] => Title
        )

    [23] => Array
        (
            [cat_id] => 23
            [cat_title] => Another Title
        )

)
*/

Upvotes: 5

Mike Mackintosh
Mike Mackintosh

Reputation: 14237

Do something like:

foreach($categories as $category){
    $category_array[$category['cat_id']] = $category['cat_title'];
}

$categories = $category_array;

This will assign the category ID as the array key, and the title as the value, for use in the dropdown.

Upvotes: 1

Related Questions