Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: "Huutokauppa" - systeemi

Sivun loppuun

Biotank [15.04.2005 19:04:55]

#

Tarkoituksena olisi tehdä http://www.kineliiga.tk - sivustolle
skripti, jolla pelaajia "ostetaan". Perusidea oli, että teen mysql_queryn, jolla tarjottu summa tallennetaan tietokantaan, jos pelaaja on myynnissä.

Myyntiaika olisi kolme päivää myyntiinlaittopäivämäärästä. Sitten kun tämä aika on kulunut pelaajasta ei voisi enää tarjota.

Voisiko joku neuvoa, miten tuollaisen voisi tehdä? Ongelmat ovat siis tuon päivämäärän kanssa.

pwc [15.04.2005 19:37:48]

#

Hmm, siis päivämäärässä on ongelmaa.. Ajan tallentaminen onnistuu ehkä helpoiten php:n time()-funktiolla, jota sitten muokataan date():lla. Aina sivunlatauksen yhteydessä vaan tarkistetaan, onko kyseisen pelaajan myyntiinlaitosta kulunut jo kolme vuorokautta.

ajv [15.04.2005 21:37:30]

#

Ajan tallentaminen tietokantaan kannattaa tehdä tietokannan ymmärtämässä formaatissa, eikä php:n time():llä, jolloin sen käsitteleminen on paljon helpompaa:
http://dev.mysql.com/doc/mysql/en/date-and-time-functions.html

Biotank [15.04.2005 21:47:47]

#

Jotain tuollaista ajattelinkin olevan, mutten viittinyt laittaa tuohon kuitenkaan:) Katsotaan jos huomenna edes ymmärtäisin ajv:n linkin sisältöä :)

ajv [15.04.2005 22:07:56]

#

Juu, elikkä jäin pohtimaan vielä tuota "myyntiaika kolme päivää myyntiinlaittopäivämäärästä" ja kokeilin seuraavan kyselyn toimivaksi:

SELECT
   pelaaja,
   (aika > ( NOW( ) - INTERVAL 3 DAY )) AS Olenko_myynnissa
FROM
   pelaajat

Elikkä `aika` on aika, jolloin ilmoitus on jätetty ja (aika > ( NOW( ) - INTERVAL 3 DAY )) AS Olenko_myynnissa on ns. BOOLEAN-haku, eli kysely palauttaa kutakuinkin seuraavanlaista:

+----------+------------------+
|Pelaaja   | Olenko_myynnissa |
+----------+------------------+
|Pelaaja1  | 1                |
|Pelaaja2  | 0                |
|Pelaaja3  | 1                |
+----------+------------------+

Edit: CURDATE() -> NOW()

Biotank [16.04.2005 20:49:40]

#

en sitten tänääkään tuosta http://dev.mysql.com/doc/mysql/en/date-and-time-functions.html
mitään ymmärtänyt :)

Miten sen ajan saa tallennettua tietokantamuotoon?

INSERT INTO pelaajat VALUES aika = (now()) WHERE id = 1

Tuota kokeilin, muttei toiminut.

leftover [16.04.2005 21:15:52]

#

INSERT INTO: Lisää tietokannan tauluun uuden tietueen
UPDATE: Päivittää olemassa olevaa tietuetta

En tiedä kumpaa halusit tehdä, päivittää id 1 olevaa tietuetta vai lisätä uuden tietueen id:llä 1, joten ohessa molemmat:

INSERT INTO pelaajat SET aika = NOW(), id = 1
UPDATE pelaajat SET aika = NOW() WHERE id = 1

ja aika-kentän tyyppi pitää luonnollisesti olla aikatyyppi (itse suosin DATETIME, toiset TIMESTAMP, kolmannet jotain muuta).

Biotank [16.04.2005 21:26:34]

#

Heh. Enpä edes tajunnut tuollaista (/tuollaisia) yksinkertaisia virheitä prkl.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta