datum sorteren met europese uitlezing
Hoi ,
ik ben er eindelijk in geslaagd mijn datums van mijn database uit te lezen in de Europese vorm , alleen probeer ik ze te sorteren op datum , helaas sorteert hij ze nu op de dag : voorbeeldje
01-12-2002 andere wedstrijd
03-05-2000
04-10-2004 ergohead
13-01-2006 testwedstrijd
15-12-2002 BK kort
de sql :
mysql_connect(localhost,$username,$password);
@mysql_select_db($database) or die( "Unable to select database");
$query="SELECT DATE_FORMAT( datum, '%d-%m-%Y') AS datum,wedstrijd FROM datumtest ORDER BY datum ";
$result=mysql_query($query);
$num=mysql_numrows($result);
mysql_close();
echo "<b><center>Database Output</center></b><br><br>";
$i=0;
while ($i < $num) {
$first=mysql_result($result,$i,"datum");
$last=mysql_result($result,$i,"wedstrijd");
echo "<b>$first</b> ";
echo "<b>$last</b><br>";
$i++;
}
Ook met ORDER BY datum ASC lukt het niet , hoe los ik dit op ??
bedankt
Erwin
ik ben er eindelijk in geslaagd mijn datums van mijn database uit te lezen in de Europese vorm , alleen probeer ik ze te sorteren op datum , helaas sorteert hij ze nu op de dag : voorbeeldje
01-12-2002 andere wedstrijd
03-05-2000
04-10-2004 ergohead
13-01-2006 testwedstrijd
15-12-2002 BK kort
de sql :
mysql_connect(localhost,$username,$password);
@mysql_select_db($database) or die( "Unable to select database");
$query="SELECT DATE_FORMAT( datum, '%d-%m-%Y') AS datum,wedstrijd FROM datumtest ORDER BY datum ";
$result=mysql_query($query);
$num=mysql_numrows($result);
mysql_close();
echo "<b><center>Database Output</center></b><br><br>";
$i=0;
while ($i < $num) {
$first=mysql_result($result,$i,"datum");
$last=mysql_result($result,$i,"wedstrijd");
echo "<b>$first</b> ";
echo "<b>$last</b><br>";
$i++;
}
Ook met ORDER BY datum ASC lukt het niet , hoe los ik dit op ??
bedankt
Erwin
Je gebruikt nu 'datum' op twee manieren, niet doen gewoon een andere naam geven.
$query="SELECT DATE_FORMAT( datum, '%d-%m-%Y') AS format_datum,wedstrijd FROM datumtest ORDER BY datum ";
$query="SELECT DATE_FORMAT( datum, '%d-%m-%Y') AS format_datum,wedstrijd FROM datumtest ORDER BY datum ";
hmm , heb er wat mee gespeeld en kreeg fouten , alles terug gezet zoals het stond en , raar maar waar , nu werkt het wel , met 2 keer datum...
vraagje , als ik dat verander in format_datum , moet ik in de database dan nog iets aanpassen ?( want dat is de naam van de kolom in mysql he )
begrijp je oplossing niet helemaal .
thnx
vraagje , als ik dat verander in format_datum , moet ik in de database dan nog iets aanpassen ?( want dat is de naam van de kolom in mysql he )
begrijp je oplossing niet helemaal .
thnx
Wat hij doet is een andere naam aan je datum geven (format_datum).
Maar hij sorteerde op de originele kolom. (datum)
Jij ging sorteren op je 'nieuwe' naam (datum), maar aangezien MySQL dat format niet kent, sorteerd hij niet correct. Daarom altijd een andere naam opgeven!
Edit
Bas, nee ik weet het, ik snap ook echt niet hoe ik er bij kom op dat moment :s
Mijn excuses SanThe!
Maar hij sorteerde op de originele kolom. (datum)
Jij ging sorteren op je 'nieuwe' naam (datum), maar aangezien MySQL dat format niet kent, sorteerd hij niet correct. Daarom altijd een andere naam opgeven!
Edit
Bas, nee ik weet het, ik snap ook echt niet hoe ik er bij kom op dat moment :s
Mijn excuses SanThe!
Gewijzigd op 01/01/1970 01:00:00 door Willem Jan Z
Offtopic:
SanThe is geen 'ze'
Is je 'datum' veld in je tabel wel DATE_TIME ?
SanThe is geen 'ze'
Is je 'datum' veld in je tabel wel DATE_TIME ?
MySQL sorteert ze nu als gewone strings in plaats van als datums. Inderdaad eerst checken of het veld in je database wel een type DATETIME is.
Of je doet het zo, (wat overigens niet zo netjes is):
:)
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
SELECT
wedstrijd
, SUBSTRING(datum, 1, 2) as day
, SUBSTRING(datum, 4, 2) as month
, SUBSTRING(datum, 7, 4) as year
, SUBSTRING(datum, 12, 2) as hour
, SUBSTRING(datum, 15, 2) as minute
FROM datumtest
ORDER BY
year DESC, month DESC, day DESC, hour DESC, minute DESC
wedstrijd
, SUBSTRING(datum, 1, 2) as day
, SUBSTRING(datum, 4, 2) as month
, SUBSTRING(datum, 7, 4) as year
, SUBSTRING(datum, 12, 2) as hour
, SUBSTRING(datum, 15, 2) as minute
FROM datumtest
ORDER BY
year DESC, month DESC, day DESC, hour DESC, minute DESC
:)
Ik vind deze (van Frank) nog steeds erg handig als je met Nederlandse datumnotatie wilt werken met puur en alleen MySQL:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<?php
$sql = "
SELECT
CASE
WHEN DAYOFWEEK(datum) = 1 THEN 'zondag'
WHEN DAYOFWEEK(datum) = 2 THEN 'maandag'
WHEN DAYOFWEEK(datum) = 3 THEN 'dinsdag'
WHEN DAYOFWEEK(datum) = 4 THEN 'woensdag'
WHEN DAYOFWEEK(datum) = 5 THEN 'donderdag'
WHEN DAYOFWEEK(datum) = 6 THEN 'vrijdag'
WHEN DAYOFWEEK(datum) = 7 THEN 'zaterdag'
END
AS dag,
CASE
WHEN MONTH(datum) = 1 THEN 'januari'
WHEN MONTH(datum) = 2 THEN 'februari'
WHEN MONTH(datum) = 3 THEN 'maart'
WHEN MONTH(datum) = 4 THEN 'april'
WHEN MONTH(datum) = 5 THEN 'mei'
WHEN MONTH(datum) = 6 THEN 'juni'
WHEN MONTH(datum) = 7 THEN 'juli'
WHEN MONTH(datum) = 8 THEN 'augustus'
WHEN MONTH(datum) = 9 THEN 'september'
WHEN MONTH(datum) = 10 THEN 'oktober'
WHEN MONTH(datum) = 11 THEN 'november'
WHEN MONTH(datum) = 12 THEN 'december'
END
AS maand,
YEAR(datum)
AS jaar
FROM
tabelnaam
ORDER BY datum ASC
";
?>
$sql = "
SELECT
CASE
WHEN DAYOFWEEK(datum) = 1 THEN 'zondag'
WHEN DAYOFWEEK(datum) = 2 THEN 'maandag'
WHEN DAYOFWEEK(datum) = 3 THEN 'dinsdag'
WHEN DAYOFWEEK(datum) = 4 THEN 'woensdag'
WHEN DAYOFWEEK(datum) = 5 THEN 'donderdag'
WHEN DAYOFWEEK(datum) = 6 THEN 'vrijdag'
WHEN DAYOFWEEK(datum) = 7 THEN 'zaterdag'
END
AS dag,
CASE
WHEN MONTH(datum) = 1 THEN 'januari'
WHEN MONTH(datum) = 2 THEN 'februari'
WHEN MONTH(datum) = 3 THEN 'maart'
WHEN MONTH(datum) = 4 THEN 'april'
WHEN MONTH(datum) = 5 THEN 'mei'
WHEN MONTH(datum) = 6 THEN 'juni'
WHEN MONTH(datum) = 7 THEN 'juli'
WHEN MONTH(datum) = 8 THEN 'augustus'
WHEN MONTH(datum) = 9 THEN 'september'
WHEN MONTH(datum) = 10 THEN 'oktober'
WHEN MONTH(datum) = 11 THEN 'november'
WHEN MONTH(datum) = 12 THEN 'december'
END
AS maand,
YEAR(datum)
AS jaar
FROM
tabelnaam
ORDER BY datum ASC
";
?>
ok , ik heb het door , wat dat betreft toch n bedankt voor jullie hulp , een stapje verder . kan ik dat combineren met wat ik hier geschreven heb ?
Want als ik hier DATE_FORMAT neem en uitlees AS... dan gaat het mis natuurlijk aangezien de rijen van mijn database hier gelezen worden ( dacht ik toch ) thnx
$lastsearch =$_POST['lastsearch'];
if ($_POST['lastsearch']) {
mysql_connect('localhost',$username,$password);
@mysql_select_db($database) or die( "Unable to select database");
$sql = mysql_query("SELECT * FROM resultaten WHERE naam LIKE '%$lastsearch%'");
while ($row = mysql_fetch_row($sql)) {
?>
<tr>
<td width="20" bgcolor="FFF85C"><font face="verdana, Helvetica, sans-serif" ></font></td>
<td bgcolor="FFF85C"><font face="Arial, Helvetica, sans-serif"></font></td>
<td bgcolor="FFF85C" width="500"><font face="Arial, Helvetica, sans-serif"></font></td>
<td bgcolor="FFF85C"><font face="Arial, Helvetica, sans-serif"></font></td>
<td bgcolor="FFF85C"><font face="Arial, Helvetica, sans-serif"></font></td>
<td bgcolor="FFF85C"><font face="Arial, Helvetica, sans-serif"></font></td>
<td bgcolor="FFF85C"><font face="Arial, Helvetica, sans-serif"></font></td>
</tr>
Want als ik hier DATE_FORMAT neem en uitlees AS... dan gaat het mis natuurlijk aangezien de rijen van mijn database hier gelezen worden ( dacht ik toch ) thnx
$lastsearch =$_POST['lastsearch'];
if ($_POST['lastsearch']) {
mysql_connect('localhost',$username,$password);
@mysql_select_db($database) or die( "Unable to select database");
$sql = mysql_query("SELECT * FROM resultaten WHERE naam LIKE '%$lastsearch%'");
while ($row = mysql_fetch_row($sql)) {
?>
<tr>
<td width="20" bgcolor="FFF85C"><font face="verdana, Helvetica, sans-serif" ></font></td>
<td bgcolor="FFF85C"><font face="Arial, Helvetica, sans-serif"></font></td>
<td bgcolor="FFF85C" width="500"><font face="Arial, Helvetica, sans-serif"></font></td>
<td bgcolor="FFF85C"><font face="Arial, Helvetica, sans-serif"></font></td>
<td bgcolor="FFF85C"><font face="Arial, Helvetica, sans-serif"></font></td>
<td bgcolor="FFF85C"><font face="Arial, Helvetica, sans-serif"></font></td>
<td bgcolor="FFF85C"><font face="Arial, Helvetica, sans-serif"></font></td>
</tr>




