Gå til innhold

Summere variabler (tall)


Anbefalte innlegg

Hei.

 

Jeg driver på med et lønnsberegerscript med php og MySQL, og sliter litt med selve utregningen av hvor mye jeg tjener i perioden. Jeg har ingen felt i MySQL som heter dagslønn eller noe sånt, ettersom det hadde blitt litt vanskelig med tanke på ub-tillegg. Men er det noen som har en fin løsning til hvordan jeg kan regne ut hvor mye jeg tjener i perioden.

 

Og er det noen som kan hjelpe meg med selve oppbyggingen av MySQL-tabelle, jeg har stort sett bare brukt varchar og int.

 

Ellers, hvis du ser noen småfeil, eller dårlig kode, er du velkommen til å gi meg et tips på hvordan jeg kan skrive det bedre. Takk.

 

PHP

 

<?php
echo "
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
<html xmlns='http://www.w3.org/1999/xhtml'>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
<title>Untitled Document</title>
</head>

<body>
<ul>
<li><a href='index2.php'>Main</a></li>
<li><a href='index2.php?action=update'>Update</a></li>
<li><a href='index2.php?action=jobb'>Jobb</a></li>
<li><a href='index2.php?action=settinn'>Sett inn</a></li>
</ul>";

$oppgave = $_GET['action'];
include ('connect.php');

if (empty($oppgave)){
mysql_select_db('filofax', $con);

$result = mysql_query('SELECT * FROM filmer ORDER BY Year');

echo "<table border='1'>
<tr>
<th>Title</th>
<th>Year</th>
<th>Genre</th>
</tr>";

while($row = mysql_fetch_array($result))
  {
  echo '<tr>';
  echo '<td>' . $row['Title'] . '</td>';
  echo '<td>' . $row['Year'] . '</td>';
  echo '<td>' . $row['Genre'] . '</td>';
  echo '</tr>';
  }
echo '</table>';

mysql_close($con);
}

elseif ($oppgave == 'update') {
echo "
<table border='1'>
<tr>
<form action='insert.php' method='post'>
<td>Title:</td><td><input type='text' name='Title' /></td>
</tr>
<tr>
<td>Year:</td><td><input type='text' name='Year' /></td>
</tr>
<tr>
<td>Genre:</td><td><input type='text' name='Genre' /></td>
</tr>
<tr>
<td></td><td><input type='submit' /></td>
</tr>
</form>
</table>
";
}

elseif ($oppgave =='jobb') {
mysql_select_db('filofax', $con);

$result = mysql_query('SELECT * FROM jobb GROUP BY dato');

echo "
<table border='1'>
<tr>
<th>Timelønn</th>
<th>Dato</th>
<th>Dag</th>
<th>Timer</th>
<th>Fra klokken</th>
<th>Til klokken</th>
<th>UB-tillegg 1</th>
<th>UB-tillegg 2</th>
<th>UB-tillegg 3</th>
<th>Sum</th>
</tr>
";

while($row = mysql_fetch_array($result))
  {
  echo '<tr>';
  $dag = $row['dag'];
  if ($dag !='Søndag') {
	  echo '<td>' . $row['timelonn'] . '</td>'; }
  else {
	  echo '<td>' . 2 * $row['timelonn'] . '</td>'; }
  echo '<td>' . $row['dato'] . '</td>';
  echo '<td>' . $row['dag'] . '</td>';
  echo '<td>' . $row['timer'] . '</td>';
  echo '<td>' . $row['fraklokken'] . '</td>';
  echo '<td>' . $row['tilklokken'] . '</td>';
  $resulttimer = mysql_fetch_row(mysql_query('SELECT SUM(timer) FROM jobb'));
  $dag = $row['dag'];
  $fraklokken = $row['fraklokken'];
  $tilklokken = $row['tilklokken'];
  $timer = $row['timer'];
  if ($dag !='Søndag') {
	  $timelonn = $row['timelonn'];}
  else {
	  $timelonn = 2 * $row['timelonn']; }
  echo '<td>';
  if ($resulttimer[0] / 4 >= 14) {
	  if ($dag !='Lørdag' and $dag !='Søndag' and $tilklokken >= 18) {
		$ubgrunnlag1 = $tilklokken - 18;
		echo $ubgrunnlag1 * 21;
		}}
  echo '</td>';
  echo '<td>';
  if ($resulttimer[0] / 4 >= 14) {
	  if ($dag =='Lørdag' and $tilklokken > 18) {
		$ubgrunnlag2 = 18 - 13;
		echo $ubgrunnlag2 * 42;
		}
	elseif ($dag =='Lørdag' and $tilklokken < 18) {
		$ubgrunnlag2 = $tilklokken - 13;
		echo $ubgrunnlag2 * 42;
		}
	}
  echo '</td>';
  echo '<td>';
  if ($resulttimer[0] / 4 >= 14) {
	  if ($dag =='Lørdag' and $tilklokken > 18) {
		$ubgrunnlag3 = $tilklokken - 18;
		echo $ubgrunnlag3 * 84;
		}}
  echo '</td>';
  echo '<td>';
  if ($resulttimer[0] / 4 >= 14) {
	  if ($dag !='Lørdag' and $dag !='Søndag' and $tilklokken >= 18) {
		$ubgrunnlag1 = $tilklokken - 18;
		$ubtillegg1 = $ubgrunnlag1 * 21;
	echo $ubtillegg1 + ($timelonn * $timer);
	}
	  elseif ($dag =='Lørdag' and $tilklokken > 18) {
		$ubgrunnlag2 = 18 - 13;	
		$ubgrunnlag3 = $tilklokken - 18;
		$ubtillegg2 = $ubgrunnlag2 * 42;
		$ubtillegg3 = $ubgrunnlag3 * 84;	
	echo $ubtillegg2 + $ubtillegg3 + ($timelonn * $timer);
	}
	elseif ($dag =='Lørdag' and $tilklokken < 18) {
		$ubgrunnlag2 = $tilklokken - 13;
		$ubtillegg2 = $ubgrunnlag2 * 42;
	echo $ubtillegg2 + ($timelonn * $timer);
	}
	elseif ($dag =='Søndag') {
	echo $timelonn * $timer;
	}}
  else {
	  echo '<td>' . $timelonn * $timer . '</td>';
	}
  echo '</tr>';
 }
echo '<tr>';
echo '<th>SUM</th>';
echo '<td></td>';
echo '<td>Antall timer:<br />Timer per uke:</td>';
echo '<td>';
$resulttimer = mysql_fetch_row(mysql_query('SELECT SUM(timer) FROM jobb'));
echo $resulttimer[0];
echo '<br />';
echo $resulttimer[0] / 4;
echo '</td>';
echo '<td></td>';
echo '<td></td>';
echo '<td></td>';
echo '<td></td>';
echo '<td></td>';
echo '<td>';
$resulttimer = mysql_fetch_row(mysql_query('SELECT SUM(timer) FROM jobb'));
$timer = $resulttimer[0];
echo '</td>';
echo '</tr>';
echo '</table>';
}

elseif ($oppgave =='settinn') {
	echo "<fieldset><legend>Sett inn</legend>
<table><form action='index2.php?action=registrer' method='post'>
			<tr><td>Dato: </td><td><select name='dato'>
			<option value='1'>1</option>
			<option value='2'>2</option>
			<option value='3'>3</option>
			<option value='4'>4</option>
			<option value='5'>5</option>
			<option value='6'>6</option>
			<option value='7'>7</option>
			<option value='8'>8</option>
			<option value='9'>9</option>
			<option value='10'>10</option>
			<option value='11'>11</option>
			<option value='12'>12</option>
			<option value='13'>13</option>
			<option value='14'>14</option>
			<option value='15'>15</option>
			<option value='16'>16</option>
			<option value='17'>17</option>
			<option value='18'>18</option>
			<option value='19'>19</option>
			<option value='20'>20</option>
			<option value='21'>21</option>
			<option value='22'>22</option>
			<option value='23'>23</option>
			<option value='24'>24</option>
			<option value='25'>25</option>
			<option value='26'>26</option>
			<option value='27'>27</option>
			<option value='28'>28</option>
			<option value='29'>29</option>
			<option value='30'>30</option>
			<option value='31'>31</option>
			</select>
			<select name='month'>
			<option value='1'>Januar</option>
			<option value='2'>Februar</option>
			<option value='3'>Mars</option>
			<option value='4'>April</option>
			<option value='5'>Mai</option>
			<option value='6'>Juni</option>
			<option value='7'>Juli</option>
			<option value='8'>August</option>
			<option value='9'>September</option>
			<option value='10'>Oktober</option>
			<option value='11'>November</option>
			<option value='12'>Desember</option>
			</select>
			<select name='year'>
			<option value='2008'>2008</option>
			</select>
			</td></tr>
			<tr><td>Dag: </td><td>
			<select name='dag'>
			<option value='Mandag'>Mandag</option>
			<option value='Tirsdag'>Tirsdag</option>
			<option value='Onsdag'>Onsdag</option>
			<option value='Torsdag'>Torsdag</option>
			<option value='Fredag'>Fredag</option>
			<option value='Lørdag'>Lørdag</option>
			<option value='Søndag'>Søndag</option>
			</select></td></tr>
			<tr><td>Timer: </td><td><input type='text' name='timer'></td></tr>
			<tr><td>Fra klokken: </td><td><input type='text' name='fraklokken'></td></tr>
			<tr><td>Til klokken: </td><td><input type='text' name='tilklokken'></td></tr>
			<tr><td>Lunsj: </td><td><select name='lunsj'><option value='Ja'>Ja</option><option value='Nei'>Nei</option></select></td></tr>
			</table>
<input type='submit' value='Sett inn'>
</fieldset>";

	}

elseif ($oppgave == "registrer") {

	$grunnlonn 		= 119.48;
	$y 				= mysql_real_escape_string($_POST['dato']);
	$m 				= mysql_real_escape_string($_POST['month']);
	$d 				= mysql_real_escape_string($_POST['year']);
	$date 			= $d . "-" . $m . "-" . $y;
	$dag 			= mysql_real_escape_string($_POST['dag']);
	$timer 			= mysql_real_escape_string($_POST['timer']);
	$fraklokken		= mysql_real_escape_string($_POST['fraklokken']);
	$tilklokken		= mysql_real_escape_string($_POST['tilklokken']);

	$likt 	= mysql_query("SELECT * FROM jobb WHERE dato = '$date'");

	if (mysql_num_rows($likt) == 1){
		die ("Du har allerede skrevet inn en jobbdag på denne datoen.<br /><a href='index2.php?action=settinn'>Prøv på nytt!</a>");
	}

	if ($tilklokken - $fraklokken != $timer) {
		die("Antall timer matcher ikke Til klokken og Fra klokken.<br /><a href='index2.php?action=settinn'>Prøv på nytt!</a>");
	}

	if ($tilklokken > 22 and $dag !='Lørdag') {
		die("Butikken er ikke åpen etter klokken 22.00 på hverdager.<br /><a href='index2.php?action=settinn'>Prøv på nytt!</a>");
	}

	if ($tilklokken > 20 and $dag =='Lørdag') {
		die("Butikken er ikke åpen etter klokken 20.00 på lørdager.<br /><a href='index2.php?action=settinn'>Prøv på nytt!</a>");
	}

	if ($fraklokken < 8) {
		die("Butikken er ikke åpen før klokken 08.00.<br /><a href='index2.php?action=settinn'>Prøv på nytt!</a>");
	}

	$regjobb = mysql_query("INSERT INTO jobb (timelonn,dato,dag,timer,fraklokken,tilklokken) VALUES ('$grunnlonn','$date','$dag','$timer','$fraklokken','$tilklokken')");

	if (!$regjobb){
		die($regerror . mysql_error());
		}
	echo "Trykk <a href='index2.php?action=jobb'>her</a> for å komme tilbake til jobbsiden.";

	mysql_close($con);
	}
elseif ($oppgave =='telefonbok') {
mysql_select_db('filofax', $con);

$result = mysql_query('SELECT * FROM telefonbok ORDER BY dato');
echo "
	<table border='1'>
	<tr>
	<th>Fornavn</th>
	<th>Etternavn</th>
	<th>Adresse</th>
	<th>Postnummer</th>
	<th>Fasttelefon</th>
	<th>Mobiltelefon</th>
	<th>E-post</th>
	</tr>
	<tr>
	";
echo "
</body>
</html>";
}?>

 

 

MySQL

 

-- phpMyAdmin SQL Dump
-- version 2.11.4
-- http://www.phpmyadmin.net
--
-- Vert: localhost
-- Generert den: 12. Jun, 2008 klokka 08:39 AM
-- Tjenerversjon: 5.0.51
-- PHP-Versjon: 5.2.5

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

--
-- Database: `filofax`
--

-- --------------------------------------------------------

--
-- Tabellstruktur for tabell `jobb`
--

CREATE TABLE IF NOT EXISTS `jobb` (
 `timelonn` decimal(5,2) NOT NULL,
 `dato` varchar(20) NOT NULL,
 `dag` varchar(10) NOT NULL,
 `timer` int(11) NOT NULL,
 `fraklokken` varchar(24) NOT NULL,
 `tilklokken` varchar(24) NOT NULL,
 `ubtillegg1` varchar(5) NOT NULL,
 `ubtillegg2` varchar(5) NOT NULL,
 `ubtillegg3` varchar(5) NOT NULL,
 `dagslonn` varchar(2000) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

--
-- Dataark for tabell `jobb`
--

INSERT INTO `jobb` (`timelonn`, `dato`, `dag`, `timer`, `fraklokken`, `tilklokken`, `ubtillegg1`, `ubtillegg2`, `ubtillegg3`, `dagslonn`) VALUES
(119.48, '2008-1-24', 'Mandag', 8, '12', '20', '', '', '', ''),
(119.48, '2008-1-3', 'Mandag', 8, '12', '20', '', '', '', ''),
(119.48, '2008-1-2', 'Mandag', 8, '12', '20', '', '', '', ''),
(119.48, '2008-1-5', 'Søndag', 8, '12', '20', '', '', '', ''),
(119.48, '2008-1-14', 'Lørdag', 8, '12', '20', '', '', '', ''),
(119.48, '2008-1-20', 'Mandag', 8, '12', '20', '', '', '', ''),
(119.48, '2008-1-10', 'Mandag', 8, '12', '20', '', '', '', ''),
(119.48, '2008-1-31', 'Lørdag', 8, '8', '16', '', '', '', '');

 

Endret av Mathiasman
Lenke til kommentar
Videoannonse
Annonse

Hmm om jeg ikke tar helt feil nå så skal du vite hvor mye de har tjent fra A ---> B ?? ivertfall

 

 

Om personen tjener det samme hved dag går det vel ann å ta $lønn * $dager ?

.

 

 

Dette er hva jeg kommer på i farten xxD

 

Vet ikke om jeg skjønte alt.

Endret av Dryper
Lenke til kommentar

`dagslonn` varchar(2000) NOT NULL

Hva er denne kolonnen til? Med så lange VARCHAR-kolonner (2000 tegn) kan du vel like greit bruke TEXT. Men hvis du skal ha et tall der, bruk INT eller DECIMAL.

 

Edit: Du bør også ha en primærnøkkel på tabellen din, for å raskt kunne gjøre oppslag på enkeltrader.

Endret av Lokaltog
Lenke til kommentar

Bare lurer. Hvis man skulle brukt dette scriptet til å generere en månedsvisning. Hvordan skulle man da ha gjort det. Har prøvd litt på det selv, men ble ikke så veldig velykket. Flott script btw. :) Var artig for å lære litt mer php

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...