Hewitt 14 Denunciar post Postado Outubro 21, 2015 Tenho o seguinte código: <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"> <select name="empregados"> <option value="0">Selecione</option> <? $sql = mysql_query("SELECT * FROM empregados"); while ($linha = mysql_fetch_array($sql)){ $salario = $linha['salario']; ?> <option value="<? echo $linha['nome'] ?>"><? echo $linha['nome'] ?></option> <? } ?> </select> <select name="mes"> <option value="0">Selecione</option> <option value="1">Janeiro</option> <option value="2">Fevereiro</option> <option value="3">Março</option> <option value="4">Abril</option> <option value="5">Maio</option> <option value="6">Junho</option> <option value="7">Julho</option> <option value="8">Agosto</option> <option value="9">Setembro</option> <option value="10">Outubro</option> <option value="11">Novembro</option> <option value="12">Dezembro</option> </select> <input name="enviar" type="submit" value="Selecionar" /> </form> <? if ($mes == 1){ $nome_mes = 'Janeiro'; } if ($mes == 2){ $nome_mes = 'Fevereiro'; } if ($mes == 3){ $nome_mes = 'Março'; } if ($mes == 4){ $nome_mes = 'Abril'; } if ($mes == 5){ $nome_mes = 'Maio'; } if ($mes == 6){ $nome_mes = 'Junho'; } if ($mes == 7){ $nome_mes = 'Julho'; } if ($mes == 8){ $nome_mes = 'Agosto'; } if ($mes == 9){ $nome_mes = 'Setembro'; } if ($mes == 10){ $nome_mes = 'Outubro'; } if ($mes == 11){ $nome_mes = 'Novembro'; } if ($mes == 12){ $nome_mes = 'Dezembro'; } $ano = date('y'); $mes = $_POST['mes']; $nome_trab = $_POST['empregados']; $total_dias = cal_days_in_month(CAL_GREGORIAN, $mes, $ano); $calc = $salario / $total_dias; echo "O mês de ".$nome_mes." de 2015 teve $total_dias dias"; echo "<br/>"; echo "O dia do trabalhador ".$nome_trab." vale R$ ".$calc.""; ?> Faz tudo certo, só que o código está pegando o salário do último registro, mesmo selecionando o outros empregados. O que posso fazer para consertar? Compartilhar este post Link para o post Compartilhar em outros sites
LandersonAlmeida 31 Denunciar post Postado Outubro 21, 2015 Para pegar somar o valor do trabalhador foi nescessário fazer outra query, no primeiro while você estava definindo e re-definindo o salário, ou seja, se existisse 400 empregados, ele ia re-defenir esta variavel até o while parar no ultimo, por isso estava vindo apenas o salario do ultimo, usei como referência o nome do empregado: <form method="POST" action="<?=$_SERVER['PHP_SELF']?>"> <select name="empregados"> <option value="0">Selecione:</option> <?php $sql = mysql_query("SELECT * FROM `empregados`"); while ($linha = mysql_fetch_array($sql)): ?> <option value="<?php echo $linha['nome'] ?>"><?php echo $linha['nome'] ?></option> <?php endwhile ?> </select> <select name="mes"> <option value="0">Selecione</option> <option value="1">Janeiro</option> <option value="2">Fevereiro</option> <option value="3">Março</option> <option value="4">Abril</option> <option value="5">Maio</option> <option value="6">Junho</option> <option value="7">Julho</option> <option value="8">Agosto</option> <option value="9">Setembro</option> <option value="10">Outubro</option> <option value="11">Novembro</option> <option value="12">Dezembro</option> </select> <input name="enviar" type="submit" value="Selecionar" /> </form> <?php switch($mes): case 1: $nome_mes = 'Janeiro'; break; case 2: $nome_mes = 'Fevereiro'; break; case 3: $nome_mes = 'Março'; break; case 4: $nome_mes = 'Abril'; break; case 5: $nome_mes = 'Maio'; break; case 6: $nome_mes = 'Junho'; break; case 7: $nome_mes = 'Julho'; break; case 8: $nome_mes = 'Agosto'; break; case 9: $nome_mes = 'Setembro'; break; case 10: $nome_mes = 'Outubro'; break; case 11: $nome_mes = 'Novembro'; break; case 12: $nome_mes = 'Dezembro'; break; endswitch; $Nome_trab = $_POST['empregados']; $Ano = date('y'); $TotalDias = cal_days_in_month(CAL_GREGORIAN, $_POST['mes'], $Ano); $sql = mysql_query("SELECT * FROM `empregados` WHERE `nome` = '{$Nome_trab}'"); while($linha = mysql_fetch_array($sql)): $Salario = $linha['salario']; $Calc = $Salario / $TotalDias; break; endwhile; echo "O mês de {$nome_mes} de {$Ano} teve {$TotalDias} dias"; echo "<br/>"; echo "O dia do trabalhador ".$Nome_trab." vale R$ ".$Calc.""; ?> Compartilhar este post Link para o post Compartilhar em outros sites
ESerra 744 Denunciar post Postado Outubro 21, 2015 Você está pegando todos os salários e atribuindo a uma variável dentro de um laço, logo por óbvio que o valor que irá permanecer após o laço será o da última iteração. Se você deseja o somatório de tudo, use: $salario += $linha['salario']; Caso contrário coloque todo o cálculo dentro do laço. Compartilhar este post Link para o post Compartilhar em outros sites
Hewitt 14 Denunciar post Postado Outubro 21, 2015 Obrigando Landersom, irei testar. ESerra, então, não seria a somatória do salário, e sim calcular o dia de cada empregado. Obrigado aos dois pelas respostas! Compartilhar este post Link para o post Compartilhar em outros sites
Hewitt 14 Denunciar post Postado Outubro 21, 2015 Certinho Landerson, fiz do meu jeitinho aqui e apenas acrescentei isso: $sql2 = mysql_query("SELECT * FROM empregados WHERE nome = '$nome_trab'"); while ($linha2 = mysql_fetch_array($sql2)){ $salario = $linha2['salario']; $calc = $salario / $total_dias; } Muito obrigado! =) Compartilhar este post Link para o post Compartilhar em outros sites