Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

ment0r

Problema ou ler array retornado de uma função

Recommended Posts

Bom dia amigos, tudo bem?

 

Sou novo em POO e estou com algumas dificuldades.

Tenho um método de uma classe que é bem simples, ele busca todos os campos da tabela USUARIO (Firebird 2.0) e retorna o array com elas. Só que a não consigo exibi-los com while.

 

Sem o método eu faria:

while($array = ibase_fetch_object($query)){
	echo $array->ID;
	echo "<br>";
	echo $array->ID;
	// E por aí vai...
}
public function selectAllUsers(){
	$select = "select * from USUARIO";
	$query = ibase_query($select);
	$array = ibase_fetch_object($query);

	return $array;
}

Só que com o array não consigo. Não sei como usar o while com esse array retornado.

 

Por favor, se alguém puder me ajudar... serei grato.

Um abraço a todos.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você está percorrendo errado, precisa percorrer o cara que você está retornando, ex:

while($row = ibase_fetch_object($array)){
	echo $row->ID . "<br>";
	// ou $row['ID'] . "<br>";
}

A sintaxe parece a mesma do mysqli, verifique se é mesmo ibase_fetch_object que percorre o array. Certifique-se também que $array está com os dados da consulta.

 

Sugiro pesquisar por foreach, que é específico para percorrer array e objetos, veja: http://php.net/manual/pt_BR/control-structures.foreach.php

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiramente muito obrigado.

 

Amigos, eu não expliquei corretamente ou vocês entenderam errado: a função ibase_fetch_object() está sendo usada num método na minha classe; quero que esse método retorno um array com todos os dados vindos dessa query (um select) e então eu exiba esses dados na minha página.

 

O problema não está na função ibase_fetch_object(), mas sim ao exibir as informação. Vejam meu método:

 

	public function select($login){
		$select = "select * from USUARIO where login = ".$login;
		$query = ibase_query($select);
		$array = ibase_fetch_object($query);

		return $array;
	}

Ele retorna o array - e tudo bem que nesse caso ele pegue só a primeira linha do registro - e na página que eu chamo esse método, eu quero exibir os registros dele.

 

Espero que eu tenha conseguido explicar. Fico no aguardo de uma ajuda e desde já, muito obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas então, é o que eu passei acima para exibir os dados. Precisa percorrer o Array, ou será que não estou entendendo?

 

Quando você chama um método que tenha um return como é o seu caso, precisa armazenara o retorno numa variável, e depois utilizar ela para exibir os dados que queira.

 

Faça assim, chame o método, e depois de um var_dump no retorno para saber o que está vindo dele, aí vai saber o que vem no Array para utilizar, ok? Ex:

 

$busca_dados = $this->select($login);
var_dump($busca_dados);
exit;

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado Marcos pela ajuda.

 

Reparei que o resultado de um ibase_fetch_object() é diferente de um array 'convencional'. Então o que eu fiz foi passar o conteúdo desse objeto pra um array e retornar esse array. Não era o que eu queria, porque nesse caso eu sei o número exato do retorno do meu select então deu pra manipular de boa, mas resolveu.

 

Gostaria de saber como tratar melhor os dados vindos de um ibase_fetch_object(), pois como agora vou trabalhar com POO, quero que métodos retorne isso pra mim. Mas enfim...

 

Muito obrigado a todos que se propuseram a ajudar. Um feliz 2019.

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por ILR master
      Boa tarde, pessoal.
      Espero que todos estejam bem.
       
      Seguinte:
      Tenho a seguinte consulta:
       
      $usuarios= "SELECT * FROM usuarios";
      $query= mysqli_query($conexao, $usuarios) or die ("Usuário não encontrado");
      $usuario = mysqli_fetch_array($query);
       
      Quero pegar apenas o campo 'nome' da tabela 'usuarios' e colocar todos os resultados da seguinte forma:
       
      $nomes = array("Rafael", "João", "Maria", "Pedro", "Patricia", "Camila");
       
      Agradeço desde já.
      Abs
       
       
    • Por mateus.andriollo
      Existe uma forma de fazer um IF na select e comparar com Array de dados?
       
      algo como
       
      Select if( in_array(idCliente,'1,2,3,4,5')=true,'Tem','Não') ) as cliente Não consigo usar inner ou where pois esse array é algo q tem varias regras...
       
      Precisava saber se existe uma função assim em MySQL
    • Por mateus.andriollo
      Existe uma forma de fazer um IF na select e comparar com Array de dados?
       
      algo como
       
      Select if( in_array(idCliente,'1,2,3,4,5')=true,'Tem','Não') ) as cliente Não consigo usar inner ou where pois esse resultado do array é algo q tem varias regras...
       
      Precisava saber se existe uma função assim em MySQL
    • Por clovis.sardinha
      Bom dia.
      Meu problema é o seguinte:
      Estou fazendo uma tabela e preciso mostrar o usuário e várias cidades que pertencem a este usuário.
      O resultado do array é o seguinte:

      Quando passo para a tabela os valores de cidade se repetem para o mesmo usuário até o final e retorna fazendo o mesmo para o próximo usuário. 
      Veja abaixo

       
      Meu código para a tabela é a seguinte:
      <tr> <td align="left"><?php echo $usuario['nome'] ?></td> <td align="left"><?php echo $usuario['nome_orgao'] ?></td> <td align="left"><?php echo $usuario['nome_funcao'] ?></td> <?php foreach($destinos as $key=>$destino):?> <?php $key=0;?> <td align="left"> <?php foreach($destino as $chave=> &$cidade): ?> <?php echo $cidade['cid_nome']."-";?> <?php endforeach;?> </td> <?php $key+=$key; ?> <?php endforeach;?> <td><?php echo date('d/m/Y', strtotime( $usuario['created_at'])) ?></td> <td align="left"><a href="<?php echo base_url('UserAdmin/Usuario/getUsuarioById')."/".$usuario['id_user'] ?>">DETALHES</a></td> </tr> <?php endforeach ?> Onde estou errando? O que tenho de fazer para percorrer este array de modo a aparecer apenas as cidades pertencentes a cada usuário?

    • Por Giovanird
      Listo um array pelo foreach e preciso pegar os valores fora do foreach.
      Abaixo tenho o exemplo do foreach com os valores
       
      <?php foreach($turma $rsturma): if(($rsturma['id'] == 1){ echo $rsturma['nome']."<br>"; echo $rsturma['idade']."<br><br>"; } endforeach; //Dentro do foreach me retorna: Luis 13 Maria 12 Carlos 12 Matheus 14 Andréa 12 //Preciso pegar a posição e o valor desta lista $posicao1 = 1; $nome1 = Luis; $posicao2 = 2; $nome2 = Maria; $posicao3 = 3; $nome3 = Carlos; $posicao4 = 4; $nome4 = Matheus; $posicao5 = 5; $nome5 = Andréa;  
×

Informação importante

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