Lurifaksen Skrevet 4. august 2003 Del Skrevet 4. august 2003 Jeg har et skjema som lagres i mysql med et php script. Jeg vil også ha med datoen og klokkeslettet for når skjemaet blir sendt i. Hvordan skal jeg gjøre det? Hensikten med det er at jeg senere skal kunne hente ut f.eks "denne ukens innsendinger" - derfor funker det vel dårlig å bruke vanlig date() funksjon i php, ettersom mysql bruker et annet dato/tid format(?). Hvilke funksjon ville dere brukt i php scriptet for å logge dato klokkeslett? Ekstra spørsmål for den som gidder: Hvordan vil da spørringen som henter "denne ukens innsendinger" se ut? Lenke til kommentar
abcd423417984 Skrevet 5. august 2003 Del Skrevet 5. august 2003 lag feltet i datetime format i mysql databasen også bruker du now() i mysql querien. mysql_query("INSERT INTO tabell (date, felt1) values (now(), '".$felt1verdi."')"); Skjønner? Lenke til kommentar
[kami] Skrevet 5. august 2003 Del Skrevet 5. august 2003 bør være av typen DATETIME.. men det er kanskje åpenbart? se forøvrig http://www.mysql.com/doc/en/DATETIME.html Lenke til kommentar
Lurifaksen Skrevet 5. august 2003 Forfatter Del Skrevet 5. august 2003 lag feltet i datetime format i mysql databasen også bruker du now() i mysql querien. mysql_query("INSERT INTO tabell (date, felt1) values (now(), '".$felt1verdi."')"); Skjønner? Ikke helt egentlig. Dette er første gang jeg bruker mysql, og noe av det første jeg lager i php så jeg kan karakteriseres som n00b. Datetime i mysql er grei. Da bare endrer jeg data typen til feltet dato. Men det ble litt forvirring i den spørringen. Slik er spørringen min nå: $sql = "INSERT INTO logg SET Dato='$dato', IP='$IP', Melding='$melding"; Altså jeg bruker variabler i stedet. Hvordan blir da variabelen din? dato = "now()" ? Får jeg med klokkeslett også når jeg bruker now()? Lenke til kommentar
Blib Skrevet 5. august 2003 Del Skrevet 5. august 2003 www.php.net Søk på date() i functionlist. There ya go. Lenke til kommentar
Lurifaksen Skrevet 5. august 2003 Forfatter Del Skrevet 5. august 2003 Jeg vet hvordan date() funker, men det var vel egentlig ikke helt spørsmålet... Lenke til kommentar
tyldum Skrevet 5. august 2003 Del Skrevet 5. august 2003 now() som nevnes over er en kommando i mysql. Bruk slik som eksempelet hans, eller bruke php og formattere til rett datoformat. Enkleste er helt klart å bruke now(). Og bruk felttypen datetime (eller timestamp, husker ikke i farta), ikke date. Presiering: Du bruker med andre ord ikke variabler for dateo og tid, men bare now() istedet: $sql = "INSERT INTO logg ('Dato', 'IP', 'Melding') values(now(), '$IP', '$melding')"; Lenke til kommentar
Lurifaksen Skrevet 5. august 2003 Forfatter Del Skrevet 5. august 2003 Takk for hjelpen.. Trodde jeg skjønte litt nå, men den gang ei: Her er to varianter jeg har prøvd: 1: INSERT INTO meldinger ('Dato','IP','Melding') values(now(),'$IP','$melding') Får meldingen Query was empty 2: INSERT INTO meldinger SET Dato='now()', IP='$IP', Melding='$melding' Alt blir lagt inn i databasen, men dato feltet (er satt til DATETIME) får standardvedien 0000-00-00 00:00:00. Noen som har en idé? Har lest litt i mysql manualen, men blir ikke helt klok på dette. Hvis jeg en gang klarer å få lagt inn dato og klokkeslett, blir ikke det litt tungvindt når formatet er helt feil? Det går jo selvsagt greit å lagre det i databasen slik, men når jeg skal f.eks liste de ti siste oppføringene i databasen, med dato/klokkeslett, så blir det vel masse styr for å vise det i norsk format? Lenke til kommentar
abcd423417984 Skrevet 5. august 2003 Del Skrevet 5. august 2003 det er viktig at now() står uten "" eller '' rundt seg og NEI det blir ikke feil/rotete formatering. for å hente siste 10 bruker du da bare "ORDER BY Dato DESC" på slutten av SQL querien. Lenke til kommentar
Lurifaksen Skrevet 5. august 2003 Forfatter Del Skrevet 5. august 2003 Ja, den gjorde egentlig det, jeg bare testet med ' for å se om det funket, og glemte å ta det vekk igjen... Edit: Nei så sannelig! Det var bare den første jeg hadde prøvd det på! Nå prøvde jeg den siste uten ' og det funket glimrende. Men jeg lurer fremdeles på følgende: Jeg skjønner at formateringen ikke blir rotete når jeg skal hente ut data - men å hente ut og i tillegg VISE det blir vel litt bal? Altså "echo $dato<br>$melding" Lenke til kommentar
Ueland Skrevet 5. august 2003 Del Skrevet 5. august 2003 Bruk denne for og få ut datoen på en korrekt måte <?PHP echo date ("d/M/H",$dato); ?> :-) d/M/H er formateringen på hvordan datoen skal vises. Lenke til kommentar
Lurifaksen Skrevet 5. august 2003 Forfatter Del Skrevet 5. august 2003 Bruk denne for og få ut datoen på en korrekt måte <?PHP echo date ("d/M/H",$dato); ?> :-) d/M/H er formateringen på hvordan datoen skal vises. Hmm.. alle datoene ble 01/Jan/01: 2005-08-20 03:00:00 2003-08-05 23:01:27 ble til: 01/Jan/01 01/Jan/01 Lenke til kommentar
Ueland Skrevet 5. august 2003 Del Skrevet 5. august 2003 <?PHP echo date ("m/d/y H:i",$dato); ?> kansje har lagt til tid og her..slikt bruker jeg den hvertfall. Lenke til kommentar
Lurifaksen Skrevet 5. august 2003 Forfatter Del Skrevet 5. august 2003 Nå ble det: 01/01/70 01:33 Har du lagt datoen og klokkeslettet inn i databasen med now() funksjonen? Og hvordan er feltet i tabellen din satt opp? Lenke til kommentar
tyldum Skrevet 6. august 2003 Del Skrevet 6. august 2003 $formatert_dato = date("F jS Y", strtotime($dato)); ...hvor $dato er dato-feltet fra databasen. Slå opp på date() i PHP-dokumentasjonen for å lære mer om hvordan du kan formatere datovisningen. Problemet du nå opplever er at date() forventer input på en bestemt måte, men ikke slik som datetime-feltet i MySQL fungerer. Dermed må du bruker strtotime() (står for string to time), en funksjon som tolker strenger om til formatet date vil ha som input. Lenke til kommentar
tyldum Skrevet 6. august 2003 Del Skrevet 6. august 2003 Du kan også bruke et int-felt i databasen og så lagre et unix timestamp. Da trenger du ikke konvertere før du mater det til date(), men du vil jo få et ganske uforståelig timestamp hvis du ikke bruker formattering på feltet. Jeg foretrekker steget innom strtotime() av ulike årsaker, men mest den nevnte. Lenke til kommentar
Valagar Skrevet 6. august 2003 Del Skrevet 6. august 2003 Du kan også bruke et int-felt i databasen og så lagre et unix timestamp. Da trenger du ikke konvertere før du mater det til date(), men du vil jo få et ganske uforståelig timestamp hvis du ikke bruker formattering på feltet. Jeg foretrekker steget innom strtotime() av ulike årsaker, men mest den nevnte. Jeg har en tendens til å bruke int(15) og sende unix timestamps inn og ut. For å konvertere har jeg bare laget en funksjon som heter format_date(), og som lager det formatet jeg ønsker. Ulempen med dette er at jeg ikke kan bruke mysqls innebygde funksjoner, som YEAR(), MONTH() og så videre. Jeg skal overhodet ikke påstå at min måte er smart, kanskje heller tvert imot, men gammel vane er vond å vende Lenke til kommentar
Lurifaksen Skrevet 6. august 2003 Forfatter Del Skrevet 6. august 2003 Dermed må du bruker strtotime() (står for string to time), en funksjon som tolker strenger om til formatet date vil ha som input. GLIMRENDE!! Nå går det som smurt. Eneste som mangler nå er at det står dato på norsk, men da må jeg vel bruke setlocale() eller noe slikt. Det tror jeg jeg skal klare på egenhånd... Tusen takk for hjelpen alle sammen! Lenke til kommentar
tyldum Skrevet 7. august 2003 Del Skrevet 7. august 2003 Jeg har en tendens til å bruke int(15) og sende unix timestamps inn og ut. For å konvertere har jeg bare laget en funksjon som heter format_date(), og som lager det formatet jeg ønsker. Du er klar over at det har liten hensikt å angi størrelse på int-felt? Betyr bare hvor mange siffer som skal 'paddes', har ingeting med størrelsen på feltet å gjøre. int er int, int(10) er like stort som int(15). Les mer: http://www.mysql.com/doc/en/Numeric_types.html 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å