Database SORT Functie..

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

SaTZzz T.

SaTZzz T.

21/06/2006 17:07:00
Quote Anchor link
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" ..
 
PHP hulp

PHP hulp

16/02/2025 13:16:50
 
Frank -

Frank -

21/06/2006 17:09:00
Quote Anchor link
Wat is er mis met: ORDER BY naam ASC ?
 
SaTZzz T.

SaTZzz T.

21/06/2006 17:10:00
Quote Anchor link
Naja, normalitair komt letter l voor de s.
Maar dat doet hij nie.. :S
 
SaTZzz T.

SaTZzz T.

21/06/2006 17:10:00
Quote Anchor link
ACS?? waar staat dat voor btw??
 
Robert Deiman

Robert Deiman

21/06/2006 17:13:00
Quote Anchor link
ASC staat voor Ascending -> oplopend, dus van laag naar hoog (a -> z)

De andere is DESC, Descending -> aflopend dus van hoog naar laag (z -> a)
 
Frank -

Frank -

21/06/2006 17:18:00
Quote Anchor link
Hoe ziet de query er uit en waarom heb je daar SORT in staan?
 
SaTZzz T.

SaTZzz T.

22/06/2006 15:09:00
Quote Anchor link
in de database staat dus een kollom "naam" en hij zou gebruikt moeten maken van de sort functie om de namen in alfabetische volgorde te zetten..

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 -

Frank -

22/06/2006 15:15:00
Quote Anchor link
Frank:
Hoe ziet de query er uit en waarom heb je daar SORT in staan?
Ik herhaal de vraag nog maar eens een keertje...
 
- SanThe -

- SanThe -

22/06/2006 15:27:00
Quote Anchor link
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 -

Frank -

22/06/2006 15:32:00
Quote Anchor link
Ik zal de oplossing hier maar plaatsen, anders wordt het waarschijnlijk nooit meer wat...
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
SELECT
  naam
FROM
  tabelnaam
ORDER BY
  naam ASC
 
- SanThe -

- SanThe -

22/06/2006 15:34:00
Quote Anchor link
@Frank: Is het zo dat SORT hoofdlettergevoelig is en ORDER BY niet?
 
Frank -

Frank -

22/06/2006 15:38:00
Quote Anchor link
SanThe:
@Frank: Is het zo dat SORT hoofdlettergevoelig is en ORDER BY niet?
Geen idee, ORDER BY is de standaard in SQL om te sorteren. Dat is wat mij betreft dus de enige juiste oplossing.

SORT heb ik nog nooit gebruikt, laat staan gemist.
 
Mark L

Mark L

22/06/2006 15:52:00
Quote Anchor link
als dat allemaal helemaal niet werkt... kan je ook nog xtra kolom maken in je DB, met daarin: klein_naam

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
 
Frank -

Frank -

22/06/2006 16:02:00
Quote Anchor link
@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.
 
Mark L

Mark L

22/06/2006 16:48:00
Quote Anchor link
tja, daar heb je natuurlijk ook weer gelijk in.......
 
SaTZzz T.

SaTZzz T.

22/06/2006 16:53:00
Quote Anchor link
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..
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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..
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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..
Gewijzigd op 01/01/1970 01:00:00 door SaTZzz T.
 
Frank -

Frank -

22/06/2006 17:14:00
Quote Anchor link
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...
 
SaTZzz T.

SaTZzz T.

22/06/2006 18:40:00
Quote Anchor link
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 ;)
 
Dutchcamel

dutchcamel

22/06/2006 18:56:00
Quote Anchor link
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.


Maar het probleem van TS is al op mysterieuze wijze opgelost ineens :)
 
Klaasjan Boven

Klaasjan Boven

22/06/2006 19:05:00
Quote Anchor link
en als een mysql hoofdletters voor kleine letters zet doe je toch gewoon:

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
 
Dutchcamel

dutchcamel

22/06/2006 19:13:00
Quote Anchor link
gmta (H)
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.