Ik heb een klein probleempje met de SQL 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" ..
@Markiej: Wat je nu aandraagt, zijn geen oplossingen maar workarounds die vroeg of laat nog meer problemen opleveren.
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.......
?
Onbekende gebruiker
22-06-2006 16:53
Ik had al ORDER By.. (dus geen SORT, waar ik dat dan ook maar weggehaald hebt..). Ik heb nu ASC er achter geplaatst maar het probleem blijft.
Dus onderstaand een stukje van het script..
<?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..";
}
?>
Vervolgens met while-lus op scherm getoond..
<?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>");
?>
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..
Jij wilt dus zeggen dat de query 'SELECT * FROM overzicht ORDER BY naam ASC' niet het gewenste resultaat oplevert? Heb je dit al in PHPmyAdmin geprobeerd?
Ik kan me hier echt niets bij voorstellen, nog nooit problemen mee gehad. Maar goed, voor alles is een eerste keer...
?
Onbekende gebruiker
22-06-2006 18:40
Mijn exuus..
Alles werkt inmiddels :S
Erg vreemd, nu doet hij het wel goed en zonet nog nie.. Maarjah :S
Bedankt, ben weer veel teweten gekomen ;)
[offtopic]
@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.
[/offtopic]
Maar het probleem van TS is al op mysterieuze wijze opgelost ineens :)