PHP Парсинг мешает моим вычислениям? Расчет рабочего времени

я написал простой кусок кода, чтобы вычислить из некоторых входных данных, что некоторые получат за свои рабочие часы, но, похоже, все работает наоборот, как я планировал. Я не углубился в php-кодирование, поэтому мне все еще нужно решить некоторые ранние проблемы.

Этот скрипт работает, если я наберу свой пример «50» часов. Нет, если я наберу «49» часов. Затем он говорит, что у меня 11 часов сверхурочной работы, что неверно, тогда должно быть 9 часов сверхурочной работы.

игнорировать последний кусок сценария. Это просто дурачок прямо сейчас.

        <?php
// declaration.
$warbeit = $_POST['wochenarbeit']; //your working hours
$stundenlohn = 12.50; //what you get paid for hour
$ueberstunden = 15;  //what you get paid if you work more than 40 hours
$berechnung = 0;   //how many hours over 40 hours you have - overtime hours
$auszahlungu = 0;  //what you get paid for your overtime hours
$auszahlungn = 0; // what you get paid for your hours until overtime
$gesamtlohn = 0; // what you get paid as sum
$lohn2 = 0;
$zuviel = 0;if ($warbeit <= 60) {   //if your workingtime is < 60 hours a week  for example 50 hours
if ($warbeit > 40) {  //if your woringtime is more than 40 hours a week (between 40 and 60) if you take the 50 hours this should work
$berechnung = (60 - $warbeit);  //how many hours over 40 hours you have - overtime hours - the sum here by 50 hours should be 10 (60-50=10)
$auszahlungu = ($berechnung * $ueberstunden); //what you get paid for your overtime hours - 10 times 15 should be 150 here
$auszahlungn = ($warbeit - $berechnung) * $stundenlohn; // what you get paid for your hours until overtime - (50 - 10) * (12.50) - should be 500
$gesamtlohn = $auszahlungn + $auszahlungu; // what you get paid as sum - 500 + 150 = 650

echo  "Ihre Überstunden: " . $berechnung . " h<br>";
echo  "Überstundenabrechnung: " . $auszahlungu . " €<br>";
echo  "Ihr Gesamtlohn: " . $gesamtlohn . " €<br>";
}

else {

$lohn2 = $warbeit * $stundenlohn;

echo  "Ihr Gesamtlohn: " . $lohn2 . " €<br>";

}

}
else {
$zuviel = (40 * 12.50) + (20 * 15);echo   "es werden nur 60 Stunden pro Woche ausgezahlt!";
echo  "Sie bekommen: " . $zuviel . " €<br>";
}

?>

0

Решение

Похоже, это ваша главная проблема

$berechnung = (60 - $warbeit);

Если вы действительно собираетесь для

//how many hours over 40 hours you have - overtime hours

Тогда должно быть

$berechnung = ($warbeit - 40);

То, как вы это делаете, в настоящее время работает на 50, но только по совпадению, потому что 60-50 = 50-40.

1

Другие решения

вам нужны средние и крайние случаи

if($warbeit == 40){
process this
}

if ($warbeit > 40 and $warbeit <50) {
process those
}

if ($warbeit >= 50 and $warbeit <60) {
process these
}

if($warbeit == 60){
process this
}
0