Werkoverzicht MySql
Dit script heb ik gemaakt omdat iemand om zoiets vroeg, wanneer ik het vrij snel klaar had dacht ik dat er andere ook mee geholpen konden worden. Daarom heb ik het nog een gecontroleerd en erop gezet. Wat doet het script? In dit script kan je dagen dat je gewerkt hebt toevoegen van begin tijd tot eindtijd. Het rekend uit wat er is vediend die dag en slaat het op in een mysql tabel. Ook rekend het script uit hoeveel je nog betaald moet krijgen en hoeveel je in totaal hebt verdiend. Hoezo voor beginners? Omdat het voor beginners interessant is om te weten hoe je updaten, toevoegen en verwijderen nou precies doet. Ook zit er wat bij over het rekenen in mysql. Commentaar is altijd welkom, daar leer je tenslotte van. Ga niet onnodig zitten afkraken want daar leer je juist niet van (=
/////////////////
MySql Tabel///
/////////////////
[code]
CREATE TABLE `werkoverzicht` (
`id` int(11) NOT NULL auto_increment,
`dag` varchar(20) NOT NULL default '',
`datum_dag` int(11) NOT NULL default '0',
`datum_maand` varchar(20) NOT NULL default '',
`begintijd` int(11) NOT NULL default '0',
`eindtijd` int(11) NOT NULL default '0',
`betaald` enum('ja','nee') NOT NULL default 'ja',
`aantaluur` int(11) NOT NULL default '0',
`verdiend` int(11) NOT NULL default '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
[/code]
//////////////////
config.inc.php//
/////////////////
[code]
<?php
// Hoeveel per uur? : hier 5
$europeruur="5";
// Host is MEESTAL localhost
$host ="######";
// De gebruikersnaam waarmee je in je database komt
$gebruikersnaam="######";
// Je wachtwoord waarmee je in je database komt
$wachtwoord="######";
// De database naam, waar je tabel werkoverzicht in staat.
$databasenaam="######";
mysql_connect($host, $gebruikersnaam, $wachtwoord);
mysql_select_db($databasenaam);
?>
[/code]
///////////////////
formulier.php///
//////////////////
[code]<!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=iso-8859-1" />
<title>Werkuren schema</title>
</head>
<body>
<?php
// Om het formulier niet 2x neer te zetten heb ik het volgende verwerkt
// Hij pakt de get waarde die door overzicht.php word meegegeven, daarna controleert of het bestaat zoja: hij word gepost naar de juiste plaats
// Kijken of pag de waarde "update heeft"
if($_GET["pag"] == update){
// Zo ja: Zet paglink op update oftewel de POST
$paglink = $_GET["pag"];
// Omdat bij het updaten al gegevens zijn, halen we die uit den database
// Zodat we ze later netjes vanboven staan.
include("config.inc.php");
$query = "SELECT * FROM werkoverzicht WHERE id=".$_GET["id"];
$resultaat = mysql_query($query);
while($record = mysql_fetch_object($resultaat))
{
$id = $record->id;
$dag = $record->dag;
$datum_dag = $record->datum_dag;
$datum_maand = $record->datum_maand;
$begintijd = $record->begintijd;
$eindtijd = $record->eindtijd;
$aantaluur = $record->aantaluur;
$verdiend = $record->verdiend;
$betaald = $record->betaald;
}
}else{
// Zo nee: Zet hem dan automatisch op voegtoe
$paglink = "voegtoe";
}
// Wat hier onder staat spreekt voor zich denk ik.
// de echo's die in de value's staan verwijzen bij het updaten naar de waarde die al eerder is ingevoerd, en bij het toevoegen zijn ze leeg.
?>
<h1>Formulier</h1>
<hr />
<form name="form1" action="verwerk.php?pag=<?php echo($paglink); ?>" method="post">
<b>Dag: </b>
<select name="dag">
<option value="<?php echo($dag); ?>"><?php echo($dag); ?></option>
<option value="Maandag">Maandag</option>
<option value="Dinsdag">Dinsdag</option>
<option value="Woensdag">Woensdag</option>
<option value="Donderdag">Donderdag</option>
<option value="Vrijdag">Vrijdag</option>
<option value="Zaterdag">Zaterdag</option>
<option value="Zondag">Zondag</option>
</select>
<br /><br />
<b>Datum: </b>
<select name="datum_dag">
<option value="<?php echo($datum_dag); ?>"><?php echo($datum_dag); ?></option>
<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>
<br /><br />
<b>Maand: </b>
<select name="datum_maand">
<option value="<?php echo($datum_maand); ?>"><?php echo($datum_maand); ?></option>
<option value="Januari">Januari</option>
<option value="Februari">Februari</option>
<option value="Maart">Maart</option>
<option value="April">April</option>
<option value="Mei">Mei</option>
<option value="Juni">Juni</option>
<option value="Juli">Juli</option>
<option value="Augustus">Augustus</option>
<option value="September">September</option>
<option value="Oktober">Oktober</option>
<option value="November">November</option>
<option value="December">December</option>
</select>
<br /><br />
<b>Gewerkt van </b>
<select name="begintijd">
<option value="<?php echo($begintijd); ?>"><?php echo($begintijd); ?></option>
<option value="01">1:00</option>
<option value="02">2:00</option>
<option value="03">3:00</option>
<option value="04">4:00</option>
<option value="05">5:00</option>
<option value="06">6:00</option>
<option value="07">7:00</option>
<option value="08">8:00</option>
<option value="09">9:00</option>
<option value="10">0:00</option>
<option value="11">11:00</option>
<option value="12">12:00</option>
<option value="13">13:00</option>
<option value="14">14:00</option>
<option value="15">15:00</option>
<option value="16">16:00</option>
<option value="17">17:00</option>
<option value="18">18:00</option>
<option value="19">19:00</option>
<option value="20">20:00</option>
<option value="21">21:00</option>
<option value="22">22:00</option>
<option value="23">23:00</option>
<option value="24">24:00</option>
</select>
<b> tot </b>
<select name="eindtijd">
<option value="<?php echo($eindtijd); ?>"><?php echo($eindtijd); ?></option>
<option value="01">1:00</option>
<option value="02">2:00</option>
<option value="03">3:00</option>
<option value="04">4:00</option>
<option value="05">5:00</option>
<option value="06">6:00</option>
<option value="07">7:00</option>
<option value="08">8:00</option>
<option value="09">9:00</option>
<option value="10">10:00</option>
<option value="11">11:00</option>
<option value="12">12:00</option>
<option value="13">13:00</option>
<option value="14">14:00</option>
<option value="15">15:00</option>
<option value="16">16:00</option>
<option value="17">17:00</option>
<option value="18">18:00</option>
<option value="19">19:00</option>
<option value="20">20:00</option>
<option value="21">21:00</option>
<option value="22">22:00</option>
<option value="23">23:00</option>
<option value="24">24:00</option>
</select>
<br /><br />
<b>Uitbetaald: </b>
<select name="betaald">
<option value="<?php echo($betaald); ?>"><?php echo($betaald); ?></option>
<option value="Nee">Nee</option>
<option value="Ja">Ja</option>
</select>
<br /><br />
<input type="hidden" value="<?php echo($id); ?>" name="id" />
<input type="submit" value="Plaats" name="enter"/>
</form>
</body>
</html>
[/code]
///////////////////////
overzicht.php///////
//////////////////////
[code]
<!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=iso-8859-1" />
<title>Overzicht</title>
</head>
<body>
<?php
// connecten met database
include("config.inc.php");
// Selecteer en tel de kolom verdiend met elkaar op maar alleen als uit diezelfde rij de kolom betaald ja is.
$select_betaald= "SELECT SUM(verdiend) AS verdiend FROM werkoverzicht WHERE betaald = 'ja' ";
$query_betaald = mysql_query($select_betaald);
$result_betaald = mysql_fetch_assoc($query_betaald);
// Selecteer en tel de kolom verdiend met elkaar op maar alleen als uit diezelfde rij de kolom betaald nee is.
$select_nietbetaald= "SELECT SUM(verdiend) AS verdiend FROM werkoverzicht WHERE betaald = 'nee' ";
$query_nietbetaald = mysql_query($select_nietbetaald);
$result_nietbetaald = mysql_fetch_assoc($query_nietbetaald);
//////////////////////////
//// Let op: Omdat er mysql_fetch_assoc is gebruikt, word het resultaat alleen maar met een array uitgespuugd.
/////////////////////////
// Wanneer je wel betaald en niet betaald met elkaar optelt krijg je het totaal :) goed he?
$result_totaal = $result_betaald["verdiend"]+$result_nietbetaald["verdiend"];
// Nou dan laten we de resultaten even allemaal zien op de pagina, ochjah dump het maar in een echo!
echo'
<h1>Overzicht</h1>
<hr>
Al uitbetaald: <b>€'. $result_betaald["verdiend"].'</b> <br>
Nog niet uitbetaald: <b>€'. $result_nietbetaald["verdiend"].'</b> <br>
Totaal verdiend: <b>€'. $result_totaal.'</b> <br>
<hr>
<b>Toevoegen: <a href="formulier.php">klik</a>.</b>
<hr>
<br><br>
<table border="0" bgcolor="blue" cellpadding="1px" cellspacing="1px" width="800px">
<tr>
<td bgcolor="white"><b>Dag</b></td>
<td bgcolor="white"><b>Datum</b></td>
<td bgcolor="white"><b>Begintijd</b></td>
<td bgcolor="white"><b>Eindtijd</b></td>
<td bgcolor="white"><b>Aantal Uur</b></td>
<td bgcolor="white"><b>Verdiend</b></td>
<td bgcolor="white"><b>Uitbetaald</b></td>
<td bgcolor="white"><b>Verander</b></td>
<td bgcolor="white"><b>Verwijder</b></td>
</tr>';
// Hierboven is al de eerste rij van een tabel gemaakt voor het op de pagina te laten zien.
// Hieronder komt de rest van de tabel, Maar dan moeten we eerst alles uit de database halen.
$query2 = "SELECT * FROM werkoverzicht";
$resultaat = mysql_query($query2);
// We zetten het in een while dan haalt hij herhaaldelijk 1 voor 1 rij uit zijn database totdat alles eruit is gelezen.
while($record = mysql_fetch_object($resultaat))
{
echo'
<tr>
<td bgcolor="white">'.$record->dag.'</td>
<td bgcolor="white">'.$record->datum_dag.' '.$record->datum_maand.'</td>
<td bgcolor="white">'.$record->begintijd.':00</td>
<td bgcolor="white">'.$record->eindtijd.':00</td>
<td bgcolor="white">'.$record->aantaluur.'</td>
<td bgcolor="white">'.$record->verdiend.'</td>
<td bgcolor="white">'.$record->betaald.'</td>
<td bgcolor="white"><a href="formulier.php?pag=update&id='.$record->id.'"> Klik </a></td>
<td bgcolor="white"><a href="verwerk.php?pag=delete&id='.$record->id.'"> Weg! </a></td>
</tr>
';
}
// En nog even de tabel op de pagina zelf sluiten
echo'</table>';
?>
</body>
</html>
//////////////////
verwerk.php///
/////////////////
<!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=iso-8859-1" />
<title>Verwerk.php</title>
</head>
<body>
<?php
// Connecten met database
include("config.inc.php");
// Kijken of velden zijn ingevuld
if(
// Noem het maar even checklist :)
!empty($_POST["dag"]) &&
!empty($_POST["datum_dag"]) &&
!empty($_POST["datum_maand"]) &&
!empty($_POST["begintijd"]) &&
!empty($_POST["eindtijd"]) &&
!empty($_POST["betaald"]) &&
!empty($_POST["enter"]) ){
// Zet alle POST waardes in een variabele, is wat duidelijker vind ik persoonlijk.
$dag = $_POST["dag"];
$datum_dag = $_POST["datum_dag"];
$datum_maand = $_POST["datum_maand"];
$begintijd = $_POST["begintijd"];
$eindtijd = $_POST["eindtijd"];
$eindtijd2 = $_POST["eindtijd"];
$betaald = $_POST["betaald"];
if($_GET["pag"] == voegtoe){
// Hieronder komt alles te staan wanneer je een nieuwe werkdag wilt invullen ?pag=voegtoe
// Uitleg: //
// In het formulier hebben de begintijd en de eindtijd een waarde meegekregen
// Die waarde is gewoon het aantal uur van het tijdstip dus 24:00 heeft als waarde 24 en 01:00 als waarde 01
// Hier kijkt hij of het begingetal groter is dan het eindgetal
if($begintijd >= $eindtijd)
// +24 is dan logisch om erbij tedoen, omdat je nooit eerder klaar bent dan je moet beginnen!
{ $eindtijd2+=24; }
// We reken hier even uit hoeveel uur er gewerkt is
$aantaluur = $eindtijd2 - $begintijd;
// We reken uit hoeveel je verdiend hebt, per uur word hier 5 euro verdiend.
$verdiend = $aantaluur*$europeruur;
// Nu hebben we alles uitgerekend tot zover en moeten alleen nog even in een database zetten
// Nou dat doen we dus zo:
$query="INSERT INTO werkoverzicht (dag, datum_dag, datum_maand, begintijd, eindtijd, betaald, aantaluur, verdiend) ";
$query .= "VALUES ('";
$query .= $dag ."', '";
$query .= $datum_dag ."', '";
$query .= $datum_maand ."', '" ;
$query .= $begintijd ."', '" ;
$query .= $eindtijd ."', '";
$query .= $betaald ."', '";
$query .= $aantaluur ."', '";
$query .= $verdiend ."');" ;
//Query uivoeren en eventueel checken op fouten!
mysql_query($query) or die(mysql_error());
// Ok, werkdag toegevoegd!
// Even melding weergeven en/of redirecten .
echo'<meta http-equiv="refresh" content="0;URL=overzicht.php" />';
// Sluiten van ?pag=voegtoe
}
// Dit is een totaal ander deel van de pagina
// We beginnen hier met het kijken of de GET waarde update is meegegeven.
if($_GET["pag"] == update){
// Zoja We beginnen met updaten!
// Elke keer als je deze pagina bezoekt ze langs de checklist gaan kan je de meegegeven waardes direct updaten.
$res=mysql_query("UPDATE werkoverzicht SET
dag = '" .$_POST["dag"] ."',
datum_dag = '" .$_POST["datum_dag"] ."',
datum_maand = '" .$_POST["datum_maand"] ."',
begintijd = '" .$_POST["begintijd"] ."',
eindtijd = '" .$_POST["eindtijd"] ."',
betaald = '" .$_POST["betaald"] ."'
WHERE id= ".$_POST["id"]." ORDER BY id DESC LIMIT 1 ")or die(mysql_error());
// hier ook weer mysql_error voor eventuele fouten op te sporen.
// Ok, werkdag upgedate!
// Even melding weergeven en/of redirecten.
echo'<meta http-equiv="refresh" content="0;URL=overzicht.php" />';
// en we sluiten het ?pag=update gedeelte weer.
}
// Hier onder is het vervolg van de "checklist"
}else{
// Wanneer niet alles is ingevuld komen ze hier terecht.
echo" 1 of meerdere invoervelden zijn niet gebruikt. Ga terug!";
// Ook de else van de checklist sluiten we hier.
}
// Hieronder komt het deel van het verwijderen
// Omdat je geen POST gegevens in moet vullen om te verwijderen
// Hoeft hij niet binnen de "checklist" te staan.
if($_GET["pag"] == delete){
$query_del="DELETE FROM werkoverzicht WHERE id=" .$_GET["id"]; // verwijderen
mysql_query($query_del) or die(mysql_error()); // hier ook weer mysql_error
// Stuur maar door als het gelukt is!
echo'<meta http-equiv="refresh" content="0;URL=overzicht.php" />';
// en ook het delete gedeelte sluiten we weer.
}
?>
</body>
</html>
[/code]
Reacties
0