datum sorteren met europese uitlezing
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
$query="SELECT DATE_FORMAT( datum, '%d-%m-%Y') AS format_datum,wedstrijd FROM datumtest ORDER BY 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
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
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.
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
:)
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
";
?>
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>