Käyttäjän työkalut

Sivuston työkalut


toteutus

Luodaan asiakastietokanta

CREATE TABLE IF NOT EXISTS `asiakkaat` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `etumini` text NOT NULL,
  `sukunimi` text NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

Lisätään muutama asiakas

INSERT INTO `asiakkaat` (`id`, `etumini`, `sukunimi`) VALUES
(1, 'Roope', 'Ankka'),
(2, 'Hannu', 'Hanhi'),
(3, 'Milla', 'Magia'),
(4, 'Kroisos', 'Pennonen'),
(5, 'Musta', 'Pekka'),
(6, 'Hessu', 'Hopo');

Koska kirjastosta lainataan myös kirjoja, niin tehdä tietokanta lainat.

CREATE TABLE IF NOT EXISTS `lainat` (
  `kirjan_id` int(11) NOT NULL,
  `asiakkaan_id` int(11) NOT NULL,
  `palautuspvm` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

Lisätään muutama laina kantaan.

INSERT INTO `lainat` (`kirjan_id`, `asiakkaan_id`, `palautuspvm`) VALUES
(1, 2, 0),
(3, 1, 0);

Miksi lainat ovat eri kannassa? Miten yhdistetään eri tietokannat? Tietokannat voi yhdistää left join tai right join komennoilla. Katsotaan laina-kannasta, mitkä kirjat ovat menossa.

SELECT * FROM `lainat` LEFT JOIN kirjat ON kirjan_id = kirjat.id

Lisätään vielä asiakkaan nimet:

SELECT * FROM `lainat` LEFT JOIN kirjat ON kirjan_id = kirjat.id LEFT JOIN asiakkaat ON asiakkaan_id = asiakkaat.id

Valinta SELECT * FROM asiakkaat LEFT JOIN lainat ON asiakkaan_id = asiakkaat.id; kertoo kaikki asiakkaat ja heidän lainat. Komento SELECT * FROM asiakkaat RIGHT JOIN lainat ON asiakkaan_id = asiakkaat.id; kertoo vain asiakkaat, joilla on lainoja.

Valinnalla SELECT * FROM kirjat LEFT JOIN lainat ON id=kirjan_id saadaan kirjataulukko, jossa näkyy, onko kirja lainassa vai hyllyssä (lainaajatiedot NULL).

Toteuta lainaus-toiminto.

Tee sivu, jossa on kaksi valintataulukkoa. Toisesta voidaan valita lainaaja ja toisesta kirja. Laina-aika on kaksi viikkoa time() + (2* 7 * 24 * 60 * 60).

(kannassa lainat voisi olla palautuspvm lisäoptiona DEFAULT DATE_ADD(NOW(), INTERVAL 14 DAY)), jolloin tietokannassa olisi suoraan palautuspäivämäärä muodossa VVVV-KK-PP, nyt se on sekunteina 1970 vuoden jälkeen ja päivämäärämuunnokset pitää nyt tehdä PHP:ssa.

toteutus.txt · Viimeksi muutettu: 2015/08/13 07:20 / 127.0.0.1