rpa 0 Denunciar post Postado Setembro 10, 2009 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
Matias Rezende 50 Denunciar post Postado Setembro 10, 2009 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
rpa 0 Denunciar post Postado Setembro 11, 2009 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
Matias Rezende 50 Denunciar post Postado Setembro 11, 2009 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
rpa 0 Denunciar post Postado Setembro 22, 2009 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
Matias Rezende 50 Denunciar post Postado Setembro 22, 2009 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
rpa 0 Denunciar post Postado Novembro 9, 2009 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
Matias Rezende 50 Denunciar post Postado Novembro 9, 2009 Como está fazendo? Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
rpa 0 Denunciar post Postado Novembro 9, 2009 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
Matias Rezende 50 Denunciar post Postado Novembro 9, 2009 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
rpa 0 Denunciar post Postado Novembro 9, 2009 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
Matias Rezende 50 Denunciar post Postado Novembro 9, 2009 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
rpa 0 Denunciar post Postado Novembro 9, 2009 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