Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia. Estou precisando fazer uma função mas não sei se é possível fazer desta maneira.
Eu tenho um SQL simples, mas preciso fazer vários alterando apenas um campo na consulta, mas não queria ficar repetindo todas eles, então pensei em fazer uma função que retornasse o resultado de um while, mas não consegui achar nenhum exemplo.
O código que tenho é esse:
<?php
$consulta = mysql_query ("SELECT cod_cliente, nome_cliente, rota FROM pesquisa_clientes WHERE id_pesquisa='$id_pesquisa' AND status='R' AND p_tra1='1' ORDER BY rota") or die (mysql_error());
while ($dados = mysql_fetch_array ($consulta)) {
$res_cod = $dados['cod_cliente'];
$res_nome = $dados['nome_cliente'];
$res_rota = $dados['rota'];
echo "(".$res_rota.") ".$res_cod." - ".$res_nome;
}
?>
O SELECT da consulta que vai mudar todas as vezes, tem como eu fazer algo parecido com isso? E como retornar o resultado?
<?php
$sql = "SELECT cod_cliente, nome_cliente, rota FROM pesquisa_clientes WHERE id_pesquisa='$id_pesquisa' AND status='R' AND p_tra1='1' ORDER BY rota";
function resultado_pesquisa ($sql) {
$consulta = mysql_query ($sql) or die (mysql_error());
while ($dados = mysql_fetch_array ($consulta)) {
$res_cod = $dados['cod_cliente'];
$res_nome = $dados['nome_cliente'];
$res_rota = $dados['rota'];
echo "(".$res_rota.") ".$res_cod." - ".$res_nome;
}
}
?>
Obrigado pela ajuda. Valeu!Ah legal Guilherme, obrigado. Deixa eu ver se consigo explicar o que preciso.
A parte de conexão eu não coloquei no meu exemplo porque já fiz a conexão em outro ponto, mas tudo bem.
O que eu vou precisar mudar em cada vez que eu executar essa função é o nome do campo:
$sql = "SELECT cod_cliente, nome_cliente, rota FROM pesquisa_clientes WHERE id_pesquisa='".$id."' AND status='R' AND p_tra1='1' ORDER BY rota";
Neste exemplo está o **p_tra1='1'**. É isso que vai alterar, pois tenho:
p_tra1='1', p_tra1='2', p_tra1='3', p_tra1='4'
p_tra2='1', p_tra2='2', p_tra2='3', p_tra2='4'
...
O que eu preciso é colocar essas informações em algum lugar na hora de chamar a função, mas que imprima o conteúdo do while.
echo "(".$res_rota.") ".$res_cod." - ".$res_nome."<br>";
Ah legal as outras considerações que você passou, valeu mesmo. Obrigado!Não tem problema... você pode passar quantos dados quiser na função...
$dado = "dado um";
$dado2 = "dado dois";
$dado3 = "dado tres";
echo minhaFuncao($dado,$dado2,$dado3);
function minhaFuncao($um, $dois, $tres){
$dados = $um.$dois.$tres;
return $dados;
}Sim, quanto a isso eu sei.
Mas a dúvida é a respeito do while, pra retornar o resultado dele.
Eu não consegui testar hoje, mas amanhã vou fazer um teste e aviso caso não consiga.
Obrigadão Guilherme.
$retorno_do_while = ''; // string vazia
while( condicao ) {
$retorno_do_while = $retorno_do_while . 'texto texto texto'; // ou $retorno_do_while .= 'texto';
}
// após acabar o while, retorne, não retorne durante o while
return $retorno_do_while;
É isso?
tente assim:
require("bd_connect.php"); // assumindo que neste arquivo estão os parametros de conexão ao bd retornando a conexao em $sqlConnect
$consulta = mysqli_query ($sqlConnect, $data) or die (mysql_error()); //Utilize mysqlI. A função mysql esta descontinuadawhile ($dados = mysqli_fetch_array ($consulta)) {