Skrevet tir. d. 26. marts 2002 kl. 09:30:49| #1
www.php.net/mktimedu kan vel bare sige order by datofelt
hvis du ik kender til time endnu kan du læse på php's hjemmeside :)
www.php.net/time
Skrevet tir. d. 26. marts 2002 kl. 09:35:08| #2
Jo... Men så vil den sige at April kommer føre November, da April starter med A!
Skrevet tir. d. 26. marts 2002 kl. 09:36:06| #3
sortering af nyheder efter dato er meget let.
Du skriver bare, ORDER by dato DESC LIMIT 0,6
dato er rækkens navn, og 0,6 er de antal der skal vises
Skrevet tir. d. 26. marts 2002 kl. 09:37:05| #4
-- bounce2002
Men vil den så ikke sige at April kommer føre November, da April starter med A?
Skrevet tir. d. 26. marts 2002 kl. 09:39:23| #5
Skrevet tir. d. 26. marts 2002 kl. 09:40:19| #6
du kan se et eksempel her:
www.brideonline.dk - hvor der bruges akkurat det samme måde...
Skrevet tir. d. 26. marts 2002 kl. 09:43:05| #7
Dvs. at hvis jeg har:
Tirsdag d. 26 Marts 2002
Mandag d. 256 Marts 2002
Til at står i en tabel ved navn dato, så vil den tage Tisdag... først? Jeg vil mene at den vil tage Mandag først, da det starter med 'M'!?
Hvilken type, skal tabelen dato være?
Skrevet tir. d. 26. marts 2002 kl. 09:48:15| #8
Skrevet tir. d. 26. marts 2002 kl. 09:48:38| #9
Nemlig, da det er den seneste nyhed der er skrevet.
MySQL bruger ikke bogstaver til dato! Der står 219312936 istedet
Skrevet tir. d. 26. marts 2002 kl. 09:49:41| #10
Hvis du vil ha' den til at vise mandag først, så sletter du bare kommandoen
ORDER by dato DESC LIMIT 0,6 - så let er det :)
Skrevet tir. d. 26. marts 2002 kl. 09:50:24| #11
Skrevet tir. d. 26. marts 2002 kl. 09:51:15| #12
dennism > læs lidt om time-formater på de links otis gav eller på
http://www.mysql.com/ (...)hvis din datatype i kolonnen er varchar eller lignende sorteres det som en tekst, dvs 11 kommer før 2, december kommer før januar, osv.
brug et "rigtigt" tidsformat og styr dit ønskede format ved udskrivning
Skrevet tir. d. 26. marts 2002 kl. 09:56:02| #13
-- fri-hash
Jeg forstår ikke helt hvad du mener... Men hvilken datatype skal jeg bruge for at kunne sortere efter dato (det skal selvfølgelig være dansk til!)?
Skrevet tir. d. 26. marts 2002 kl. 10:13:25| #14
Du skal ikke bruge dansk format i en MySql tabel. Brug typen
DATE, som f.x ser sådan ud: 20020326, og så når du
skriver ud, i f.ks. PHP laver du formatet som du vil have det.
Der er ikke andre måder - og glem venligst Microsoft puttenuttede
måde at gøre det på.
Skrevet tir. d. 26. marts 2002 kl. 10:20:20| #15
Du kan få den her gratis, fra Myqsl-dato til "dansk":
function tildansk($d) {
if (ereg( "([0-9]{4})-?([0-9]{1,2})-?([0-9]{1,2})", $d, $r)) {
$yy=$r[1]; $mm=$r[2]; $dd=$r[3]+0;
$a=getdate(mktime(0,0,0,$mm,$dd,$yy));
switch ($a["wday"]) {
case 0: $ugedag='søndag'; break;
case 1: $ugedag='mandag'; break;
case 2: $ugedag='tirsdag'; break;
case 3: $ugedag='onsdag'; break;
case 4: $ugedag='torsdag'; break;
case 5: $ugedag='fredag'; break;
case 6: $ugedag='lørdag'; break;
}
switch ($mm) {
case 1: $maaned='januar'; break;
case 2: $maaned='februar'; break;
case 3: $maaned='marts'; break;
case 4: $maaned='april'; break;
case 5: $maaned='maj'; break;
case 6: $maaned='juni'; break;
case 7: $maaned='juli'; break;
case 8: $maaned='august'; break;
case 9: $maaned='september'; break;
case 10: $maaned='oktober'; break;
case 11: $maaned='november'; break;
case 12: $maaned='december'; break;
}
return "$ugedag, d. $dd. $maaned $yy";
} else {
showerror("Ulovligt datoformat: $d");
}
}
Skrevet tir. d. 26. marts 2002 kl. 10:21:16| #16
-- erikjacobsen
Hvordan skal jeg så DATE til at indeholde fx. 20020326?
Skal jeg bruge 'dato = getdate();', og derefter sætte tabellen 'dato' = $dato ?
Og hvordan skal jeg så lave de tal (fx. 20020326) om til noget fornuftigt bagefter?
Skrevet tir. d. 26. marts 2002 kl. 10:21:38| #17
dennism: Hvis du vil have output på dansk, så laver du det bare om i din php-kode!
Skrevet tir. d. 26. marts 2002 kl. 10:22:29| #18
Hvor kommer din dato fra, Dennis ?
Skrevet tir. d. 26. marts 2002 kl. 10:24:23| #19
hehe... Ved godt jeg er lidt umulig!
Men, hvad mener du med hvor datoen kommer fra?
Skrevet tir. d. 26. marts 2002 kl. 10:26:10| #20
Skal min DATO tabel, bare se sådan her ud:
mysql_query("CREATE TABLE spillerprofiler (dato date NOT NULL);");
Skrevet tir. d. 26. marts 2002 kl. 10:26:24| #21
Bliver den tastet ind i en form, er det dags dato, er det ... tjah...
hvad ved jeg ?
Skrevet tir. d. 26. marts 2002 kl. 10:27:39| #22
Nåå... Det er dags dato....!
Skrevet tir. d. 26. marts 2002 kl. 10:30:15| #23
Så kan du
$d = date("Ymd");
mysql_query("INSERT INTO tabel (dato) values('$d')";
Skrevet tir. d. 26. marts 2002 kl. 10:31:28| #24
Skrevet tir. d. 26. marts 2002 kl. 10:35:39| #25
Når jeg så har oprettet noget, indeholder 'DATO' '2002-03-26'... Skal den også det? Eller har jeg allerede lavet en fejl?
Skrevet tir. d. 26. marts 2002 kl. 10:39:15| #26
Det ved jeg ikke - hvad har du lavet ?
Skrevet tir. d. 26. marts 2002 kl. 10:39:22| #27
Hmm... Har ikke hent forstået hvordan jeg så skal lave datoen om til: Tirsdag d. 26 Marts 2002... Hvordan gør jeg det?
Skrevet tir. d. 26. marts 2002 kl. 10:40:23| #28
Datoen skal bare stå som:
26/03 2002
Skrevet tir. d. 26. marts 2002 kl. 10:41:03| #29
Der skal altså ikke stå: '2002-03-26' ?
Skrevet tir. d. 26. marts 2002 kl. 10:41:17| #30
Det kan jeg så ikke forstå du ikke har forstået, for du har da
fået en funktion til det.
Skrevet tir. d. 26. marts 2002 kl. 10:42:40| #31
Sådan ser min tabel ud:
mysql_query("CREATE TABLE spillerprofiler (
id int(11) NOT NULL auto_increment,
dato date NOT NULL ,
hits int(11) NOT NULL default '0',
navn text NOT NULL,
fornavn text NOT NULL,
efternavn text NOT NULL,
kaelenavn text NOT NULL,
nationalitet text NOT NULL,
fodselsdato text NOT NULL,
nuvaerende_klub text NOT NULL,
klub_land text NOT NULL,
position text NOT NULL,
vaegt text NOT NULL,
hojde text NOT NULL,
userfile_name text NOT NULL,
PRIMARY KEY (id,id)
);");
Og sådan sådan indsætter jeg data:
$dato = date("Ymd");
$foresp = mysql_query("insert into spillerprofiler (dato, navn, fornavn, efternavn, kaelenavn, nationalitet, fodselsdato, nuvaerende_klub, klub_land, position, vaegt, hojde, userfile_name, hits) values ('$dato', '$navn', '$fornavn', '$efternavn', '$kaelenavn', '$nationalitet', '$fodselsdato', '$nuvaerende_klub', '$klub_land', '$position', '$vaegt', '$hojde', '$userfile_name', '$hits')");
Er der en fejl i det?
Skrevet tir. d. 26. marts 2002 kl. 10:45:21| #32
Ja, fint nok. Hvordan viser du dine data til brugeren?
Skrevet tir. d. 26. marts 2002 kl. 10:46:44| #33
Hmm... Det er det jeg ikke kan finde ud af!
Men hvis jeg gør ind i MySql og kigger så står der '2002-03-26' under DATO, hvis jeg kigger under spillerprofiler! Siger du ikke at det er en fejl?
Skrevet tir. d. 26. marts 2002 kl. 10:49:15| #34
Det er godt nok - det er enten 20020326 eller 2002-03-26 -
begge dele er fine datoer i Mysql
Skrevet tir. d. 26. marts 2002 kl. 10:51:38| #35
Oki... Men nu kommer der endnu et problem...
Hvordan laver jeg '2002-03-26' om til fx. 'Tirsdag d. 26 Marts'?
Jeg kan ikke få det kode du gav mig, til at virke!
Skrevet tir. d. 26. marts 2002 kl. 10:52:25| #36
Og forøvrigt hedder det ikke
Tirsdag d. 26 Marts 2002
men
Tirsdag d. 26. marts 2002
I hvert fald ikke månedsnavnet med stort begyndelsesbogstav.
Jeg ved godt at Word sommetider retter til Marts hvis man
skriver marts, med det er altså forkert, og en rigtig ulækker ting
at gøre af Word. Skal vi ikke boykotte det ?
Skrevet tir. d. 26. marts 2002 kl. 10:53:49| #37
Du skal bare bruge min kode. Jeg kan til gengæld ikke
bruge til noget at du bare siger, at noget ikke virker...
Skrevet tir. d. 26. marts 2002 kl. 10:56:17| #38
Oki... Du har fx. noget du kalder for '$r'! Hvad skal den indeholde?
Skrevet tir. d. 26. marts 2002 kl. 11:01:42| #39
Jeg bruger denne kode:
$result = mysql_query("select dato, hits, navn, kaelenavn, nationalitet, fodselsdato, nuvaerende_klub, klub_land, position, vaegt, hojde, userfile_name from spillerprofiler where id = '$id'");
$row = mysql_fetch_array($result);
Tilføjet d. function tildansk($row[dato]) {
if (ereg( "([0-9]{4})-?([0-9]{1,2})-?([0-9]{1,2})", $row[dato], $r)) {
$yy=$r[1]; $mm=$r[2]; $dd=$r[3]+0;
$a=getdate(mktime(0,0,0,$mm,$dd,$yy));
switch ($a["wday"]) {
case 0: $ugedag='søndag'; break;
case 1: $ugedag='mandag'; break;
case 2: $ugedag='tirsdag'; break;
case 3: $ugedag='onsdag'; break;
case 4: $ugedag='torsdag'; break;
case 5: $ugedag='fredag'; break;
case 6: $ugedag='lørdag'; break;
}
switch ($mm) {
case 1: $maaned='januar'; break;
case 2: $maaned='februar'; break;
case 3: $maaned='marts'; break;
case 4: $maaned='april'; break;
case 5: $maaned='maj'; break;
case 6: $maaned='juni'; break;
case 7: $maaned='juli'; break;
case 8: $maaned='august'; break;
case 9: $maaned='september'; break;
case 10: $maaned='oktober'; break;
case 11: $maaned='november'; break;
case 12: $maaned='december'; break;
}
return "$ugedag, d. $dd. $maaned $yy";
} else {
showerror("Ulovligt datoformat: $d");
}
}
Og jeg får en fejl i denne linie:
if (ereg( "([0-9]{4})-?([0-9]{1,2})-?([0-9]{1,2})", $row[dato], $r)) {
Skrevet tir. d. 26. marts 2002 kl. 11:02:50| #40
Og hvordan kan jeg lave sådan at den ikke tjekker om datoen er korrekt?
Skrevet tir. d. 26. marts 2002 kl. 11:10:06| #41
Du skal jo ikke lave om i min funktion, men bare skrive den som
den står, og så kalde den.
Og så må du hellere skrive die i stedet for showerror
Den der showerror er anden af mine egne funktioner.
Men bortset fra det med funktionen så blander du jp PHP og
HTML - har du ikke hørt om <? og ?> ?
Skrevet tir. d. 26. marts 2002 kl. 11:13:50| #42
jo... men dette er bare klip fra mine koder... Derfor er <? og ?> ikke kommer med!
Skrevet tir. d. 26. marts 2002 kl. 11:16:31| #43
Når jeg kører 'tildansk($row[dato]);' så printer den ikke noget!
Skrevet tir. d. 26. marts 2002 kl. 11:17:46| #44
Og min funktion ser sådan her ud:
function tildansk($d) {
if (ereg( "([0-9]{4})-?([0-9]{1,2})-?([0-9]{1,2})", $d, $r)) {
$yy=$r[1]; $mm=$r[2]; $dd=$r[3]+0;
$a=getdate(mktime(0,0,0,$mm,$dd,$yy));
switch ($a["wday"]) {
case 0: $ugedag='søndag'; break;
case 1: $ugedag='mandag'; break;
case 2: $ugedag='tirsdag'; break;
case 3: $ugedag='onsdag'; break;
case 4: $ugedag='torsdag'; break;
case 5: $ugedag='fredag'; break;
case 6: $ugedag='lørdag'; break;
}
switch ($mm) {
case 1: $maaned='januar'; break;
case 2: $maaned='februar'; break;
case 3: $maaned='marts'; break;
case 4: $maaned='april'; break;
case 5: $maaned='maj'; break;
case 6: $maaned='juni'; break;
case 7: $maaned='juli'; break;
case 8: $maaned='august'; break;
case 9: $maaned='september'; break;
case 10: $maaned='oktober'; break;
case 11: $maaned='november'; break;
case 12: $maaned='december'; break;
}
return "$ugedag, d. $dd. $maaned $yy";
} else {
die("Ulovligt datoformat: $d");
}
}
Skrevet tir. d. 26. marts 2002 kl. 11:23:34| #45
Dennis, en anden måde at lade mysql formatterer datoen. Eks:
1. Dit date felt skal være af typen: timestamp(14) (dette gemmer datoen og klokken i dette format i din tabel: 20020326111759
2. Når du insert'er en ny row behøves du ikke at opdaterer date feltet, mysql gør det automatisk.
3. Og brug denne SQL streng til at hente og formaterer din dato:
SELECT date_format(date, '%m/%d/%y %H:i:%s') AS fdate FROM tabel ORDER BY date DESC (%m/%d/%y %H:i:%s laver datestampet om til 03/26/02 11:17:59)
Nu ligger dine datoer i et virtuelt felt der hedder "fdate" og de er formatteret og sorteret.
Tjek evt. formatterings mulighederne på
http://www.mysql.com/ (...) under DATE_FORMAT
Skrevet tir. d. 26. marts 2002 kl. 11:26:19| #46
Skal det være sådan:
dato timestamp(14) NOT NULL ,
Skrevet tir. d. 26. marts 2002 kl. 11:27:07| #47
Hvad mener du med: "Når du insert'er en ny row behøves du ikke at opdaterer date feltet, mysql gør det automatisk." ??
Skrevet tir. d. 26. marts 2002 kl. 11:29:31| #48
Hvor hvordan indsætter jeg fx. 20020326111759 i DATO?
Skrevet tir. d. 26. marts 2002 kl. 11:31:28| #49
Jvf. Kommentar fra dennism 26/03-2002 11:16:31:
Har du prøvet at skrive
echo tildansk($row['dato']);
-den skal jo også have at vide, at den rent faktisk skal skrive noget ud til skærmen...
Skrevet tir. d. 26. marts 2002 kl. 11:32:16| #50
>> dato timestamp(14) NOT NUL
Ja :)
>> hvad jeg mener:
Efter at du har fået det til at virke, så skal du vel også på et tidspunkt putte data ind i din tabel... når du gør det er det kun nødvending at putte data i de andre felter i din række. Når en række bliver oprettet putter MySQL selv det aktuelle timestamp ind i date feltet (fordi det er lige præcis det det er -et timestamp)... :)
Skrevet tir. d. 26. marts 2002 kl. 11:42:43| #51
Oki... Men hvad skal jeg så gøre for at få PHP/Mysql til at lave '20020326113937' om til 'Tirsadg d. 26. Marts 2002' ?
Sådan henter jeg date:
$result = mysql_query("select
dato, hits, navn, kaelenavn, nationalitet, fodselsdato, nuvaerende_klub, klub_land, position, vaegt, hojde, userfile_name from spillerprofiler where id = '$id'");
Skrevet tir. d. 26. marts 2002 kl. 11:43:52| #52
Sådan henter jeg date: = Sådan henter jeg data:
Skrevet tir. d. 26. marts 2002 kl. 11:59:21| #53
select hits, navn, kaelenavn, nationalitet, fodselsdato, nuvaerende_klub, klub_land, position, vaegt, hojde, userfile_name, date_format(date, '%W d. %e. %M %Y') AS fdate from spillerprofiler where id = '$id' ORDER BY date")
MEN... der kommer til at stå Tuesday d. 26. March 2002 -så hvis du ønsker det på dansk så er det nok bedre med erikjacobsens function.
However, i hht til dit oprindelige spørgsmål kan du gøre flg for at formatterer til 26/03 2002
select hits, navn, kaelenavn, nationalitet, fodselsdato, nuvaerende_klub, klub_land, position, vaegt, hojde, userfile_name, date_format(date, '%e/%m %Y') AS fdate from spillerprofiler where id = '$id' ORDER BY date")
Du skal bare huske at rette dit script til. Eks. $fetch['date'] skal nu hedde $fetch['fdate'] i stedet for...
Skrevet tir. d. 26. marts 2002 kl. 12:02:06| #54
Hmm... Når jeg kører:
$result = mysql_query("select hits, navn, kaelenavn, nationalitet, fodselsdato, nuvaerende_klub, klub_land, position, vaegt, hojde, userfile_name, date_format(date, '%e/%m %Y') AS fdate from spillerprofiler where id = '$id' ORDER BY date");
$row = mysql_fetch_array($result);
Får jeg en fejl!
Ved du hvad fejlen er?
Skrevet tir. d. 26. marts 2002 kl. 12:02:26| #55
<-- dum...
Og så skal du selvfølgelig ikke, ligesom jeg gør, konsekvent skrive "date" i din kode, men istedet skrive "dato" ligesom du hele tiden har gjort...
Vist på tide at jeg napper min morgenkaffe ;)
Skrevet tir. d. 26. marts 2002 kl. 12:05:07| #56
Får stadig én fejl her:
$result = mysql_query("select hits, navn, kaelenavn, nationalitet, fodselsdato, nuvaerende_klub, klub_land, position, vaegt, hojde, userfile_name, dato_format(dato, '%e/%m %Y') AS fdato from spillerprofiler where id = '$id' ORDER BY dato");
$row = mysql_fetch_array($result);
Fejlen er:
Warning: Supplied argument is not a valid MySQL result resource in d:\htdocs/fodboldsiden/spiller_profiler.php on line 114
Skrevet tir. d. 26. marts 2002 kl. 12:08:41| #57
dato_format skal ikke rettes, dette er en funktion i MySQL som bliver ved med at hedde date_format ;)
Skrevet tir. d. 26. marts 2002 kl. 12:08:49| #58
dennism - hvad svarede du til mit forslag?
Skrevet tir. d. 26. marts 2002 kl. 12:11:08| #59
-- tipsen
Hmm... Jeg kan bedst lide 'dava'´s måde!
Skrevet tir. d. 26. marts 2002 kl. 12:12:37| #60
-- dava
Jeg ved godt at jeg har fået mere end rigelig respons i dette spm... Men kan jeg lave sådan at PHP automatisk kan regne ud hvor gammel en person er, når jeg ved fødselsdato, og dagsdato?
Skrevet tir. d. 26. marts 2002 kl. 12:16:11| #61
Ja... men prøv at lave et nyt spm på det :)
Skrevet tir. d. 26. marts 2002 kl. 12:22:37| #62
Nu må du til at bestemme dig til hvad du vil, Dennis.
Jeg synes faktisk det er utilgiveligt at du viser os kode, som du
ved ikke virker, og så klipper du <? og ?> fra ... så vidt jeg kan
læse mig til det i hvert fald.
Så hvis vi skal fortsætte, må du lige præcisere hvad du har og
hvad du vil.
Skrevet tir. d. 26. marts 2002 kl. 12:51:20| #63
-- erikjocobsen
Det har jeg heller ikke gjort... Det var først bagefter at jeg opdagede at jeg havde glemt at kopiere dem med!