Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Aikalaskuri / ikälaskuri

Sivun loppuun

merlin [08.03.2011 21:05:01]

#

Miten kannattaisi yksinkertaisimmin tehdä laskuri, joka laskee tietystä päivämäärästä kuluneen ajan ja muuttaa sen tietyksi luvuksi.

Eli siis laskee vuosia, muttei 365pv/a tyylillä vaan 60pv/a. Etsin ihan suoraa koodipätkää, olen itse näiden kanssa ihan toivoton :D Ja se päivämäärä pitäisi pystyä poimimaan tietokannasta.

Saa linkata myös valmiita koodipätkiä :)

The Alchemist [08.03.2011 21:14:58]

#

No jos sulla on tietokannassa date-tyyppisiä arvoja, niin saat laskettua nämä kuvitteelliset 60-päiväiset vuodet esim. seuraavasti:

SELECT ( UNIX_TIMESTAMP('pvm') - UNIX_TIMESTAMP('2011-01-01') ) / ( 3600*24*60 ) AS vuodet FROM taulu;

Tuo jälkimmäinen päivämäärä on se, josta alkaen aikaa lasketaan ja se tulee ilmoittaa muodossa YYYY-MM-DD. Viimeisenä oleva kertolasku laskee 60 vuorokauden sekunnit, sillä myös UNIX_TIMESTAMP-funktio palauttaa sekuntimääräisen arvon.

merlin [09.03.2011 10:04:39]

#

Kiitosta :) Mutta siis miten tuon komennon saa muokattua sellaiseksi, että se nappaa sen sieltä taulusta? Kun ymmärsin että tuossa 'pvm' kohdassa se valitsee sen sarakkeen, mutta mitä tuohon kakkoskohtaan pitää laittaa?

Metabolix [09.03.2011 10:46:14]

#

Kohta 'pvm' pitää ottaa pois (tai siihen voi laittaa NOW()), ja kohdan '2011-01-01' tilalle pitää laittaa haettavan sarakkeen nimi.

makumaku [09.03.2011 11:02:37]

#

Jos päivämäärät on date tyyppisiä niin menisi varmaan ilman muuntoa sekunneiksikin tyyliin:
SELECT (DATEDIFF(CURRENT_TIMESTAMP, aika_sarakkeen_nimi) / 60) AS vuodet FROM taulu;

merlin [09.03.2011 11:23:17]

#

Kiitos kokeilen :)

----

Ei onnistunut. Tai siis nyt jäi ongelmaksi se, että millä komennolla sen saa esiintymään siellä sivuilla :D $vuodet vai miten?

merlin [09.03.2011 14:36:30]

#

Sain toimimaan, miten noiden desimaalien määrää voi muuttaa täältä voi huomata, että kaunis neljädesimaalinen luku tuolla syntymäajan jälkeen suluissa - perustiedoissa kuvan alla.

Tarkoitus olisi saada kokonaisuluku tai korkeintaan yksidesimaalinen luku.

Lebe80 [09.03.2011 15:38:31]

#

echo (int)$vuodet

Muuttaa muuttujan int-tyyppiseksi, jolloin se pyöristyy aina täyteen tasalukuun.

Voit käyttää myös floor(), jolloin luku pyöristetään alaspäin täyteen lukuun.
echo floor($vuodet);
https://www.php.net/manual/en/function.floor.php

tai esim. printf() -funktiota, jos haluat desimaalin näkyvän aina:
echo printf("%.1f",$vuodet);
https://www.php.net/manual/en/function.printf.php

merlin [09.03.2011 15:52:13]

#

Kiitos! Nyt toimii tuolla floorilla :)


Sivun alkuun

Vastaus

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

Tietoa sivustosta