Mathiasman Skrevet 12. juni 2008 Del Skrevet 12. juni 2008 (endret) 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 12. juni 2008 av Mathiasman Lenke til kommentar
Dryper Skrevet 12. juni 2008 Del Skrevet 12. juni 2008 (endret) 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 12. juni 2008 av Dryper Lenke til kommentar
Mathiasman Skrevet 12. juni 2008 Forfatter Del Skrevet 12. juni 2008 Ja, stemmer det. Nei, jeg jobber deltid, så det er ikke hver dag. Lenke til kommentar
Crowly Skrevet 12. juni 2008 Del Skrevet 12. juni 2008 `fraklokken` varchar(24) NOT NULL, `tilklokken` varchar(24) NOT NULL, Ville ha brukt TIME i stedet for varchar på disse feltene. Vil gjøre det mye enklere å regne ut differanser og slikt. Evt brukt DATETIME som da inneholde både dato og tid, kan jo være greit hvis man jobber nattskift f.eks fra 22:00 - 04:00. http://dev.mysql.com/doc/refman/5.0/en/dat...time-types.html Lenke til kommentar
Mathiasman Skrevet 12. juni 2008 Forfatter Del Skrevet 12. juni 2008 Ok. Noe mer du vil tilføye? Lenke til kommentar
Lokaltog Skrevet 13. juni 2008 Del Skrevet 13. juni 2008 (endret) `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 13. juni 2008 av Lokaltog Lenke til kommentar
lars91 Skrevet 14. juni 2008 Del Skrevet 14. juni 2008 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
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå