Gå til innhold

litt problemet med tid


Anbefalte innlegg

Hei.

Jeg har da en side der man kan skrive inn en tekst, og når man poster teksten skal teksten stå oppe på siden i 24 timer..

mysql queryen ser slik ut.

SELECT tekst FROM tekst ORDER BY id DESC LIMIT 1

 

Men så til problemet. Og få teksten til og stå der i kun 24 timer er ikke noe problem, men hva skjer om noen sender inn en ny tekst før den gammle er ferdig? Jo den nye teksten vises istedenfor. Noen som har noen ide til hvordan jeg kan løse dette ?

Lenke til kommentar
Videoannonse
Annonse

hmm, kunne det, men om jeg gjør det slik, så vises ikke alle innlegg i 24 timer. Om noen poster den koden kl 1400, så er det nyeste innlegg liksom, så da skriver den ut det, jeg vil at det skal vises i 24 timer. Men om en luring skriver inlegg kl 1500, så blir det vist heller, siden det er det nyeste, og da har ikke det gammle blitt vist i 24 timer..

Lenke til kommentar

antar at tidsfeltet ditt i sql-databasen er av typen timestamp (YYYYMMDDHHMMSS - Year.Month.....Sec)

 

da får du ut de postene som er under 24h gamle med å skrive

SELECT tekst 
FROM tekst 
WHERE now() - tid <60*60*24
ORDER BY id DESC 

 

Kan forklare litt hva som skjer: Hver gang du legger inn en ting i databasen får posten et "timestamp". For å finne hvor mange sekunder gamle de er kan man ta den tiden som er nå (i timestamp-format) og trekke fra tiden posten ble lagt inn.

 

60*60*24 er antall sekunder i et døgn

 

now() -funksjonen i mysql gir deg timestampen akkurat nå.

 

Håper du finner ut av det. Tror dette skal fungere, uten at jeg har testa det. Spør hvis det er noe du lurer på

 

EDIT: ser du lager tisfeltet med strtotime() i php, hvis du har tid som timestamp i databasen i stedet får du gjeldende tid automatisk, slipper du å sette tiden selv. (INSTERT INTO tekst (tekst) VALUES ("her kan du slenge litt tekst") )

Endret av bragoon
Lenke til kommentar

Har prøvd noe lignende. Men nok en gang problemet med at det nyeste innlegget bare vises om det gammle ikke er eldre en 24 timer..

Hmm, får prøve og kjøre en while løkke på det, og velge siste 10 tekster. Og heller kjøre gjennom løkka og finne ut hva som er minst, for deretter og skrive det ut..

Lenke til kommentar

Ja, da bruker du koden til bragoon, som gir det alle innlegg nyere enn et doegn - det eldste foerst. Dvs at naar et innlegg er mer enn et doegn gammelt, vil det ikke havne blandt resultatene.

 

Med andre ord, hvis du tar spoerringen til bragoo og henter ut det foerste treffet fra den, vil du alltid vise den eldste oppfoeringen som er nyere enn 24 timer gammel.

 

Edit: Hmm.. leste posten ditt paa nytt naa. Mener du at naar innlegget foerst havner paa siden din, saa skal det staa der i 24 timer - selv om det ble lagt til databasen for 3 maaneder siden?

Endret av gozzer
Lenke til kommentar

hihi, nej. den koden til bragoon funket ikke :) for når jeg poster et inlegg så viser den feks test1. Så poster jeg et nytt innlegg 4 minutter etterpå, og da forsvinner test1, og da står det test2. og test2 skal ikke stå før etter 24 timer.. Men kan jo teste en gang til for og være sikker..

 

Nei nå skal du se.

Den koden til bragoon funket fakstisk. Om man setter til ORDER BY id og ikke ORDER BY id DESC. Litt tenking og åpne øya er tingen faktisk ^^

takk for hjelpen alle sammen :)

Endret av stianiquniez
Lenke til kommentar

Hmm.. det med sorteringen var jo i grunn ganske logisk. Og det er kanskje ikke saa lett aa snappe opp den naar to stykker insisterer paa at koden er riktig :-)

 

Flott at det fungerer naa i allefall!

 

 

Edit: ta eksempelet ditt med test1 og test2, 4 minutters mellomrom. Det vil jo si at test2 kun vil vises i 4 minutter - den tiden det tar mellom at test1 forsvinner og test2 gjoer det samme...

 

Saa hvis du vil vise absolutt alle innleggene i 24 timer (forsinkelsen fra de blir skrevet og til de vises kan fort bli enorm), saa maa du vel kjoere en eller annen bakgrunnsprosess som sjekker timestamp med jevne mellomrom og merker ut oppfoeringer som har vaert paa trykk i mer enn 24 timer. I saa tilfelle ville du bare hentet ut den eldste ikke-viste oppfoeringen.

Endret av gozzer
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...