Ir para conteúdo

Recommended Posts

Pessoal,

Estou fazendo um relatório no codeigniter, mas não consigo recuperar o retorno da model para a view.  Dou o foreach para utilizar um conjunto de id's que preciso achar em uma tabela, mas o array só recupera o último.

Controller:

$destinoterc=$this->triangulomodel->getDestinoterc($origemuser);
        $dados['destinoterc']=$destinoterc;
        foreach ($destinoterc as &$i){
            $origemterc = $i['id'];
            $origemtercfinal=$this->triangulomodel->getOrigemterc($origemterc);
            
            
        }
        $dados['origterc']= $origemtercfinal;
       

Model

public function getOrigemterc($origemterc){
    		
    		$query =$this->db->query("SELECT * FROM cadastro
    		join tb_cidades on tb_cidades.cid_id=cadastro.cidade_origem
    	    where id =$origemterc");
    		    		
    		foreach ($query->result_array() as $row)
				{	
    			}
    			
    		 return 	$query->result_array(); 
    	}

 

Resultado , só está pegando o último ponteiro da array de origem. Teria que aparecer uns 30 registros.!

[origterc] => Array
        (
            [0] => Array
                (
                    [id_] => 21302
                   
                    [cidade] => 3233
                    
                    [cid_nome] => Januaria
                )

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!
 

1 hour ago, clovis.sardinha said:

foreach ($query->result_array() as $row)

Quando o sr. executou esse $query->result_array(), a fila foi "limpada"

 

Quando o sr. executou novamente esse $query->result_array(), não deveria retornar nenhum resultado.

1 hour ago, clovis.sardinha said:

return $query->result_array();

 

Sugestão:

<?php
public function getOrigemterc($origemterc)
{

  $query = $this->db->query("SELECT * FROM cadastro
    join tb_cidades on tb_cidades.cid_id=cadastro.cidade_origem
      where id =$origemterc");
  
  // guarde o resultado em uma variável
  $result = $query->result_array();

  foreach ($result as $row) {
    // faça o que precisar
  }

  // e retorne a variável onde o resultado foi guardado
  return $result;
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
13 horas atrás, clovis.sardinha disse:

Obrigado. Acho que ai resolve minha questão.  Valeu.

 

13 horas atrás, washalbano disse:

Olá!
 

Quando o sr. executou esse $query->result_array(), a fila foi "limpada"

 

Quando o sr. executou novamente esse $query->result_array(), não deveria retornar nenhum resultado.

 

Sugestão:


<?php
public function getOrigemterc($origemterc)
{

  $query = $this->db->query("SELECT * FROM cadastro
    join tb_cidades on tb_cidades.cid_id=cadastro.cidade_origem
      where id =$origemterc");
  
  // guarde o resultado em uma variável
  $result = $query->result_array();

  foreach ($result as $row) {
    // faça o que precisar
  }

  // e retorne a variável onde o resultado foi guardado
  return $result;
}

 

Não resolveu, continua vindo só o ultimo resultado. Eu consigo resultado das linhas, por exemplo

foreach

($query->result_array() as $row)
                {    
                      $row['cid_nome']."<br>"; // se eu dou um echo aqui vai aparecer na view direto todos os "cid_nome"
                     
                }

mas o array continua sendo só o último "cid_nome" 

Não sei como passar este resultado da $row, que me interessa, para a view. 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por clovis.sardinha
      Como fazer para colocar um spinner antes de carregar os dados do bd? Eu clico no link e entra na função do controle e só vai para a página da views quando já está pronto a query. Vi uns exemplos de colocação de spinner, mas se a página ainda não apareceu como faço? Vou anexar a função que chama a página para facilitar. 
      public function inativos()  {     $session = \Config\Services::session();     $pager = \Config\Services::pager();     $usuarios=$this->usuarios->getInativos();//faz a query no bd.     $dados=[         'usuarios'=>$usuarios,         'pager'=>$this->usuarios->pager,     ];     echo view('Admin/Relatorios/listaInativos',$dados); }   
    • Por mark1978
      Boa noite srs, tem o código abaixo e esta funcionando normal e carregando o Qrcode no HTML na soma.
      Porém gostaria de alterar e que fosse da seguinte forma:
      Se "totalServico" for menor que "totalProdutos" e diferente de zero então carregue o Qr Code com esse valor
      Se não o valor for "0,00" carregue o valor "totalProdutos". Essa finalidade é para ter uma opção de desconto.
       
      <?php use Piggly\Pix\StaticPayload; class Os_model extends CI_Model { public function getProdutos($id = null) { $this->db->select('produtos_os.*, produtos.*'); $this->db->from('produtos_os'); $this->db->join('produtos', 'produtos.idProdutos = produtos_os.produtos_id'); $this->db->where('os_id', $id); return $this->db->get()->result(); } public function getServicos($id = null) { $this->db->select('servicos_os.*, servicos.nome, servicos.preco as precoVenda'); $this->db->from('servicos_os'); $this->db->join('servicos', 'servicos.idServicos = servicos_os.servicos_id'); $this->db->where('os_id', $id); return $this->db->get()->result(); } public function valorTotalOS($id = null) { $totalServico = 0; $totalProdutos = 0; if ($servicos = $this->getServicos($id)) { foreach ($servicos as $s) { $totalServico = $totalServico + $s->preco; } } if ($produtos = $this->getProdutos($id)) { foreach ($produtos as $p) { $totalProdutos = $totalProdutos + $p->subTotal; } } return ['totalServico' => $totalServico, 'totalProdutos' => $totalProdutos]; } public function getQrCode($id, $pixKey, $emitente) { if (empty($id) || empty($pixKey) || empty($emitente)) { return; } $result = $this->valorTotalOS($id); $amount = round(floatval($result['totalServico'] + $result['totalProdutos']), 2); if ($amount <= 0) { return; } $pix = (new StaticPayload()) ->applyValidCharacters() ->applyUppercase() ->setPixKey(getPixKeyType($pixKey), $pixKey) ->setMerchantName($emitente->nome, true) ->setMerchantCity($emitente->cidade, true) ->setAmount($amount) ->setTid($id) ->setDescription(sprintf("%s OS %s", $emitente->nome, $id), true); return $pix->getQRCode(); } }  

    • Por Samuel Pietro
      Olá pessoal!

      Preciso da ajuda de vocês no seguinte!
      Tenho um arquivo retornos.json
       
      { "retornos": [ { "id": 1, "sigla": "00", "nome": "Efetuado" }, { "id": 2, "sigla": "01", "nome": "Inválido" }, { "id": 3, "sigla": "02", "nome": "Corrompido" } ] }
      E na minha aplicação feita com CodeIgniter tenho uma consulta que me mostra a sigla que está cadastrada no BD.
       
      foreach ($results as $r) {  $retorno = $r->codRetorno; } 
      Eu preciso que essa consulta ao me retornar a sigla 02 por exemplo o echo apresente o "nome" para tal "sigla" que esta cadastrada no JSON.

      No caso seria a seguinte lógica: 
      if ("$retorno" == JSON["sigla"]){ echo JSON["nome"];  } //ESTE NÃO É UM CÓDIGO VÁLIDO, É APENAS PARA FINS DE ENTENDER A LÓGICA DO QUE EU PRECISO. // PS. ESSA LOGICA PRECISA SER APLICADA DENTRO DE UM FOREACH COM MILHARES DE REGISTROS.
      Como eu posso fazer isso?
       
    • Por buganti
      Olá!
       
      Estou me familiarizando com o codeigniter e desenvolvendo um site, a estrutura dele montei usando o conceito de uma página só, então eu tenho algumas section que ao clicar nos botões do menu a página vai até a section referenciada, porém, me surgiu uma questão, uma dessas section terá referências a outras páginas separadas, por exemplo, terei alguns cards com produtos, ao clicar em algum desses cards abrirá uma nova página com mais detalhes sobre esse produto, aí nessa página o meu será o mesmo, via template, só que ao clicar no botões ele busca as referências das section da página principal (única) e aí não funciona para voltar para lá, como eu deveria fazer essa referência de forma que funciona-se para ambas as situações?
       
      Não sei se fui clara na minha dúvida, se caso for necessário posso tentar me explicar melhor.
       
      Desde já agradeço.
    • Por tncardoso
      Fala Pessoal... estou tendo algumas dificuldades num projeto pessoal que estou desenvolvendo com o PHP CodeIgniter.
      Estou tentando mudar o caminho da pagina inicial, para um template que eu baixei e configurei dentro deste projeto.

      Ao fazer isso.. me deparei com o seguinte erro...
      A PHP Error was encountered
      Severity: Notice
      Message: Undefined property: Home::$template
      Filename: controllers/Home.php
      Line Number: 9
      Backtrace:
      File: C:\xampp\htdocs\projects\thiago-cardoso\application\controllers\Home.php
      Line: 9
      Function: _error_handler
      File: C:\xampp\htdocs\projects\thiago-cardoso\index.php
      Line: 315
      Function: require_once
      An uncaught Exception was encountered
      Type: Error
      Message: Call to a member function show() on null
      Filename: C:\xampp\htdocs\projects\thiago-cardoso\application\controllers\Home.php
      Line Number: 9
      Backtrace:
      File: C:\xampp\htdocs\projects\thiago-cardoso\index.php
      Line: 315
      Function: require_once
       
      Em caso de Dúvida, segue aqui também um pouco do arquivo Home.php que estou trabalhando.
      <?php defined('BASEPATH') OR exit('No direct script access allowed');   class Home extends CI_Controller {          public function index()     {         // $this->load->view('home');         $this->template->show('home');     } }  
       
      Aguardo Resposta.
      Obrigado...
       
      Thiago Cardoso
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.