Tein palkkalaskurin käyttäen pohjana putkasta löytynyttä palkkalaskuria. Nyt laskuri lähettää tiedot tietokantaan onnistuneesti ja tarkoitus olisi saada aikaiseksi haku jolla voin listata työntekijän nimen + palkkakuukauden perusteella tiedot yhdelle sivulle.
Tällä koodilla käsittelen palkan lisäämisen tietokantaan
<?php
$virhe = "";
$yhteysNro = mysql_connect("localhost","xxkäyttäjä","xxxxxxxxxxxxxxxx");
if ($yhteysNro)
{
if (mysql_selectdb('hr'))
{
 $sql_lauseke = 'INSERT into palkat values(' .
"\"{$_POST['pvm']}\", " .
"\"{$_POST['tyontekija']}\", " .
"\"{$_POST['tuntipalkka']}\", " .
"\"{$_POST['tuntimaara']}\", " .
"\"{$_POST['selite']}\");";
mysql_query ($sql_lauseke)
or $virhe = "Virhe: " . mysql_errno() . ": " . mysql_error();
}
}
?>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<?php
if (strlen($virhe) > 0)
{
print("<h2>Tallennusvirhe</h2>");
print($virhe);
}
else
print("<h2>Tiedot on talletettu</h2>");
?>
<p>
<a href="palkanlisays.php">Takaisin lomakkeelle</a>
</body>
</html>hakulomakkeessa olisi siis tarkoitus käyttää
<input type="date" name="pvm"> JA <SELECT NAME="tyontekija"> <OPTION VALUE="ei valittu">Työntekijä <OPTION VALUE="ulla taalasmaa">Ulla Taalasmaa <OPTION VALUE="seppo taalasmaa">Seppo Taalasmaa <OPTION VALUE="jyrki käteinen">Jyrki Käteinen <OPTION VALUE="johanna tukiainen">Johanna Tukiainen <OPTION VALUE="riku rantala">Riku Rantala </SELECT>
kenttiä..
Kuinka tästä aloittelisin, en tähän löytönyt ohjeita..
-Rintsi
Koodi näyttää vaaralliselta: SQL-kyselyyn upotetaan merkkijonoja suoraan, ilman minkäänlaista tarkastusta tai escape-toimintoa.
Nykyään PHP:ssä pitäisi käyttää PDO:ta. Putkassa on siitä hyvä opas.
HTML5 kirjoitti:
Nykyään PHP:ssä pitäisi käyttää PDO:ta.
Se on toki yksi, mutta ei ainoa suositeltava vaihtoehto. Ja joka tapauksessa parempi kuin mysql_ komennot.
Teenkö sen näin oikein?
Yhteys.php:
<?php
try {
    $yhteys = new PDO("mysql:host=localhost;dbname=hr", "user", "password");
} catch (PDOException $e) {
    die("VIRHE: " . $e->getMessage());
}
$yhteys->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$yhteys->exec("SET NAMES latin1");
?>Palkan vienti käsittelijälle:
<h1>Palkan lisäys</h1> <form action="kasittely.php" method="post"> <SELECT NAME="Tyontekija"> <OPTION VALUE="tyhja"> SELECTED>ei valittu <OPTION VALUE="jorma">jorma <OPTION VALUE="leija"leija <OPTION VALUE="jesse">jesse </SELECT> <p>Päivämäärä: <input type="date" name="pvm"></p> <p>Tunnit: <input type="text" name="tunnit"></p> <p>Tuntihinta: <input type="text" name="tuntihinta"></p> <p>Selite: <input type="text" name="selite"></p> <p><input type="submit" value="vienti"></p> </form>
Ja käsittely:
<?php include("yhteys.php"); $kysely = $yhteys->prepare("INSERT INTO palkka (tyontekija, pvm, tunnit, tuntihinta, selite) VALUES (?, ?)"); $kysely->execute(array($_POST["tyontekija"], $_POST["pvm"] $_POST["tunnit"] $_POST["tuntihinta"] $_POST["selite"])); ?>
Kiitos vastauksista!
Aihe on jo aika vanha, joten et voi enää vastata siihen.