stian90_2 Skrevet 31. august 2006 Del Skrevet 31. august 2006 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
gozzer Skrevet 31. august 2006 Del Skrevet 31. august 2006 Hvordan ser tabellen din ut? Du maa vel uansett lagre tid da posten ble oppretta, og etter du har gjort det kan du hente ut poster fra oensket tidsrom. Lenke til kommentar
stian90_2 Skrevet 31. august 2006 Forfatter Del Skrevet 31. august 2006 tabellen ser slik ut: tekst realid tid Jeg lagrer tiden når den ble opprettet og bruker strtotime osv osv for og bare ha den der i 24 timer. Men hvordan jeg henter ut akuratt den posten som er nermest akuratt nå er litt værre. Lenke til kommentar
lilminime Skrevet 31. august 2006 Del Skrevet 31. august 2006 Hva med og lage en rad som heter tiddadetblepostet i tabellen og sortere etter den raade sånn at det blir slik; SELECT tekst FROM tekst ORDER BY tiddadetblepostet ASC; Lenke til kommentar
stian90_2 Skrevet 31. august 2006 Forfatter Del Skrevet 31. august 2006 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
lilminime Skrevet 31. august 2006 Del Skrevet 31. august 2006 Jeg drømmer om en php bok:) Lenke til kommentar
stian90_2 Skrevet 31. august 2006 Forfatter Del Skrevet 31. august 2006 lover at svaret ikke finnes i den heller if($du_skal_på_turen_i_mårra) echo 'Så får du den da'; else echo 'hmm, får stikke innom med den da'; Lenke til kommentar
bragoon Skrevet 31. august 2006 Del Skrevet 31. august 2006 (endret) 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 31. august 2006 av bragoon Lenke til kommentar
stian90_2 Skrevet 31. august 2006 Forfatter Del Skrevet 31. august 2006 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
bragoon Skrevet 31. august 2006 Del Skrevet 31. august 2006 Queryen jeg skrev vil returnere alle innlegg som er nyere enn et døgn gamle, var det ikke det du ville ha? Lenke til kommentar
stian90_2 Skrevet 31. august 2006 Forfatter Del Skrevet 31. august 2006 men vil at innleggene du sender inn skal vises i 24 timer før den viser det neste. uavhengig av når det ble sendt inn. Lenke til kommentar
gozzer Skrevet 31. august 2006 Del Skrevet 31. august 2006 (endret) 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 31. august 2006 av gozzer Lenke til kommentar
stian90_2 Skrevet 31. august 2006 Forfatter Del Skrevet 31. august 2006 (endret) 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 31. august 2006 av stianiquniez Lenke til kommentar
gozzer Skrevet 31. august 2006 Del Skrevet 31. august 2006 (endret) 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 31. august 2006 av gozzer Lenke til kommentar
stian90_2 Skrevet 31. august 2006 Forfatter Del Skrevet 31. august 2006 Denne koden kjøres på index filen, slik at teksten vises på siden hele tiden. Så akuratt det er ikke noe problem. Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå