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.