Pitäis bändin sivuille saada keikkakalenteri. Miten sen sais toimimaan niin, että aina keikkapäivänä klo 24.00 sen päivän keikka katoais siitä listalta? Vanhoja keikkoja ei tarvi säilöä mihinkään. Onnistuuko se jotenkin esim. tekstitiedostoilla? Mieluiten ilman MySQL:llää, kun oon sille allerginen..no ei..se ei vaan toimi mun palvelintilassa.
Jos käytät jotain ulkoista palvelua, et todennäköisimmin onnistu saamaan sitä tietoa pyyhkiytymään juuri mainitsemanasi hetkenä.
Onnistuu niin, että aina kun keikka.php tms. avataan, tarkistaa skripti löytyykö vanhoja keikkoja ja sitten poistaa ne.
Onnistuu tekstitiedostoilla. Erottelet keikat esim. näin:
11.05.05 15:00 | Ranua 15.08.05 16:00 | Juva 16.08.05 17:00 | Takahikiä
Sitten tiedoston avaaminen file():llä, rivien jakaminen explode():lla ja tietojen luku, tarkistus ja poisto. Lopuksi näytetään käyttäjälle jäljellejäävät tiedot.
Tarviiko niitä oikeasti poistaa fyysisesti?
Eikö olisi helpompaa/järkevämpää, että vain tulevat keikat tulostuvat näkyviin? Ei tarvitsi kikkailla mitenkään, ja jäisi myös muisto edellisistä keikoista.
Itse en taas oikein tykkää tuosta joekoolin esittämästä "silmin luettavasta" päivämäärästä, vaan tykkään enemmän suoraan time()-funktion antamasta arvosta, jolloin ei tarvitse ajaa minkään funktion läpi, jotta pystyisi vertailemaan päivämääriä keskenään.
Tekee vain kunnon admin osion, niin keikkoja on sitten helppo lisätä ja päivämäärätkin menee silloin aina oikein.
Muuten tekisin kyllä suurinpiirtein joekoolin tapaisesti tuon keikkakalenterin.
Lebe80, mitenkä tollasen time()-funktion kanssa sitte pelataan?
Aikaleimojen kanssa pelautuminen
<?php //tämä hetki $nyt = time(); //luodaan timestamp 6.6.2012 klo 19.30 $leima = mktime(19,30,0,6,6,2012); //siisti aikaleima echo(date("G:i",$leima)); if ($nyt > $leima) { //keikka mennyt }
https://www.php.net/manual/fi/function.mktime.
https://www.php.net/manual/fi/function.time.php
Eikös time-funktio näytä senhetkisen ajan sekunteina päivämäärästä 1.1.1970 lähtien vai miten se on?
$aika = time();
Sen palauttama arvo on vissiinkin tallennettava tekstitiedostoon ja sitten vaan katseltava, miten paljon luku eroaa tämänhetkisestä lukemasta. Se summa jaetaan 60:llä => saadaan minuutit, jaetaan edelleen 60:llä => saadaan tunnit...
Vai tarkoititko kenties sitä, miten saisi tuollaisen luvun muotoon 12.08.05 tms? Eikös se mene samalla kaavalla? Jaetaan vaan sitä lukua niin kauan, että saadaan summa päivissä ja sitten suoritetaan parit yhteen- ja vähennyslaskut ja jaetaan hieman lisää jne.
Kaikenkaikkiaan homma olisi helpompi MySQLin päivämääräfunktioiden kanssa.
Edit: Juice ehti ensin ja selvensikin asiaa :)
Juice pistikin näkyviin kaikki tarvittavat funktiot.
Eli tuota mktimeä tarvitset vain kun tallennat keikan. Sen jälkeen $leima onkin jo tarvittavassa muodossa.
Time()-funktio palauttaa palvelimella olevan kellon ajan (yleensä oikea aika, saattaa olla muutamien minuuttien heitto).
Ja date funktioita ei tarvita kuin silloin, kun haluat saada leiman "luettavaan muotoon". time() funktio palauttaa ajan sekunnin tarkkuudella, mikä pitäisi olla tarpeeksi tarkka.
Mitään Teuvon antamia jakolaskuja yms. ei kannattane kellon ajoissa käyttää, sillä tuo mktime() ottaa huomioon kesä-/talviajat, karkausvuodet, yms. kuukausien yli menevät päivämäärät.
Aihe on jo aika vanha, joten et voi enää vastata siihen.