Kaipaisin vinkkejä miten PHP:llä tekstiä sivuille automaattisesti päiväyksen mukaan? Tietokannalla onnistuisi helpommin, mutta jos sitä ei käytössä niin miten homma hoituisi tekstitiedoston avulla?
Itse tykkään ohjelmoida, pohjaideaa vain kaipaan asian toteutukseen.
Kirjoittaa vaan koodinpätkän, että "tulosta tämä x-tekstitiedosto, kun päivä on 25.7.2008" ja jatkaa samalla tyylillä... mutta tulisi hirveästi koodia ja tekstitiedostoja.
Voisiko siis jotenkin samasta tekstitiedostosta tulostaa halutulle sivustolle vain tietyn pätkän tekstiä eli aina eri halutun päivän mukaan tulostaisi sivulle eri tekstinpätkän samasta tekstitiedostosta? Onko mahdollista?
Tässähän voisi vertailla päivämäärä ja tulostaa sen mukaan tietoa. Toteutustapoja on ikävä kyllä yhtä monta, kuin on koodaajiakin.
Itsellä tulee mieleen juuri "aikaleiman" mukaan jaoteltu esim. taulukko, josta tieto valittaisiin sen mukaan, minkä rivin aikaleima on viimeksi ylitetty.
Taulukkojan voisi olla ihan yksitasoinen taulukko, jossa solut olisi php:n omassa timestamp-muodossa, tai se voisi olla moniulotteinen taulukko, jossa muoto olisi ihmisen luettavissa esim. $tieto[2008][07][25][12][15] = "foobar.foo";
Jälkimmäisessä tietenkin taulukon selaaminen voi jossain tapauksessa olla turhan hidasta, mutta toisaalta, siinä on helpompi rajata looppi tietylle aikavälille.
Kiitos Lebe80, pitää vielä sulatella ideaasi.
Tarkennan sen verran, että tulisi pienelle ravintola-saitille
eli tulostaisi etusivulle aina "päivän menun" automaattisesti.
(ja ylläpitäjä voisi vaikka kerran kuussa muokata itse ftp:n kautta tiedostoa ja muokata menuja/tekstejä)
Sama siis minkälaisesta tiedostosta hakisi tekstiä, tekstiedosto lienee kuitenkin yksinkertaisin.
Yksi ratkaisu on kirjoittaa eri päivinä näytettävät asiat tiedostoon tähän tapaan:
###25.7.2008 Tämä tulee perjantaina. ###26.7.2008 Tämä tulee lauantaina. ###27.7.2008 Tämä tulee sunnuntaina.
Eli kolme risuaitaa ja päivämäärä ilmoittavat, että siitä alkava osuus pitää näyttää tiettynä päivänä. Tietenkin mikä tahansa muukin järkevä merkintätapa kelpaisi.
Tiedostosta voi sitten hakea oikeat tiedot senhetkiselle päivälle näin:
<?php $tiedot = file("tiedot.txt"); $tila = 0; for ($i = 0; $i < count($tiedot); $i++) { if (substr($tiedot[$i], 0, 3) == "###") { if (trim($tiedot[$i]) == "###" . date("j.n.Y")) { $tila = 1; } else { $tila = 0; } continue; } if ($tila == 1) { echo $tiedot[$i]; } } ?>
Tätä ajatusta voi myös laajentaa niin, että päivämäärämerkintään voi kirjoittaa monta päivämäärää (esim. jos sama ruokalista toistuu monena päivänä).
Yksinkertaista olisi kirjoittaa tiedostoon 31 tai 366 riviä ja tulostaa sieltä rivi, jonka numero olisi date("d") tai date("z") arvo.
Kiitos kaikille.
Laaksosen versiosta jalostetaan.
Palataas tähän vielä, miten helposti saisi tuosta Laaksosen esimerkistä muokattua niin, että se näyttäisi koko viikon ruokalistan? Ei viimeistä 7 päivää, vaan aina viikon kerrallaan.
PHP:n date funkkarilla voi myös selvittää nykyisen viikon numeron.
$viikko = date("W");
Tuon avulla vaan sitten soveltamaan.
Antti80 kirjoitti:
Palataas tähän vielä, miten helposti saisi tuosta Laaksosen esimerkistä muokattua niin, että se näyttäisi koko viikon ruokalistan? Ei viimeistä 7 päivää, vaan aina viikon kerrallaan.
Älä käytä päivämäärää, tallenna vuosi ja viikon numero.
Hmm...vielä vähän lisävinkkiä niin pääsen alulle. :)
Viikon ruokalistat erotetaan seuraavasti viikon numeron perusteella:
###32 Spagettia Lihapullia ... ###33 Muusia makkaraa ...
Tuosta Antin esimerkistä on helppo soveltaa tarvittavanlainen skripti:
aivan juu, kiitos. Testataan...
Aihe on jo aika vanha, joten et voi enää vastata siihen.