Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde Galera , tudo bem ?
Estou com um problema que não estou conseguindo resolver , ja tem mais de 1 semana.
Estou fazendo um relatório , de cadastros para o meu site .
No relatorio , eu quero listar a Cidade e total de cadastros daquela cidade .
Antes , eu fazia uma consulta normal no banco e exibia com o while .Mas como tenho que usar os mesmo dados varias vezes , eu nao conseguia reaproveitar as informações .
Assim ,resolvi fazer com funções, mas não estou conseguindo fazer o resultado que esta dentro do while na funcao aparecer corretamente .
Segue os dados :
$uf = $_POST['uf'] //aqui, $uf recebe 1 ou mais estados vai post
$x = count($uf);
for($i = 0 ; $i < $x; $i++){
$funcao = cad_por_uf($uf[$i],$dataInicial,$dataFinal); // aqui ,passo o valor do return da funcao para a variavel $funcao;
echo $funcao[0].'-'.$funcao[1];
}
function cad_por_uf($uf,$dataInicial,$dataFinal){
$sql = mysql_query("SELECT sum(cadastros),uf,cidade FROM tblCadastros where data >= '$dataInicial' and data <= '$dataFinal' and uf = '$uf' and deletada = 0 group by (cidade)");
while($row = mysql_fetch_array($sql)){
$cidade = $row['cidade'];
$cadastros= $row['sum(cadastros)'];
return array($cidade,$cadastros);
}
}
Ao exibir a variavel $funcao[0] , era para mostrar todas as cidades do estado usado no where . Mas , ele só me retorna 1 resultado .
Como posso fazer isso ?
Desde ja , grato .
>
$cidade e $cadastros devem ser arrays tambem neh?
$cidade[] = $row['cidade'];
$cadastros[]= $row['sum(cadastros)'];
acredito que fica assim.
Boa tarde ,
Tentei mas não tive sucesso
Coloquei assim :
$cidade[] = $row['cidade'];
e na hora de exibir :
$funcao[0][0];
$funcao[0][1];
ect ;
Mas ainda sim ,retornou somente 1 resultado .
Desde ja ,grato
O que o @rnu.silva está certo.
mas acho que você não entendeu!
Na sua função você esta dando o return dentro do while ou seja no primeiro ela sair do while.
function cad_por_uf($uf,$dataInicial,$dataFinal){
$sql = mysql_query("SELECT sum(cadastros),uf,cidade FROM tblCadastros where data >= '$dataInicial' and data <= '$dataFinal' and uf = '$uf' and deletada = 0 group by (cidade)");
while($row = mysql_fetch_array($sql)){
$cidade = $row['cidade'];
$cadastros= $row['sum(cadastros)'];
return array($cidade,$cadastros);
}
}
Tente isso:
function cad_por_uf($uf,$dataInicial,$dataFinal){
$sql = mysql_query("SELECT sum(cadastros),uf,cidade FROM tblCadastros where data >= '$dataInicial' and data <= '$dataFinal' and uf = '$uf' and deletada = 0 group by (cidade)");
$result = array();
$c=0;
while($row = mysql_fetch_array($sql)){
$result[$c]['cidade'] = $row['cidade'];
$result[$c]['cadastros']= $row['sum(cadastros)']; $c++;
}
return $result;
}>
O que o @rnu.silva está certo.
mas acho que você não entendeu!
Na sua função você esta dando o return dentro do while ou seja no primeiro ela sair do while.
function cad_por_uf($uf,$dataInicial,$dataFinal){
$sql = mysql_query("SELECT sum(cadastros),uf,cidade FROM tblCadastros where data >= '$dataInicial' and data <= '$dataFinal' and uf = '$uf' and deletada = 0 group by (cidade)");
while($row = mysql_fetch_array($sql)){
$cidade = $row['cidade'];
$cadastros= $row['sum(cadastros)'];
return array($cidade,$cadastros);
}
}
Tente isso:
function cad_por_uf($uf,$dataInicial,$dataFinal){
$sql = mysql_query("SELECT sum(cadastros),uf,cidade FROM tblCadastros where data >= '$dataInicial' and data <= '$dataFinal' and uf = '$uf' and deletada = 0 group by (cidade)");
$result = array();
$c=0;
while($row = mysql_fetch_array($sql)){
$result[$c]['cidade'] = $row['cidade'];
$result[$c]['cadastros']= $row['sum(cadastros)']; $c++;
}
return $result;
}
Boa tarde ,
Realmente , não tinha percebido! .
Tirei ele do while e joguei num array a parte :
function cad_por_uf($uf,$dataInicial,$dataFinal){
$consulta = "SELECT sum(cadastros) as cadastros, uf, cidade
FROM tblCadastros
WHERE data >= '$dataInicial' and data <= '$dataFinal' and uf = '$uf' and deletada = 0 group by (cidade)";
$sql = mysql_query($consulta);
$lista = array();
while($row = mysql_fetch_assoc($sql)){
$lista[] = $row;
}
return $lista;
}
Muito obrigado a todos !
Show!
Qualquer coisa estamos ai =)
$cidade e $cadastros devem ser arrays tambem neh?
acredito que fica assim.