Ir para conteúdo

POWERED BY:

Arquivado

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

rpa

[Resolvido] Como retornar um valor de uma consulta em uma função

Recommended Posts

Ola a todos:

Minha dúvida é a seguinte: Como faço para recuperar os valores de umaconsulta que foi escrita dentro como função;

 

Por exemplo:

//essa funcao pesquisa todos os campos do BD

function lista(){
$listSQL = mysql_query("SELECT * FROM minhaTabela")or die (mysql_error());
$list = mysql_fetch_array($listSQL);
return  $list  // <<<< isto esta certo que fiz???
}

 

e depois em outra pagina chamo a função:

lista();

e agora esta a questao: Como faço para fazer um loop usando do ou while ? Quando tento fazer, aparece um erro dizendo que a variavel $list nao existe ou as vezes fica tudo em branco. Gostaria de aprender como fazer essas coisas usando funções.

 

Agradeço a atenção de todos antecipadamente.

 

Obrigado

Ricardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola amigo,

Obrigado pela luz. Ja consegui recuperar os dados, porem pra fazer o loop nao saquei direito. Devo fazer assim por exemplo?

<?PHP
$var = lista();
do {
echo $var['nome_da_var_aqui']
   } while ($var = lista());
         //OU
     while ($var = mysql_fetch_array($listSQL);
)
?>

Obrigado pela atenção.

 

Ricardo

 

 

 

 

Chame assim...

 

$var = lista();

 

E daí o retorno da $list vai ficar na $var.

 

Carlos Eduardo

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenho a impressão que ele vai queimar uma linha quando fizer isto...

$list = mysql_fetch_array($listSQL);

E aí no while, vai faltar uma linha... Não entendi bem o sentido disto, mas assim seria melhor...

 

function lista(){
       $listSQL = mysql_query("SELECT * FROM minhaTabela")or die (mysql_error());
       return  $listSQL;
}

$lista = lista();
while ($row = mysql_fetch_assoc($lista))
{
...
}

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

nesse caso nao seria interessante fazer o loop com um

 

do {

 

//alguma coisa

 

} while(algum mysql_fetch_array)

 

?

 

 

 

Tenho a impressão que ele vai queimar uma linha quando fizer isto...

$list = mysql_fetch_array($listSQL);

E aí no while, vai faltar uma linha... Não entendi bem o sentido disto, mas assim seria melhor...

 

function lista(){
       $listSQL = mysql_query("SELECT * FROM minhaTabela")or die (mysql_error());
       return  $listSQL;
}

$lista = lista();
while ($row = mysql_fetch_assoc($lista))
{
...
}

 

Carlos Eduardo

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não. Sabe a diferença entre do while e while?

 

do-while loops are very similar to while loops, except the truth expression is checked at the end of each iteration instead of in the beginning. The main difference from regular while loops is that the first iteration of a do-while loop is guaranteed to run (the truth expression is only checked at the end of the iteration), whereas it may not necessarily run with a regular while loop (the truth expression is checked at the beginning of each iteration, if it evaluates to FALSE right from the beginning, the loop execution would end immediately).

 

http://br.php.net/manual/pt_BR/control-structures.while.php

http://br.php.net/manual/pt_BR/control-structures.do.while.php

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola Carlos,

 

O meu problema e que nao consigo fazer o loop funcionar chamando a funcao. O do e o while eu entendi, so que esta retornando apenas o primeiro valor da consulta.

Existe possibilidade de fazer o looping depois da funcao ter sido chamada em outra pagina?

 

Muito obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola amigo,

 

Entao, estou chamando assim:

 

$var = lista();

 

echo $var['nome_da_var_aqui']; << aqui eu listo o primeiro grupo de registros, mas o loop e encerrado, ontem eu li que o return termina o loop na primeira execucao e no meu caso eu gostaria de fazer o loop ou dentro da funcao e depois chamar em cada pagina que precisar sem usar o echo dentro da funcao porque tem muita coisa de css e html, e alem do mais a ideia e reutilizar o codigo.

 

Eu to perdido em:

Como fazer esse loop funcionar para fazer as listagens nas paginas que desejar.

 

Se nao ficou claro por favor me avise que tento explicar de outro modo.

 

Obrigado !

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha, tentou fazer como eu falei?

 

function lista(){
        $listSQL = mysql_query("SELECT * FROM minhaTabela")or die (mysql_error());
        return  $listSQL;
}

$lista = lista();
while ($row = mysql_fetch_assoc($lista))
{
 ...
}

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola,

Tentei sim e agora de pouco descobri que o return dentro da função termina a execucao do looping e achei isso:

 

function indexProducts(){
   $ProductSQL = mysql_query("SELECT * FROM products")or die(mysql_error());
   $resultats = array( );
   while($Products = mysql_fetch_array($ProductSQL)){
       $resultats[ ] = $Products;
   }
   return $resultats;
}

so que estou meio perdido em conseguir entender como usar o array ai em cima e como fazer a repetição em outras páginas que precisar. Voce sabe se somente terei que carregar os dados na array e depois implantar um looping normal com while na pagina de resultados? Estou bem perdido nisso aqui.

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha, pra utilizar a forma que você colocou, você pode até usar um while depois, mas o ideal é jogar um foreach. Mas eu não acho que seja a melhor forma, porque você vai ter 2 loops para fazer a mesma coisa. Um deles (while) para gravar a consulta para um array. O outro para pegar os valores deste array.

 

Por exemplo.

function indexProducts(){
    $ProductSQL = mysql_query("SELECT * FROM products")or die(mysql_error());
    $resultats = array( );
    while($Products = mysql_fetch_array($ProductSQL)){
        $resultats[ ] = $Products;
    }
    return $resultats;
}
$lista = indexProducts();
foreach($lista as $valor)
{
    echo $valor['campo_do_bd'];
}

Para ver o resultado da $lista, dá um print_r($lista) antes do foreach.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Prezado Carlos, http://forum.imasters.com.br/public/style_emoticons/default/clap.gif

Gostaria de agradece-lo imensamente pela ajuda. A solucao deu certo, e caso alguem tenha a mesma dificuldade a solucao esta registrada. Se alguem empacar com isso me mande uma mensagem via o forum que tento ajudar. Essa foi mais uma coisa nova que aprendi no php, gracas a sua ajuda e ao maravilhoso forum imasters. Muito obrigado mesmo. Grande abraco.

 

Ricardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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