corsa91 Skrevet 4. april 2013 Forfatter Del Skrevet 4. april 2013 Jeg tok å limte inn dette under koden: echo gettype($rad[6])."<br />"; Og fikk ut string Legger ved to bilder også Lenke til kommentar
quantum Skrevet 4. april 2013 Del Skrevet 4. april 2013 (endret) Du bytter om på å hente dato fra $rad[6] og $rad[5] ihvertfall, men det er kanskje riktig hvis du har endra skjema eller spørring ... ihvertfall er datofeltet deklarert med riktig datatype i mysql. Hvis vi antar at du hele tiden bruker riktig kolonne, så forklarer ihvertfall gettype hvorfor date-funksjonen ikke forstår input. Du kan dissekere strengen og få en date ut av det med mkdate-funksjonen, men det er ikke riktig måte å gjøre det på. Er du nødt til å bruke mysql_query &co? Det er utgått funksjonalitet som manualen anbefaler å styre unna. Endret 4. april 2013 av quantum Lenke til kommentar
corsa91 Skrevet 4. april 2013 Forfatter Del Skrevet 4. april 2013 Ops skrev feil mente $rad[5]. Har lyst til å bruke juksemåten. Er ikke nødt til å bruke mysql_query men hva kan jeg bruke istedet? Lenke til kommentar
grapz Skrevet 4. april 2013 Del Skrevet 4. april 2013 Hei, Kan du lage et lite eksempel på tabelloppsettet ditt på sqlfiddle.com ? Hvis du kjører 'SHOW CREATE TABLE tabellnavn' vil du få ut CREATE statement som du kan lime inn i venstre side på sqlfiddle. Et par rader med data hadde også vært fint. Da er det mye lettere å hjelpe. Selv ville jeg bare formatert datoene rett i SELECT kallet, slik som her, og lurer litt på hvorfor DATE_FORMAT ikke virker hos deg: http://sqlfiddle.com/#!2/3b66b/1 Lenke til kommentar
quantum Skrevet 4. april 2013 Del Skrevet 4. april 2013 Er ikke nødt til å bruke mysql_query men hva kan jeg bruke istedet? Det står noen forslag i php-manualen. Lurt å lese litt så ender du opp med kode som kan kjøre også i fremtiden. Lenke til kommentar
Crowly Skrevet 4. april 2013 Del Skrevet 4. april 2013 (endret) Du må sjekke hvordan dato er lagret, date eller varchar. Som nevnt over så er det trolig ikke lagret som date. Prøv med hvis det er varchar: Edit: Ser av bildene over at det er lagret som date, så DATE_FORMAT() skal fungere. Lar denne stå, hvis man trenger å formatere dato som er lagret som varchar SELECT DATE_FORMAT(STR_TO_DATE(column_name,'%Y-%m-%d'),'%d-%m-%Y') Alternativt er å endre formatering i php etter på med bl.a. strtotime() eller mktime() og date() echo date('d-m-Y',strtotime($rad[5])); // alternativt $xdate=explode('-',$rad[5]); echo date('d-m-Y',mktime(0,0,0,$xdate[1],$xdate[2],$xdate[0])); I eksemplet ditt lengre opp så er $rad[5] en streng og ikke en dato verdi, er derfor date('d-m-Y',$rad[5]) gir feil. Bruk echo '<pre>'; print_r($rad); echo '</pre>'; // eller echo var_dump($rad[5]); for å sjekke innhold. print_r() var_dump() De fleste databaser er konfigurert til å formatere dato til en streng verdi ved oppslag, og ikke vise selve dato verdien som er ett tall. Dette bør fungere <table border="1"> <tr><td>Fagkode</td><td>Fagnavn</td><td>Tittel</td><td>Dato</td><td>Tid</td></tr> <?php include 'include/db_connect.php'; $sql= "SELECT cid, coursename, title, DATE_FORMAT(`date`,'%d-%m-%Y') `date`, DATE_FORMAT(`time`,'%k:%i') `time` FROM deadline ORDER BY `Date`" ; $resultat=mysql_query($sql); while ($rad=mysql_fetch_assoc($resultat)) { echo '<tr><td>' . $rad['cid'] . '</td><td>' . $rad['coursename'] . '</td><td>' . $rad['title'] . '</td><td>' . $rad['date'] . '</td><td>' . $rad['time'] . '</td></tr>'; } ?> Endret 4. april 2013 av Crowly Lenke til kommentar
corsa91 Skrevet 4. april 2013 Forfatter Del Skrevet 4. april 2013 Jepp det fungerte Men jeg har en liten spørsmål til. Har sett litt på sånn kalender opplegg. der du trykker på et ikon popper det opp en kalender også når du trykker på den datoen så blir den lagt inn. Er det mulig å bruke sånt hvis jeg legger en form? Lenke til kommentar
quantum Skrevet 4. april 2013 Del Skrevet 4. april 2013 er det "normalt" at en date konverteres til string på vei opp fra databasen når man bruker php? Lenke til kommentar
quantum Skrevet 4. april 2013 Del Skrevet 4. april 2013 (endret) Men jeg har en liten spørsmål til. Har sett litt på sånn kalender opplegg. der du trykker på et ikon popper det opp en kalender også når du trykker på den datoen så blir den lagt inn. Er det mulig å bruke sånt hvis jeg legger en form? Se f.eks. http://jqueryui.com/datepicker/ eller http://webinsightlab...eb-development/ for flere forslag (ria frameworks). Dette har forøvrig ingenting med databaser å gjøre så kanskje du får bedre svar hvis du poster her: http://www.diskusjon...hp?showforum=76 Endret 4. april 2013 av quantum Lenke til kommentar
Crowly Skrevet 4. april 2013 Del Skrevet 4. april 2013 er det "normalt" at en date konverteres til string på vei opp fra databasen når man bruker php? Har mest erfaring med mysql, oracle og litt "mssql" og ymse verktøy for å gjøre oppslag mot basen, f.eks. Sql*Plus (Oracle). Hvis man ikke spesifiserer noen formatering når man tar med ett dato felt, så får det en standard formatering, så regner med at det er forhånds definert. Kan selvfølgelig ta feil. Det har i alle fall ikke noe med php å gjøre. Lenke til kommentar
quantum Skrevet 4. april 2013 Del Skrevet 4. april 2013 Det har i alle fall ikke noe med php å gjøre. Og ingen verdens ting med det jeg spurte om heller ... Spørsmålet er hvorfor det som er en date i databasen kommer ut som en string når man henter det fra mysql_arrayen i php, og ikke f.eks. en integer som er den typen date-funksjonen forventer. Lenke til kommentar
Crowly Skrevet 5. april 2013 Del Skrevet 5. april 2013 Det er faktisk det du spurte om er det "normalt" at en date konverteres til string på vei opp fra databasen når man bruker php? Hadde du skrevet er det "normalt" at en date konverteres til string på vei opp fra databasen? så er det mer generelt. Det er uansett små pirk. Fant bl.a. dette for Oracle Whenever a DATE value is displayed, Oracle will call TO_CHAR automatically with the default DATE format. Vil tro at en date kommer som en standard string og ikke integer fordi null punktet og hvordan date verdien er lagret er forskjellig, at det da blir tryggere å konvertere til og fra string på tvers av systemer. I PHP er null punktet 01.01.1970, for "ms sql" så er det 01.01.1900 (pluss en bevist feil med skudd år for kompabilitet med Lotus 1-2-3 som hadde denne feilen først, 1900 er ikke ett skudd år), tror noen mac systemer bruker 01.01.1904 som null punkt, og man teller antall sekunder fra den datoen (andre teller muligens milli sekunder eller dager). Så hvis man bruker interger fra f.eks. "ms sql" direkte i php date() så blir det veldig feil. 1 Lenke til kommentar
GeirGrusom Skrevet 5. april 2013 Del Skrevet 5. april 2013 Vil tro at en date kommer som en standard string og ikke integer fordi null punktet og hvordan date verdien er lagret er forskjellig, at det da blir tryggere å konvertere til og fra string på tvers av systemer. Dette er det opp til databaseadapteren å gjøre riktig, ikke systemet. MySQL Connector for .NET returnerer en DateTime struktur, ikke en string. Lenke til kommentar
quantum Skrevet 5. april 2013 Del Skrevet 5. april 2013 Det er faktisk det du spurte om Du må gjerne tolke spørsmålet helt fritt, men relevansen i det du skriver blir jo da litt ... skal vi si "tynn" :o) Altså - databasen leverer fra seg et resultat over en eller annen protokoll, det kan f.eks . være tdm for mssql. Hva mysql gjør vet jeg ingenting om, men den gir tydeligvis fra seg typeinformasjon nok til at .net connectoren klarer å tolke det riktig, og det samme gjelder for jdbc-driveren. Så spørsmålet er da om mangelen på dette i php er å regne som bug eller feature? Hva skjer med andre datatyper? Hva skjer om man bruker nyere adapter-rammeverk som ikke er deprecated (ref. php-manualens anbefalinger). 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å