Print variables from two foreach in a table in different columns - codeigniter

0

I'm trying to print a table that accesses the database and inserts the different values of each array in each column. The problem is not printing the values correctly.

Controller:

 private function mostrar_resultados() {

    //vai buscar o resultado da pesquisa
    $query = $this->Oportunidades_model->busca_oportunidade();
    $query1 = $this->Oportunidades_model->busca_funcao();

    //obtem o resultado em forma de array bidimensional
    $data['resultados_pesquisa'] = $query->result_array();
    $data['resultados_funcao']=$query1->result_array();

    //passa as variáveis anteriores para a view
    $this->load->view('verOportunidades', $data);

  }

Model:

class Oportunidades_model extends CI_Model {
  //fazer echo
  //edita um voluntario;
  function busca_oportunidade()
  {
    $interrogacaoVol_sql = "SELECT id_oport, descricao_oport FROM oportunidade";
    $query = $this->db->query($interrogacaoVol_sql);
    return $query;
  }

  function busca_funcao()
  {
    $interrogacaoVol_sql = "SELECT id_fun, descricao_fun FROM funcao";
    $query = $this->db->query($interrogacaoVol_sql);
    return $query;
  }
}

View:

<table class="table">
  <tr>
    <th>Descricao</th>
    <th>Função</th>
  </tr>

  <?php
  foreach ($resultados_pesquisa as $linha)
  {
    $descricao = $linha["DESCRICAO_OPORT"];

    foreach ($resultados_funcao as $key) {
      $funcao = $key["DESCRICAO_FUN"];
      echo "<tr><td>$descricao</td><td>$funcao</td></tr>";        
    }
  }
  ?>        
</table>

Output with 2 opportunities registered:

 Descricao  Função                          
    teste1      resultado1 
    teste1      resultado2
    teste2      resultado1
    teste2      resultado2

Desired:

  Descricao Função                          
    teste1      resultado1 
    teste2      resultado2
    
asked by anonymous 21.05.2016 / 18:48

1 answer

1
  

NOTE: I'll stick to what you put in the "desired" question. Looking at the rest of your code, it seems to me that you are not having a sure way to make the left column relate to the right one, but to solve this, you can not just ask what was asked. p>


Assuming $resultados_pesquisa and $resultados_funcao are the same size, this is enough:

<?php
   $count = count( $resultados_pesquisa );
   for( $i = 0; $i < $count; $i++ )
   {
      echo '<tr>';
      echo '<td>'.$resultados_pesquisa[$i]['DESCRICAO_OPORT'].'</td>';
      echo '<td>'.$resultados_funcao[$i]['DESCRICAO_FUN'].'</td>';
      echo '</tr>';        
   }
?>     

For security, you can $count for the value with less data:

   $count = min( count( $resultados_pesquisa ), count( $resultados_funcao) );

If the data is not in HTML, it is critical to use htmlentities :

   echo '<td>'.htmlentities($resultados_pesquisa[$i]['DESCRICAO_OPORT']).'</td>';

(same thing for next line).

    
22.05.2016 / 00:58