Datum sorteren d.m.v. database
ik was een script aan het maken tot dat ik een probleem tegen kwam.
hieronder staat mijn code:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
$get = mysql_query("SELECT *,DATE_FORMAT(datum, '%d-%m-%Y') AS datum FROM bericht ORDER BY datum DESC limit 0,7");
$i = "0";
while($row = mysql_fetch_array($get)) {
$i++;
${'id'.$i} = $row['id'];
${'datum'.$i} = $row['datum'];
${'titel'.$i} = $row['titel'];
${'bericht'.$i} = omzetter($row['bericht']);
${'categorie'.$i} = $row['categorie'];
${'sbcategorie'.$i} = $row['subcategorie'];
${'bron'.$i} = $row['bron'];
}
$i = "0";
while($row = mysql_fetch_array($get)) {
$i++;
${'id'.$i} = $row['id'];
${'datum'.$i} = $row['datum'];
${'titel'.$i} = $row['titel'];
${'bericht'.$i} = omzetter($row['bericht']);
${'categorie'.$i} = $row['categorie'];
${'sbcategorie'.$i} = $row['subcategorie'];
${'bron'.$i} = $row['bron'];
}
Nou is mijn probleem dat ik mijn datum niet gesorteerd zie maar door elkaar. Dit komt omdat het script op een of andere manier alleen naar de dagen kijkt en die sorteert.
$get = mysql_query("SELECT *, DATE_FORMAT(datum, '%d-%m-%Y') AS datum FROM bericht ORDER BY datum DESC limit 0,7");
zoals je ziet zet ik eerst mijn datum op de goede volgorde door DATE_FORMAT(datum, '%d-%m-%Y') deze functie te gebruiken. Ik sorteer als eerst mijn dag. Nou is het zo dat ie daar dan ook alles op sorteert.
als ik mijn sorteer gedeelte zo heb DATE_FORMAT(datum, '%m-%d-%Y') sorteert ie het op de maanden.
is er misschien een oplossing ervoor zonder dat ik nog een 2e query hoef te voeren?
Met Vriendelijke Groeten,
Peter
Gewijzigd op 01/01/1970 01:00:00 door Kumkwat Trender
en dan gaat je nog de fout in bij het uitlezen aan het onnodig aanmaken van variabelen
Dan pak je het eerder als volgt aan:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
$sql = "SELECT *
, DATE_FORMAT(datum, '%d-%m-%Y') AS nl_datum
FROM bericht
ORDER BY
datum DESC
LIMIT 0,7";
$preLoadBerichten = array();
if ($result = mysql_query($sql)) {
while ($row = mysql_fetch_assoc($result)) {
$preLoadBerichten[$row['id']] = $row;
}
}
else {
// hier fout afhandeling mysql_error() tonen bij debuggen bijvoorbeeld
}
?>
$sql = "SELECT *
, DATE_FORMAT(datum, '%d-%m-%Y') AS nl_datum
FROM bericht
ORDER BY
datum DESC
LIMIT 0,7";
$preLoadBerichten = array();
if ($result = mysql_query($sql)) {
while ($row = mysql_fetch_assoc($result)) {
$preLoadBerichten[$row['id']] = $row;
}
}
else {
// hier fout afhandeling mysql_error() tonen bij debuggen bijvoorbeeld
}
?>
note `wij predikken`:
gebruik mysql_fetch_assoc ipv _fetch_array
het gebruik van {} om variabele variabelen aan te maken is in principe uit den boze
Gewijzigd op 01/01/1970 01:00:00 door Noppes
Dit is wat je probleem oplevert: je gebruikt een alias die hetzelfde is als de kolomnaam. Als je nu sorteert op 'datum', sorteer je dus op de geformatteerde datum en dat zal niet goed gaan.
Kortom, kies een alias nooit hetzelfde als een bestaande kolomnaam. Je verliest dan de mogelijkheid om te sorteren op die kolomnaam.
Kortom, kies een alias nooit hetzelfde als een bestaande kolomnaam. Je verliest dan de mogelijkheid om te sorteren op die kolomnaam.
Maar bedankt Noppes en Blanche