Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Hewitt

Só pega o último salário!

Recommended Posts

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

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.