Gian Paolo Dolotina
Gian Paolo Dolotina

Reputation: 3

PHP (codeigniter) - How to check if the next two rows have value?

I wanted to check if the next TWO rows or ID is not NULL.

because if there is no succeeding TWO rows or ID then the income remains zero.

        foreach ($data as $row)
        {
          if(($row->id + 2) != NULL) //I don't know what is the correct statement here
          {
            echo "<tr>";
            echo "<td>".$row->id."</td>"; 
            echo "<td>".$row->username."</td>"; 
            echo "<td>"."650.00"."</td>"; 
            echo "<td>".$row->remarks."</td>"; 
            echo "<tr>";
          }
          else
          {
            echo "<tr>";
            echo "<td>".$row->id."</td>"; 
            echo "<td>".$row->username."</td>"; 
            echo "<td>".$row->income."</td>"; 
            echo "<td>".$row->remarks."</td>"; 
            echo "<tr>"; 
          }                  
        }

Here is the table I want to achieve.

==================================
|ID | Username | Income | Remarks|
| 2 | user1    | 650.00 |        |
| 3 | user2    | 650.00 |        |
| 4 | user3    |   0.00 |        |
| 5 | user4    |   0.00 |        |
==================================

If I add a username then the next output will be this:

==================================
|ID | Username | Income | Remarks|
| 2 | user1    | 650.00 |        |
| 3 | user2    | 650.00 |        |
| 4 | user3    | 650.00 |        |
| 5 | user4    |   0.00 |        |
| 6 | user5    |   0.00 |        |
==================================

Upvotes: 0

Views: 86

Answers (2)

Gian Paolo Dolotina
Gian Paolo Dolotina

Reputation: 3

I solved the problem...

this is the code from my controller:

public function addUsername()
{
  $data['id'] = NULL;
  $data['username'] = $this->input->post('username');
  $data['reward'] = 0.00;
  $data['remarks'] = ' ';

  $this->Matrix_model->addUsername($data);
  $last = $this->Matrix_model->getLast();
  $index = $last - 2; //I minus the last index with two
  $this->Matrix_model->updateIncome($index); //and updated the income of that index
  redirect('http://localhost/matrix/index.php/matrix');
}

and this is the code from my model:

public function addUsername($data)
   {
    $this->db->insert("income", $data);
   }

public function getLast()
  {
    return $this->db->insert_id(); //this is the method to access the last id inserted
  }

public function updateIncome($id)
  {
     $this->db->set("reward", 650);
     $this->db->where("id", $id); 
     $this->db->update("income"); 
  }

thank you and I'm sorry if other programmers didn't understand my questions

Upvotes: 0

TehSphinX
TehSphinX

Reputation: 7440

You need to change your foreach to get the index.

    foreach ($data as $index => $row)

Then you can address all rows relative to your current row with:

    $row_two_ahead = $data[$index + 2];

you should check however if that row exists before you try to use it or you will get index out of range exceptions:

    if (isset($data[$index + 2])) {
    }

Upvotes: 1

Related Questions