Database SORT Functie..
Ik heb de volgende kolom genaamd " naam". Als ik deze doormidel van SORT sorteer krijg ik het volgende..
Sander
Sietske
Trynke
linda
nico
De namen met aan het begin een hoofdletter sorteerd hij apart van de namen die beginnen met een kleine letter..
Wat kan ik hier aan doen, het veld type dat ik heb gebruikt is " Varchar" ..
Wat is er mis met: ORDER BY naam ASC ?
Maar dat doet hij nie.. :S
ACS?? waar staat dat voor btw??
De andere is DESC, Descending -> aflopend dus van hoog naar laag (z -> a)
Hoe ziet de query er uit en waarom heb je daar SORT in staan?
Nu is het geval dat hij de namen met hoofdletter en namen met kleine lettervoorop apart ordert.
Anne
Bergsma
anne
bergsma
Zoals bovenstaand..
Terwijl het:
Anne
anne
Bergsma
bergsma
eigelijk moet zijn..
Gewijzigd op 01/01/1970 01:00:00 door SaTZzz T.
Frank:
Ik herhaal de vraag nog maar eens een keertje...Hoe ziet de query er uit en waarom heb je daar SORT in staan?
De verklaring is heel simpel. Er wordt gesorteerd op de ASCII waarden van de characters. Hoofdletter 'A' heeft ASCII waarde 65, 'B' 66, enz. Kleine letter 'a' heeft ASCII waarde 97 en komt dus later dan de 'B'.
@Frank: Is het zo dat SORT hoofdlettergevoelig is en ORDER BY niet?
SanThe:
Geen idee, ORDER BY is de standaard in SQL om te sorteren. Dat is wat mij betreft dus de enige juiste oplossing. @Frank: Is het zo dat SORT hoofdlettergevoelig is en ORDER BY niet?
SORT heb ik nog nooit gebruikt, laat staan gemist.
als je je query (die de database ingaat) dit er ook nog bijzet:
klein_naam = '".strtolower($naam)."'
en dan sorteren op klein_naam
en output gewoon naam... dan zul je zien dat ie t wel doet
ORDER BY is 1 van de eerste SQL-statements die er is en werkt al sinds jaar en dag uitstekend. En data dubbel opslaan, is zo'n beetje de grootste fout die je kunt maken. Het is vragen om een corrupte database.
tja, daar heb je natuurlijk ook weer gelijk in.......
Dus onderstaand een stukje van het script..
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
36
37
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
36
37
<?php session_start();
if (isset($_SESSION["naam"])){
include("includes/inc.connect_mysql.php");
//Als $_GET leeg is, variabelen vullen met standaard waarden..
if(!empty ($_GET)){
$status = $_GET["status"];
$order = $_GET["order"];
}else{
$status = "aanwezig";
$order = "naam";
}
//Voor link knop, tegengestelde waarden..
if($status == "aanwezig"){
$status_link = "afwezig";
}else{
$status_link = "aanwezig";
}
//SQL Variabele & Mysql Resultaten ophalen..
$SQL = "SELECT * FROM overzicht WHERE status LIKE '%" . $status . "%' ORDER by $order ASC";
$resultaat = mysql_query($SQL);
//Aantal rows in database tellen..
$num_rows = mysql_num_rows($resultaat);
//Zodra het aantal groter is dan 0 aantal waarden als getal tonen..
if($num_rows > 0){
$bericht = "Aantal " . $status . "en bekend: " . $num_rows . "<br>";
//Zodra het aantal 0 waarden is een fout melding tonen..
}else{
$bericht = "Reeds geen " . $status . "en bekend..";
}
?>
if (isset($_SESSION["naam"])){
include("includes/inc.connect_mysql.php");
//Als $_GET leeg is, variabelen vullen met standaard waarden..
if(!empty ($_GET)){
$status = $_GET["status"];
$order = $_GET["order"];
}else{
$status = "aanwezig";
$order = "naam";
}
//Voor link knop, tegengestelde waarden..
if($status == "aanwezig"){
$status_link = "afwezig";
}else{
$status_link = "aanwezig";
}
//SQL Variabele & Mysql Resultaten ophalen..
$SQL = "SELECT * FROM overzicht WHERE status LIKE '%" . $status . "%' ORDER by $order ASC";
$resultaat = mysql_query($SQL);
//Aantal rows in database tellen..
$num_rows = mysql_num_rows($resultaat);
//Zodra het aantal groter is dan 0 aantal waarden als getal tonen..
if($num_rows > 0){
$bericht = "Aantal " . $status . "en bekend: " . $num_rows . "<br>";
//Zodra het aantal 0 waarden is een fout melding tonen..
}else{
$bericht = "Reeds geen " . $status . "en bekend..";
}
?>
Vervolgens met while-lus op scherm getoond..
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
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
<?php
while ($rij = mysql_fetch_array($resultaat)){
echo("<tr>");
echo("<td width=\"4\"></td>");
echo("<td class=\"main_tekst\">" . $rij["naam"]);
if (isset($rij["partner"])){
echo (" <i>" . $rij["partner"] . "</i>");
}
echo("</td>
<td class=\"main_tekst\"><div align=\"center\">" . $rij["leeftijd"] . "</div></td>
<td class=\"main_tekst\"><div align=\"center\">" . $rij["toestemming"] . "</div></td>
<td class=\"main_tekst\"><div align=\"center\">" . $rij["betaald"] . "</div></td><tr>");
}
echo (' <tr>
<td class=\"main_tekst\" width=\"4\"></td>
<td class=\"main_tekst\">');
//Zodra het aantal groter is dan 0 aantal waarden als getal tonen..
if($num_rows > 0){
echo ("<b><div align=\"left\" class=\"main_tekst\"><br>" . $bericht);
//Zodra het aantal 0 waarden is een fout melding tonen..
}else{
echo ("<b><div align=\"left\" class=\"main_tekst\">" . $bericht . "</div>") ;
}
echo ('</td>
</tr>');
echo ("</table>");
?>
while ($rij = mysql_fetch_array($resultaat)){
echo("<tr>");
echo("<td width=\"4\"></td>");
echo("<td class=\"main_tekst\">" . $rij["naam"]);
if (isset($rij["partner"])){
echo (" <i>" . $rij["partner"] . "</i>");
}
echo("</td>
<td class=\"main_tekst\"><div align=\"center\">" . $rij["leeftijd"] . "</div></td>
<td class=\"main_tekst\"><div align=\"center\">" . $rij["toestemming"] . "</div></td>
<td class=\"main_tekst\"><div align=\"center\">" . $rij["betaald"] . "</div></td><tr>");
}
echo (' <tr>
<td class=\"main_tekst\" width=\"4\"></td>
<td class=\"main_tekst\">');
//Zodra het aantal groter is dan 0 aantal waarden als getal tonen..
if($num_rows > 0){
echo ("<b><div align=\"left\" class=\"main_tekst\"><br>" . $bericht);
//Zodra het aantal 0 waarden is een fout melding tonen..
}else{
echo ("<b><div align=\"left\" class=\"main_tekst\">" . $bericht . "</div>") ;
}
echo ('</td>
</tr>');
echo ("</table>");
?>
Ik dacht net, als hij nou automatische van de eerste letter een hoofdletter maakt is het ook opgelost. Ik zou alleen niet weten hoe ik dat moet doen..
Gewijzigd op 01/01/1970 01:00:00 door SaTZzz T.
Ik kan me hier echt niets bij voorstellen, nog nooit problemen mee gehad. Maar goed, voor alles is een eerste keer...
Alles werkt inmiddels :S
Erg vreemd, nu doet hij het wel goed en zonet nog nie.. Maarjah :S
Bedankt, ben weer veel teweten gekomen ;)
@Markiej:
Behalve wat Frank al zegt dat er redundantie ontstaat door een klein_naam toe te voegen en het heel lelijk is, is het ook nog eens een onhandige workaround. Als je het dan zo wil doen gebruik dan de SQL functie LOWER.
Maar het probleem van TS is al op mysterieuze wijze opgelost ineens :)
SELECT LOWER(naam) AS kleinenaam, naam , voorletter enz
FROM
joutabel
ORDER BY kleinenaam ASC
edit topic hierboven over het hoofd gezien. Nou ja nu staat de syntax er ook nog
Gewijzigd op 01/01/1970 01:00:00 door Klaasjan Boven
gmta (H)