soulpower
soulpower

Reputation: 79

fetch data from model that is called in loop

I have a controller function in CodeIgniter that looks like this:

$perm = $this->job_m->getIdByGroup();
foreach($perm as $pe=>$p)
{
    $pId  =  $p['id'];
    $result = $this->job_m->getDatapermission($pId);
}

$data['permission'] = $result;

What I need to do is list the data in the result in the view, but I get only the last value while using this method. How can I pass all the results to the view?

Upvotes: 0

Views: 72

Answers (3)

Steward Godwin Jornsen
Steward Godwin Jornsen

Reputation: 1179

Note:

My answer uses a counter to enable the display of a single group result when needed.

Guessing from your need to loop and display the value of $result, possibly, it is an array or object returned by $query->result(). Things could be a bit complex.

Example: if $perm is an array of 5 items( or groups), the counter assigns keys 1 - 5 instead of 0 - 4 as would [] which could be misleading. Using the first view example, you could choose to display a single group value if you wants by passing it via a url segment. Making the code more flexible and reusable. E.g. You want to show just returns for group 2, in my example, $result[2] would do just that else next code runs. See my comments in the code.

$perm = $this->job_m->getIdByGroup();
$counter = 1; 
foreach($perm as $pe=>$p)
{
    $pId  =  $p['id'];
    $result[$counter] = $this->job_m->getDatapermission($pId);
$counter++;
}

$data['permission'] = $result;

As mentioned above Note:

I Added a Counter or Key so you target specific level. If the groups are: Men, Women, Boys, Girls, Children; you'd know women is group two(2) If you desire to display values for just that group, you don't need to rewrite the code below. Just pass the group key would be as easy as telling it by their sequence. To display all the loop without restrictions, use the second view example. To use both, use an if statement for that.

###To access it you could target a specific level like 

if(isset($permission)){
    foreach($permission[2] as $key => $value){
        echo $value->columnname;
    }


###To get all results:

    foreach($permission as $array){
        foreach($array as $key => $value){
            echo $value->columnname;
        }
    }
}

Upvotes: 0

Reshil
Reshil

Reputation: 481

Store it in an array. Like this:

foreach($perm as $pe=>$p){
   $result[] = $this->job_m->getDatapermission($p['id']);
}

Upvotes: 1

Rahul Chipad
Rahul Chipad

Reputation: 2411

Because $result is not an array...

try this:

$result=array();
foreach($perm as $pe=>$p)
{
    $pId  =  $p['id'];
    $result[] = $this->job_m->getDatapermission($pId);
}

$data['permission'] = $result;

Upvotes: 0

Related Questions