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 galera, estou com um problema em uma função que gostaria de ajuda... vamos lá:
A função é esta: (ela pega todas as peças da tabela peças referente a cada registro da tabela jobs. o job é unico mais poderá conter varias peças para ele...
function somaPecas($db){
$somaPecas = "SELECT id_job, SUM(vl_peca) FROM tb_pecas WHERE id_job = '".$rowJob['id_job']."'";
$totalPecas = mysql_query($somaPecas) or die(mysql_error());
while($rowSoma = mysql_fetch_assoc($totalPecas)){
$subtotalPecas = $rowSoma['SUM(vl_peca)'];
}
return $subtotalPecas;
}
*A finalidade dela é somar todos os registros da tabela peças, (até aí tudo bem, ela faz isto) porém tem uma clausula na query que deverá apenas as peças de cada registro pai; assim:
<?php do{ ?>
//chama a função
<?php echo somaPecas($db); ?>
Job 1 => R$ 200 //isto era o que era pra acontecer. somar todos os registros da tabela peças que tenha o mesmo id do job
Job 2 => R$ 300
.....
<?php }while($rowJob = mysql_fetch_assoc($jobs)); ?>
*o que está acontecendo ele não ta identificando o id do job quando chamo a função. se eu for na query e colocar por exemplo (...WHERE id_job = '189'...) a funcão executa direitinho e faz a soma....
entenderam? help please;>
em vez do (do while) faz com (while), do jeito que está $rowJob['id_job'] retorna vazio.
dar um echo em $somaPecas para checar o que estou dizendo.
fiz o que disse Bergs, mais continua retornando vazio o resultada do função:
as querys e funcoes estao assim:
//Cadastrados
$jobs = mysql_query("SELECT * FROM tb_jobs ORDER BY sts_job ASC, dt_job DESC")or die(mysql_error());
$contaJobs = mysql_num_rows($jobs);
$rowJob = mysql_fetch_assoc($jobs);
//Calculo de peças
function somaPecas(){
$somaPecas = "SELECT id_job, SUM(vl_peca) FROM tb_pecas WHERE id_job = '".$rowJob['id_job']."'";
$totalPecas = mysql_query($somaPecas) or die(mysql_error());
while($rowSoma = mysql_fetch_assoc($totalPecas)){
$subtotalPecas = $rowSoma['SUM(vl_peca)'];
}
return $subtotalPecas;
}
no view (html)
<?php while($rowJob = mysql_fetch_assoc($jobs)){ ?>
....
<h4><?php echo somaPecas(); ?>
<?php echo $rowJob['id_cliente'];?> | <?php echo $rowJob['t_job'];?>
</h4>....
<?php }?>retira a função e coloca o código direto passando um echo em $subtotalPecas que está dentro do while.
retira a função e coloca o código direto passando um echo em $subtotalPecas que está dentro do while.
Achei uma solucao mais que deixa o sistema lento, coloquei tudo em uma funcao e fiz 2 while dentro dela:
//Somar peças por job
function listaPecas($db){
$jobLinha = mysql_query("SELECT id_job FROM tb_jobs")or die(mysql_error());
while($rowJobLinha = mysql_fetch_assoc($jobLinha)){
$somaPecas = "SELECT id_job, SUM(vl_peca) FROM tb_pecas WHERE id_job = '".$rowJobLinha['id_job']."'";
$subTotalPecas = mysql_query($somaPecas) or die(mysql_error());
// Exibir o resultado.
while($rowSubPeca = mysql_fetch_array($subTotalPecas)){
$listaPecas[] = $rowSubPeca;
}
}
return $listaPecas;
}
o problema é que gera uma pesquisa lenta, pois roda o whilhe varias vezes, vejo q a solucao vai ser esta mesmo (colocar o codigo dentro direto), nao queria meter codigo de querys dentro do html, mais neste caso sera o jeito... valeu pelo retorno! abracos
em vez do (do while) faz com (while), do jeito que está $rowJob['id_job'] retorna vazio.
dar um echo em $somaPecas para checar o que estou dizendo.