Jump to content
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.

 

Share this post


Link to post
Share on other 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

 

 

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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;

 

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Santos_2015
      tenho array que está sendo preenchido assim:
      $dados = array([0] => "Nome",[1] => "SobreNome",[2] => "null"); queria que ficasse dessa forma:
      $dados = array([0] => "Nome",[1] => "SobreNome",[2] => null); pois estou extraindo os valores do array com array_values  pra colocar em um INSERT, os campos que podem ser null são do tipo date(BD mysql),
      então tenho que retirar as aspas quando o valor vier null , ou no próprio array, ou após o array_values, alguma sugestão?  
    • By Falcon33
      [INICIANTE]
      Boa tarde pessoal, estou com problemas para terminar o seguinte código. 
      Preciso adicionar os seguintes procedimentos.
      1.     Utilizar vetores e/ou matrizes;
      2.     Utilizar estruturas de repetição;
      3.     Implementar utilizando modularização (no mínimo um módulo de procedimento e dois módulos de ação);
      4.     Utilizar passagem de parâmetro por valor e referência;
      5.     Utilizar registros;
      6.     Utilizar alocação dinâmica de memória;
       
      Alguém poderia dar uma luz? 
       
      Já fiz o seguinte: 
      //Projeto: Calculo de PI por Monte Carlo. Adotando o intervalo entre [0,1]. #include <stdio.h> #include <stdlib.h> #include <time.h> #include <math.h> int main(){ double px,py,deltax,deltay,DistEuc,Valor_pi; int Npont_quad = 10000000; int dentro_circ = 0; int i; srand(time(NULL)); for(i = Npont_quad; i > 0; i--){ //Estrutura de repetição para gerar pontos aleatorios. px = rand() / (double)RAND_MAX; //Primeiro numero sorteado entre 0 e 1. py = rand() / (double)RAND_MAX; //Segundo numero sorteado entre 0 e 1. deltax = pow((px- 0.5),2); //Calculo do cateto x da hipotenusa. deltay = pow((py - 0.5),2); //Calculo do cateto y da hipotenusa. DistEuc = sqrt(deltax + deltay); //Calculo da distancia euclidiana(distancia entre os pontos) if (DistEuc <= 0.5){ //Determinar quais pontos estão dentro do circulo dentro_circ++; } } Valor_pi = 4 * dentro_circ / (double) Npont_quad; //Obtenção do valor de PI. printf("O valor de PI eh: %lf", Valor_pi); //Imprimir o valor de PI. }  
    • By bobzznnn
      Olá meus amigos, eu não sei onde postar minha dúvida, então vou por aqui pois talvez alguem possa me ajudar.
      É o seguinte, trabalho com sistema de Marketing em Laravel e pra cada usuário tem comissões multiniveis, ou seja
      " Pedro indicou Maria( que neste caso 'Maria' Ficaria em Baixo de 'Pedro'. Até aí tudo bem!) logo após 'Maria' Recrutou outro membro o 'Joaquin'
      ( que neste caso 'Joaquin' Ficaria em Baixo de 'Maria')<-- eu não consigo mostrar este indicado('Joaquin') ao 'Pedro' que está lá em cima.
       
      Exemplo: Suponhamos que eu sou o tal 'Pedro' e este da imagem abaixo é a 'Maria', sendo em baixo dela tem o ' Joaquin'(que n está aparecendo).
      Gostaria de saber alguma forma de como clicar na 'Maria' e aparecer o 'Joaquin'.
       
       

       
      segue meu html:
       
      <table id="example2" class="table table-bordered table-hover"> <thead> <tr> <th>Nome</th> <th>Email</th> <th>Telefone</th> <th>Situação</th> <th>Investimento</th> <th>Graduação</th> </tr> </thead> <tbody> @inject('usuarios', 'App\User') @foreach($usuarios->getIndicados() as $user) <tr> <td><b>{{$user->name}}</b></td> <td>{{$user->email}}</td> <td>{{$user->telefone}}</td> <!-- <td>{{$user->getUserDirection()}}</td> --> <td>{{$user->getStatus()}}</td> <td>{{$user->getPacote()->nome}}</td> <td>{{$user->minhaGraduacao()}}</td> </tr> @endforeach </tbody> </table>  
      Aqui o PHP:
       
      public function getIndicados($id = '') { if ($id == '') { $id = Auth::user()->id; } $reffer = Referrals::where('pai_id', $id)->get(); $users = array(); foreach ($reffer as $key => $r) { $users[$key] = $this->where('id', $r->user_id)->first(); } return $users; } public function getFilhos($id = null, $count = false) { if (!$id) { $id = $this->id; } $reffer = Referrals::where('system_id', $id)->orderBy('direcao', 'ASC')->get(); $users = array(); foreach ($reffer as $key => $r) { $user = $this->where('id', $r->user_id)->first(); $user->direcao = $this->getUserDirection($r->user_id); $users[$key] = $user; } if ($count) { return count($users); } return $users; }  
    • By Francisco Vasconcelos
      Olá, pessoal!!
       
      Help-me!!
       
      Tenho a seguinte linha em um script PHP para rastrear entrega dos Correios através de uma URL + códio de rastreio:
       
      <? $post = array('Objetos' => 'CÓDIGO DE RASTREIO AQUI');
      // iniciar CURL
      $ch = curl_init();
      // informar URL e outras funções ao CURL
      curl_setopt($ch, CURLOPT_URL, "https://www2.correios.com.br/sistemas/rastreamento/resultado_semcontent.cfm");
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($ch,CURLOPT_POSTFIELDS, http_build_query($post));
      // Acessar a URL e retornar a saída
      $output = curl_exec($ch);
      // liberar
      curl_close($ch);
      // Imprimir a saída
      echo $output;
      ?>      
       
      Isso funciona, mas é preciso inserir o código de rastreio na primeira linha, claro.
       
      MINHA PERGUNTA:
      Como fazer para inserir uma variável (CÓDIGO DE RASTREIO) nessa primeira linha pra que eu consiga acessar através de uma simples URL (ex: http://meusite.com/script=CÓDIGO DE RASTREIO
       
      Espero ter sabido me expressar!! :( 
       
      Desde já, agradeço imensamente por qualquer ajuda!!
       
      Valeu, galera!!
       
    • By camargo.2018
      Olá, não sou acostumado a trabalhar com array,
      vocês poderia me ajudar exemplo:
      <?php $idsServico = $FTDados['id_services']; //Aqui faz a leitura no banco de dados ta assim [{"1":"50","2":"51"}] $jj = json_decode($idsServico); print_r($jj); //Retorna o valor : Array ( [0] => stdClass Object ( [1] => 70 [2] => 71 ) ) foreach($jj as $ee => $r): $verNome = $conn->prepare("SELECT * FROM `produtos` WHERE `id` = '".$ee."'"); echo $r;//Retorna nada $verNome->execute(); while($Dtdados = $verNome->fetch(PDO::FETCH_ASSOC)){ ?> <td><?=$Dtdados['nomePlano'];//Retorna nada?></td> <?php } endforeach; ?>  
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.