HaKj Skrevet 11. august 2015 Del Skrevet 11. august 2015 Hei Jeg trenger litt hjelp med formatering av dato fra Mysql. Jeg har fått koden under til å fungere, eneste jeg mangler er en måte å vise datoene i et annet format. Nå vises de som 2015-08-23, jeg henter dem rett ut fra Mysql, hvor de er lagret som Date. Jeg ønsker å vise dem som 23/8 Kan noen av dere hjelpe meg med dette problemet? Takk for hjelpen. // Create connection $conn = mysqli_connect($servername, $username, $password, $dbname); mysqli_set_charset($conn,"utf8"); // Check connection if (!$conn) { die("Connection failed: " . mysqli_connect_error()); } $sql = "SELECT Dato, Klokkeslett, Type, Taler, Sanger FROM neste10moter"; $result = mysqli_query($conn, $sql); if (mysqli_num_rows($result) > 0) { // output data of each row while($row = mysqli_fetch_assoc($result)) { echo $row["Dato"]." ".$row["Klokkeslett"]." ".$row["Type"]." ". $row["Taler"]." ".$row["Sanger"]."<br>"; } } else { echo "0 results"; } mysqli_close($conn); ?> Lenke til kommentar
terjeelde Skrevet 11. august 2015 Del Skrevet 11. august 2015 Hei, Når du har et date-objekt, så har det ikke lenger så mye med MySQL å gjøre, og du kan bruke PHP-funksjoner på vanlig vis. Du kan da bruke f.eks .format-metoden, for å selv beskrive formatet du vil ha den i. Se mer her: http://php.net/manual/en/function.date.php tld Lenke til kommentar
HaKj Skrevet 11. august 2015 Forfatter Del Skrevet 11. august 2015 Hei, Når du har et date-objekt, så har det ikke lenger så mye med MySQL å gjøre, og du kan bruke PHP-funksjoner på vanlig vis. Du kan da bruke f.eks .format-metoden, for å selv beskrive formatet du vil ha den i. Se mer her: http://php.net/manual/en/function.date.php tld Hei Vil det si at jeg kan formatere datoen i echo linjen? Hvordan vil det da bli hvis jeg ønsker at 2015-08-23 skal bli skrevet som Søndag 23. August? Harald Lenke til kommentar
Crowly Skrevet 11. august 2015 Del Skrevet 11. august 2015 (endret) Ta en titt på DATE_FORMAT SELECT DATE_FORMAT(dato, '%d/%m/%Y') dato FROM -- dato = 11/08/2015 SELECT DATE_FORMAT(dato, '%W %d. %M') dato FROM -- dato = Tuesday 11. August For å ikke få ukedager og måneder på engelsk må lc_time_names endres: https://dev.mysql.com/doc/refman/5.1/en/locale-support.html SET lc_time_names = 'no_NO'; I php $conn = mysqli_connect($servername, $username, $password, $dbname); mysqli_query($conn, "SET lc_time_names = 'no_NO'"); Når du skal lagre en dato fra tekst er STR_TO_DATE kjekk INSERT INTO tabell (dato) VALUES (STR_TO_DATE(input_verdi, '%d.%m.%Y %H:%i') -- input_verdi = 11.08.2015 13:00 Som nevnt over kan du også formatere det i PHP, ta en titt på DateTime $date = new DateTime($row['dato']); $date->format('l j. F Y'); // Friday 7. August 2015 Vil anbefale å lære deg objekt orientert programmering først som sist Endret 11. august 2015 av Crowly Lenke til kommentar
HaKj Skrevet 18. august 2015 Forfatter Del Skrevet 18. august 2015 Hei og takk for hjelpen! Nå har jeg fått til å endre format på datoen, men jeg sliter med å få det på norsk. Har prøvd forskjellige ting, men ender alltid opp med englsk. Kan du si meg hvor jeg skal skrive inn dette? SET lc_time_names = 'no_NO'; En annen ting: Jeg har en kode som henter nærmeste dag fra et view i Mysql. Jeg laget dette viewet i mysql slik at det formaterer datoen slik som dette: Thursday 20. August Php - koden min er slik: $db_handle = mysql_connect($server, $user_name, $password); mysql_set_charset("utf8", $db_handle); $db_found = mysql_select_db($database, $db_handle); if ($db_found) { $SQL = "SELECT* FROM nestemotemedinfo"; $result = mysql_query($SQL); while ( $db_field = mysql_fetch_assoc($result) ) {print $db_field['dato'] . "<BR>";} mysql_close($db_handle); } else { print "Database NOT Found "; mysql_close($db_handle); } Spørsmålet er, hvordan endre denne koden slik at den viser datoen på norsk? Mvh Harald Lenke til kommentar
Crowly Skrevet 18. august 2015 Del Skrevet 18. august 2015 Ikke bruk mysql_* kommandoene, de er gamle og utdaterte. Bruk mysqli_* eller pdo. Kan du si meg hvor jeg skal skrive inn dette? SET lc_time_names = 'no_NO'; Som eksemplet mitt viser, rett etter at du kobler til databasen. Skal du ha ting på ett annet språk må du be databasen bruke noe annet, eller så må du ta ut ting på en slik måte at det kan formateres i f.eks. PHP, men da må du be PHP bruke norsk http://php.net/manual/en/function.setlocale.php setlocale ( LC_TIME , 'nb_NO' ); // alternatit nn_NO for nynorsk Legges ett sted i begynnelsen av php scriptet. Siste alternativ er å skrive en oversettelses rutine, følgende eksempel er veldig simplet og kun ment for å vise prinsippet $language = [ 'nb_NO' => [ 'monday' => 'mandag', 'tuesday' => 'tirsdag' ] ]; $weekday = 'monday'; $locale = 'nb_NO'; echo $language[$locale][$weekday]; // mandag Lenke til kommentar
HaKj Skrevet 21. august 2015 Forfatter Del Skrevet 21. august 2015 Har prøvd meg med forskjellige alternativer med setlocale, men får det ikke til. Hvis jeg skal ta den oversettelsesrutinen videre, forstår jeg det slik at jeg skal legge inn ordene jeg vil oversette i denne listen, og endre print koden min. Kan du vise meg litt nærmere hvor og hva jeg skal skrive i koden min? Lenke til kommentar
Crowly Skrevet 21. august 2015 Del Skrevet 21. august 2015 (endret) Dette fungerer hos meg: $conn = mysqli_connect($servername, $username, $password, $dbname); mysqli_query($conn, "SET lc_time_names = 'no_NO'"); $result = mysqli_query($conn, "SELECT DATE_FORMAT(now(), '%a %b %M %W') dato"); $row = mysqli_fetch_assoc($result); mysqli_free_result($result); mysqli_close($conn); echo $row['dato']; // fre aug august fredag Hvordan ser det ut hos deg hvis du kjører det i ett test skript? Edit: Gjorde litt grundigere sjekking av dato formatering i PHP. date() og DateTime::format() bryr seg ikke om setlocale(), du må bruke f.eks. strftime(). Du må også sjekke om tegnsettet er tilgjengelig i OSet, på linux gjør du dette med locale -a i terminalen, i lista skal du da se nb_NO.utf8, hvis ikke må den pakken installeres. På f.eks. ubuntu gjøres det slik sudo apt-get install language-pack-nbPHP test: setlocale ( LC_ALL , 'nb_NO.utf8' ); echo strftime("%A %e %B %Y", mktime(0, 0, 0, 12, 22, 1978)); // fredag 22 desember 1978 Endret 21. august 2015 av Crowly Lenke til kommentar
HaKj Skrevet 24. august 2015 Forfatter Del Skrevet 24. august 2015 Hei echo strftime("%A %e %B %Y", mktime(0, 0, 0, 12, 22, 1978)); // fredag 22 desember 1978 Med denne får jeg til å vise fredag 22.desember 1978 Hvordan får jeg den til å vise dataene fra mysql-tabellen min i denne koden? Harald Lenke til kommentar
Crowly Skrevet 24. august 2015 Del Skrevet 24. august 2015 Bytt ut mktime() funksjonen med ett timestamp fra databasen. Du kan f.eks. se på strtotime() $row = mysqli_fetch_assoc($result); echo strftime("%A %e %B %Y", strtotime($row['dato'])); // f.eks $row['dato'] = '24.08.2015 13:30' // alternativt hvor du har ett felt for hour, minute, day, month og year i SELECT'en (tungvint, men fungerer) $row = mysqli_fetch_assoc($result); echo strftime("%A %e %B %Y", mktime($row['hour'], $row['minute'], 0, $row['month'], $row['day'], $row['year'])); Her må du bare lage litt test kode og se hva du får til å fungere 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å