[PHP & MYSQL] Problemen met SORT BY

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Het volgende stukje code (wat een opschoning is van mijn originele code):
PHP:
1
2
3
4
5
6
7
8
9
10
11
        $sql = mysql_query("SELECT * FROM notule ORDER BY taaknummer");
        while ($row = mysql_fetch_array($sql)) {
            
            echo "<tr><td>";
            echo $row["taaknummer"];
            echo "</td><td>";
            echo $row["naamtaak"];
            echo "</td><td>";
            echo $row["notulist"];
            echo "</td></tr>";
    }


zou (en dat werkt ook trouwens) een paar gegevens uit een tabel halen, echter zouden deze gegevens ook gesorteerd moeten worden op taaknummer, welk natuurlijk altijd een getal is. De gegevens komen er netjes uit maar hij sorteerd de resultaten niet, de gegevens die ik er als eerst ingezet heb komen als eerste, en de laatste als laatste.

De tabel ziet er als volgt uit:
code:
1
2
3
4
5
6
7
8
9
CREATE TABLE notule (
  id mediumint(10) NOT NULL auto_increment,
  notulist text NOT NULL,
  naamtaak text NOT NULL,
  docpad text NOT NULL,
  taaknummer text NOT NULL,
  PRIMARY KEY  (id),
  FULLTEXT KEY notulist (notulist)
) TYPE=MyISAM;


Waarom worden de resultaten niet gesorteerd op taaknummer? Het zou dus van taaknummer 1 tot 20 ofzo moeten gaan maar hij zet ze nog altijd op voligorde van toevoegen.

Acties:
  • 0 Henk 'm!

Verwijderd

Houd je er wel rekening mee dat die kolom van het text type is? Dus 12 komt vóór 2, etc.

En is het text type niet een klein beetje overkill voor je kolommen, vraag ik me dan af?

[ Voor 35% gewijzigd door Verwijderd op 19-10-2003 13:44 ]


Acties:
  • 0 Henk 'm!

  • J3roen
  • Registratie: Januari 2000
  • Niet online

J3roen

Intentionally left blank

Je vergeet de DESC of ASC bij je query;

SELECT * FROM notule ORDER BY taaknummer DESC
SELECT * FROM notule ORDER BY taaknummer ASC

Acties:
  • 0 Henk 'm!

  • Kippenijzer
  • Registratie: Juni 2001
  • Laatst online: 26-08 09:08

Kippenijzer

McFallafel, nu met paardevlees

Zoals cheetah idd al aangeeft, als je WEET dat het toch een getal is, waarom maak je er dan "text" van, maak er een int van en hij 1) doet wat je verwacht en 2) neemt minder geheugen in bij het opslaan ervan...

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Verwijderd schreef op 19 October 2003 @ 13:43:
Houd je er wel rekening mee dat die kolom van het text type is? Dus 12 komt vóór 2, etc.

En is het text type niet een klein beetje overkill voor je kolommen, vraag ik me dan af?
Dus als ik er varchar van maak moet het gefixed zijn, zo simpel had ik het niet gezocht nee :D.

Acties:
  • 0 Henk 'm!

Verwijderd

een int (sort long big)
een varchar zegt het zelf al, variabele characters en deze gaat geloof ik tot 255 tekens

Acties:
  • 0 Henk 'm!

  • Macros
  • Registratie: Februari 2000
  • Laatst online: 15-05 16:29

Macros

I'm watching...

Geen varchar, maar een int!
*sigh*

"Beauty is the ultimate defence against complexity." David Gelernter


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Verwijderd schreef op 19 October 2003 @ 13:46:
[...]

Dus als ik er varchar van maak moet het gefixed zijn, zo simpel had ik het niet gezocht nee :D.
Als ik er int(11) van maak is taaknummer altijd 0?

Acties:
  • 0 Henk 'm!

Verwijderd

je geeft dan aan dat er een integer met een lengte van 11 tekens opgeslagen word
als je bevoorbeeld weet dat je niet verder gaat dan 999 kun je 3 opgeven.
Dit scheelt geheugen, nou is het bij 1 record niet zo erg maar bij 1000 x 4 bytes, scheelt het al veel.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Verwijderd schreef op 19 October 2003 @ 13:54:
je geeft dan aan dat er een integer met een lengte van 11 tekens opgeslagen word
als je bevoorbeeld weet dat je niet verder gaat dan 999 kun je 3 opgeven.
Dit scheelt geheugen, nou is het bij 1 record niet zo erg maar bij 1000 x 4 bytes, scheelt het al veel.
Int gewijzigd en er werden nog wat letters bijgedaan dus mysql krijg dat niet geregeld met een int, maar nu gefixed en het werkt, thnxs!
Pagina: 1