Gå til innhold

[Løst]Regne ut antall dager til ein dato


Anbefalte innlegg

Hei,

Eg slit litt med logikken her, så eg treng deira hjelp for å samle tankane. Eg skal rekne meg fram til ein dato, i dager slik at brukeren kan få sjå kor lenge det er igjen til eit element utløp.

 

Det som skjer er at ein brukar postar inn opplysninger, om la oss seie matvarer. Datoen idag blir automatisk satt som startdato, og ein må angi ein månedsintervall på kor lenge varen vil vare før ein må kaste den. Så eg sitt altså med når produkt blei posta i databasen, samt kor mange månadar det held.

Korleis kan eg utfrå det rekne meg fram til kor lenge produktet har igjen før det må kastes i dager med PHP basert på at eg veit kva tid produktet vart kjøpt, og kor lenge det held i måneder.

 

Beklager dårleg forklaring. Men eg må nesten skrive det slik for at eg skal forstå det sjølve. Eg må vel nytte mktime, men korleis? Antall dager skal ikkje reknes ut å lagres i database, eg vil at tenaren skal rekne det ut kvar gong produktene vises basert på kjøpsdato óg månadsintervall.

 

Klarer dei å hjelpe meg? Eg forstår ikkje heilt sjølv ka eg driv med, men såg for meg å bruke mktime på nokon måte? Somsagt skal resultatet vere "Produktet ditt har x antall dager igjen".

 

Takk for all hjelp!

Endret av steffenz
Lenke til kommentar
Videoannonse
Annonse

Hei på deg der!

Som ingen vet så har MySQL også en helt grei mengde med datofunksjoner. Siden du nevner database så går jeg ut i fra at du bruker MySQL.

Enkleste måten å gjøre dette på da er egentlig noe så enkelt som

SELECT DATEDIFF(datokolonne, NOW()) AS expires FROM tabell

 

Mer om MySQL sine datofunksjoner:

http://dev.mysql.com/doc/refman/5.1/en/dat...-functions.html

Endret av LoS
Lenke til kommentar

Men korleis skriv eg dette ut då?

Har følgende i PHP koden no:

 

	$sqldato = "SELECT DATEDIFF(radisql, NOW()) AS expires FROM tabellen";
$datoresultat = mysql_query($sqldato, $tilkobling);
$datoigjen = mysql_fetch_array($datoresultat);

 

Men kva no?

Endret av steffenz
Lenke til kommentar

Ok, da begynner vi å snakke. Spørringen blir kanskje litt (unødvendig?) komplisert.

SELECT DATEDIFF(DATE_ADD(NOW(), INTERVAL radisql MONTH, NOW()) AS expires FROM tabellen

Forøvrig utestet, aldri prøvd å hente intervaltiden fra sql før.

Lenke til kommentar

Hvis du skriver inn datoen det vil gå ut på i databasen i typen DATE så skal den første spørringa fungere. Bruker du derimot unix timestamp, så må du konvertere i hver spørring med funksjonen FROM_UNIXTIME, hvis du kun bruker et tall som f.eks 12 i en kolonne så må du bruke DATE_ADD. Har aldri selv prøvd på sistenevnte så det er mulig det ikke er mulig.

 

Finnes sikkert en snedig løsning i PHP og, men MySQL har så mange fine ubrukte datofunksjoner at å finne opp hjulet på nytt virker unødvendig.

 

Hjelper sykt mye hvis du kan poste databaseoppsettet ditt.

Lenke til kommentar

Det fungerer jo, hadde bare glemt en parantes.

SELECT DATEDIFF(DATE_ADD(NOW(), INTERVAL intervall MONTH), NOW()) AS expires
FROM tid

 

Og hvis du vil bruke datoen i databasen for når det ble lagt til så bruker du bare

SELECT DATEDIFF(DATE_ADD(forrige, INTERVAL intervall MONTH), NOW()) AS expires
FROM tid

Endret av LoS
Lenke til kommentar

Det står framleis -1823 dager.. Det kan jo ikkje stemme då intervallet skal vere 12 månader frå idag (då måtte eg jo fått 356?)

Kva kan vere galt?

Datoen i databasen (forrige) fekk eg generert frå koden NOW(); til SQL.

 

Redigert: Det var berre ein feil i syntaksen på dei tidligare tilagte innlegga i databasen. No fungerer det optimalt. Takk for hjelpa, eg ante verkeleg ikkje at MySQL kunne teke seg av slike matematiske operasjonar. Mykje enklare enn i PHP.

Endret av steffenz
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...