glennsjo Skrevet 3. oktober 2004 Del Skrevet 3. oktober 2004 Denne koden gjør at jeg får datoen "torsdag 01. januar 1970" som output... Det øvrige stemmer nok, siden time() istedet for $tid gir dagens dato. Det jeg altså skal ha er datoen som er lagret som timestamp med navnet "tid" i databasen ut med norsk månedsnavn... Noen som kan fortelle hvordan jeg får ut dette? <?php $res = mysql_query("SELECT * FROM news1 WHERE kategori=04 ORDER BY tid DESC limit 1"); while($row = mysql_fetch_assoc($res)){ setlocale(LC_ALL, 'no_NO.ISO8859-1'); echo "<a href='news.php?id=".$row['id']."'>".$row['tid']."</a><br><br>"; echo strftime ("%A %d. %B %Y", $tid); } ?> Lenke til kommentar
???????? Skrevet 3. oktober 2004 Del Skrevet 3. oktober 2004 Hvilket format er datoen i? og hvor gammel er datoen? ta en kikk på www.php.net/strftime Lenke til kommentar
glennsjo Skrevet 3. oktober 2004 Forfatter Del Skrevet 3. oktober 2004 Datoen er fra i går! Eller som det står i databasen i timestamp-format: 20041002005400 Er det mer riktig at jeg skal bruke setlocale() da...? Lenke til kommentar
???????? Skrevet 3. oktober 2004 Del Skrevet 3. oktober 2004 Det er ikke korrket format på datoen, ta en kikk på mysql funksjonen UNIX_TIMESTAMP() f.eks. $res = mysql_query("SELECT *, UNIX_TIMESTAMP(tid) AS tid FROM news1 WHERE kategori=04 ORDER BY tid DESC limit 1"); Lenke til kommentar
glennsjo Skrevet 4. oktober 2004 Forfatter Del Skrevet 4. oktober 2004 (endret) Hei igjen! Takk for svar. Jeg tok en kikk på denne, og implementerte den i stedet. Men jeg får fremdeles 1. januar 1970 som output der jeg vil ha månedsnavnet fra nyheten på norsk format... For å teste litt satte jeg inn både den originale linja mi, strftime time() og med $tid. <?php $res = mysql_query("SELECT *, FROM_UNIXTIME(UNIX_TIMESTAMP(), ('%e.%m.%Y')) AS tid FROM news1 WHERE kategori=04 ORDER BY tid DESC limit 1"); while($row = mysql_fetch_assoc($res)){ setlocale(LC_ALL, 'no_NO.ISO8859-1'); echo "<a href='/news.php?id=".$row['id']."'>".$row['tid']."</a><br>"; echo strftime ("%A %d. %B %Y", $tid); echo strftime ("%A %d. %B %Y", time()); } ?> Dette gir denne outputen: 4.10.2004 torsdag 01. januar 1970 mandag 04. oktober 2004 Det er altså den i midten som er problemet. Jeg vil den øverste linja - 4.10.2004 - på formen 4. oktober 2004. Det hjelper forøvrig ikke å sette inn %B i stedet for %m i UNIX_TIMESTAMP() i SELECT. Den bare printes som B... EDIT: Nå oppdager jeg i ettertid at denne funksjonen jo slett ikke henter datoen fra databasen, så jeg måtte gå tilbake til date_format!! Endret 4. oktober 2004 av Glenn'ern Lenke til kommentar
Torbjørn Skrevet 4. oktober 2004 Del Skrevet 4. oktober 2004 hvorfor bruker du ikke mysql sin date_format? Lenke til kommentar
christt Skrevet 4. oktober 2004 Del Skrevet 4. oktober 2004 Variablen $tid inneholder ingenting, derfor blir 0 sendt inn i funksjonen. Noe som gir 1.januar 1970 (starten på unixtime). Bytt ut: echo strftime ("%A %d. %B %Y", $tid); med echo strftime ("%A %d. %B %Y", $row['tid']); Lenke til kommentar
glennsjo Skrevet 4. oktober 2004 Forfatter Del Skrevet 4. oktober 2004 (endret) christt: Nå begynner jeg bli frustrert her. Du mener sånn ikke sant: <?php $res = mysql_query("SELECT *, date_format(tid, '%e.%m.%Y') as tid FROM news1 WHERE kategori=04 ORDER BY tid DESC limit 1"); while($row = mysql_fetch_assoc($res)){ setlocale(LC_ALL, 'no_NO.ISO8859-1'); echo "<a href='/news.php?id=".$row['id']."'>".$row['tid']."</a><br>"; echo strftime ("%A %d. %B %Y", $row['tid']); echo strftime ("%A %d. %B %Y", time()); } ?> Ikke for å svare uhøflig, men tror du ikke jeg har prøvd det? Har prøvd $row['tid'] og ".$row['tid']." og '$row['tid']' og $row["tid"].. Du skjønner tegninga. 1. januar 1970 på alle sammen... <?php $res = mysql_query("SELECT *, date_format(tid, '%e.%m.%Y') as tid FROM news1 WHERE kategori=04 ORDER BY tid DESC limit 1"); while($row = mysql_fetch_assoc($res)){ setlocale(LC_ALL, 'no_NO.ISO8859-1'); echo "<a href='/news.php?id=".$row['id']."'>".$row['tid']."</a><br>"; echo strftime ("%A %d. %B %Y", $row['tid']); echo strftime ("%A %d. %B %Y", $row[tid]); echo strftime ("%A %d. %B %Y", $row["tid"]); } ?> gir 3.10.2004 torsdag 01. januar 1970torsdag 01. januar 1970torsdag 01. januar 1970 PS: Jeg måtte forlate UNIX_TIMESTAMP da den bare hentet dagens dato - jeg fikk ikke en gang datoen i databsen på det "feile" formatet. Endret 4. oktober 2004 av Glenn'ern Lenke til kommentar
Torbjørn Skrevet 4. oktober 2004 Del Skrevet 4. oktober 2004 igjen, har du sett på mysql sin date_format funksjon? ditt "tid" felt er da en mysqldato, er det ikke det? det vises som et tall som gir overflow og dermed 0 som epoch tid. Lenke til kommentar
Lemkin Skrevet 4. oktober 2004 Del Skrevet 4. oktober 2004 Som Torbjørn sier, så er mysql sin datefunksjon den beste løsningen her. Vil anbefale deg å sette inn NOW() i tid når du setter inn datoen. Også bytter du om på tid til date (husker ikke hva det het). Så kan du heller formatere datoen når du henter ut tiden. Lenke til kommentar
glennsjo Skrevet 4. oktober 2004 Forfatter Del Skrevet 4. oktober 2004 (endret) Yep. "tid" er allerede satt som timestamp i databasen. Den setter også alltid Now(), så problemet ligger nok ikke der heller... Fra structure: Field Type Null Default tid timestamp(14) Yes NULL Endret 4. oktober 2004 av Glenn'ern Lenke til kommentar
???????? Skrevet 5. oktober 2004 Del Skrevet 5. oktober 2004 Siden han ønsker navnene på norsk så kan det være lurt å beholde løsningen han allerede har. Bruk da fortsatt UNIX_TIMESTAMP(), men ikke på den måten du har gjort. Bruk heller eksempelet jeg skrev tidligere. Hvis ikke det fungerer så kjør kun denne: "SELECT UNIX_TIMESTAMP(tid) FROM news1 WHERE kategori=04 ORDER BY tid DESC limit 1" - og post variabelen her. Lenke til kommentar
glennsjo Skrevet 5. oktober 2004 Forfatter Del Skrevet 5. oktober 2004 (endret) Helt rått, O Store Spørsmålstegn! Jeg jobbet videre med den linja du kom med nå, og nuh funker det. Jeg legger ut koden som virker for future reference, som det heter. <?php $res = mysql_query("SELECT *, UNIX_TIMESTAMP(tid) AS tid FROM news1 WHERE kategori=04 ORDER BY tid DESC limit 1"); setlocale(LC_ALL, 'no_NO.ISO8859-1'); while($row = mysql_fetch_assoc($res)){ echo "<a href='/news.php?id=".$row['id']."'>"; echo strftime ("%A %d. %B %Y", $row[tid]); echo "</a><br>"; } ?> Jeg lurer på om det kan han noe med at jeg flyttet setlocale(LC_ALL, 'no_NO.ISO8859-1'); litt opp også.....? Endret 5. oktober 2004 av Glenn'ern 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å