login  Naam:   Wachtwoord: 
Registreer je!
 Forum

[opgelost] ordenen in MySQL

Offline svm - 05/11/2006 16:57 (laatste wijziging 06/11/2006 16:02)
Avatar van svmPHP ver gevorderde Beste leden,

Ik heb een rij in mijn mysql table genaamd admin, hierin staat 0, 1 of 2.
Deze waarden bepalen wat voor soort lid je bent.
Nu wil ik in de gebruikerslijst als eerste de leden met admin 1 weergeven, daarna die met 2 en daarna met 0.
Hoe kan ik dit het beste doen?

In de table die cijfers aanpassen is geen optie, omdat ik dan heel m'n site moet aanpassen.
Is hiervoor een functie voor de SELECT?

MVG,
Stefan

16 antwoorden

Gesponsorde links
Offline tswebdev - 05/11/2006 17:05 (laatste wijziging 05/11/2006 17:07)
Avatar van tswebdev PHP interesse SELECT gebruikers FROM mysql tabel ORDER BY admin
Offline svm - 05/11/2006 17:08
Avatar van svm PHP ver gevorderde Ja, maar dan krijg je geordend als: 0, 1, 2.
Mocht je er DESC bij zetten dan heb je 2, 1, 0.
Ik moet dus 1, 2, 0 hebben.
Offline tswebdev - 05/11/2006 17:11
Avatar van tswebdev PHP interesse Ik heb niet zoveel ervaring met ordenen maar
Misschien dat 3 querries uitvoeren helpt
SELECT gebruikers FROM mysql tabel WHERE admin = 1 ORDER BY admin
SELECT gebruikers FROM mysql tabel WHERE admin = 2 ORDER BY admin
SELECT gebruikers FROM mysql tabel WHERE admin = 0 ORDER BY admin
Offline svm - 05/11/2006 17:13
Avatar van svm PHP ver gevorderde En hoe wil je deze dan met de while goed zetten?
Offline tswebdev - 05/11/2006 17:19 (laatste wijziging 05/11/2006 17:20)
Avatar van tswebdev PHP interesse $res1 = mysql_query("SELECT gebruikers FROM mysql tabel WHERE admin = '1'");
$res2 = mysql_query("SELECT gebruikers FROM mysql tabel WHERE admin = '2'");
$res3 = mysql_query("SELECT gebruikers FROM mysql tabel WHERE admin = '0'");

while($gegevens1 = mysql_fetch_assoc($res1))
{
echo '1: '.$gegevens1['gebruikers'].'<br />';
while($gegevens2 = mysql_fetch_assoc($res2))
{
echo '2: '.$gegevens2['gebruikers'].'<br />';
while($gegevens3 = mysql_fetch_assoc($res3))
{
echo '3: '.$gegevens3['gebruikers'].'<br />';
}
}
}

Weet wel niet oft werkt



Offline svm - 05/11/2006 17:26
Avatar van svm PHP ver gevorderde Ja, dit werkt wel, maar ik heb in de while een lap code hangen, en dan zou ik deze telkens opnieuw uit moeten voeren.
Dit doe ik liever niet.
Offline tswebdev - 05/11/2006 17:27
Avatar van tswebdev PHP interesse Dus liefst alles met 1 while functie
Offline svm - 05/11/2006 17:30
Avatar van svm PHP ver gevorderde ja.
En dan is het dus denk ik de bedoeling dat er een functie is in de SELECT.
Net zoals ORDER BY en GROUP BY.
Offline tswebdev - 05/11/2006 17:35 (laatste wijziging 05/11/2006 17:36)
Avatar van tswebdev PHP interesse SELECT gebruiker FROM mysql tabel WHERE admin LIKE '1' OR '2' OR '0'
Laatste poging
Offline svm - 05/11/2006 17:36 (laatste wijziging 05/11/2006 17:37)
Avatar van svm PHP ver gevorderde Eens kijken...

Edit:
Nee, werkt niet, hij sorteert niet.
Offline Gerard - 05/11/2006 17:38
Avatar van Gerard Ouwe rakker Volgens mij kan dat gewoon niet. Misschien de volgende keer je database layout iets beter in elkaar moeten steken? 
Offline tswebdev - 05/11/2006 17:40
Avatar van tswebdev PHP interesse Dat kan natuurlijk ook :d
Offline svm - 06/11/2006 07:52
Avatar van svm PHP ver gevorderde @ Proximus
Tsja, toen der tijd werkte ik , zoals je misschien wel weet, zonder MySQL.
Dus mijn ledensysteem was op Flatfiles gemaakt.
Maar om te laten zien waarom ik dit zo wil:
http://217.170.21.133/~svm/?pagina=gebruikers

Maar goed, als iemand nog een oplossing heeft: graag.
Ik ga nu naar school, en pas hem anders dadelijk wel anders aan (dubbele while ofzo).
Offline Chupskie - 06/11/2006 10:18
Avatar van Chupskie MySQL beginner ik denk dat dat niet gaat lukke met sorteren via mysql..
wat je wel kunt doen is gewoon de indeling goed veranderen
1. admin
2. moderator
3. lid (en van die 0 maak je een 3)
ik denk dat je dan zo klaar bent (ivm niet zo super veel leden)

Dit lijkt me iig het verstandigst, en het is zo geregeld.
daarna kun je gewoon SELECT'en en dan DESC of ASC doen.

Makkelijk zat, succes!

-Chupskie
Offline Thomas - 06/11/2006 12:30 (laatste wijziging 06/11/2006 12:37)
Avatar van Thomas Moderator 2 mogelijkheden:

1. sorteer je resultaten in PHP
2. voer 3 queries uit

Ook zou je een koppeltabel kunnen aanleggen waar je een volgorde-van-sorteren in aangeeft (mogelijkheid 3), maar dat is een beetje suf.
En misschien zou je wel iets met aliassen kunnen doen, waarop je vervolgens sorteert (mogelijkheid 4). Maar ook dat is wss omslachtig, maar ik zal het eens proberen voor de gein - volgens mij heb ik in het verleden ook zo'n soort costructie voor iemand gefabriekt op dit forum.

EDIT: Het kan zo:

  1. SELECT <...>, IF(<kolom> = 0, 3, IF(<kolom> = 1, 1, 2)) AS volgorde
  2. FROM <tabel>
  3. ORDER BY volgorde


waarbij:
<...> wat voor informatie je verder wilt hebben uit <tabel>
<kolom> de kolom met het admin-level of wat het ook is
<tabel> de tabel waar je de gegevens uit wilt halen
Offline svm - 06/11/2006 15:50 (laatste wijziging 06/11/2006 15:57)
Avatar van svm PHP ver gevorderde Bedankt.

@FangorN:
ik snap je code niet echt, maar ik verdiep me er wel even in  .

@Chupskie:
Dat zou ik ook kunnen overwegen, ja.
Ik moet dan wel ook andere dingen aanpassen, maar het zal wel lukken.

Nu hebt ik wel redelijk veel keus .


Edit:
FangorN, ik snap je code niet, maar hij werkt wel!

Bedankt allemaal voor jullie hulp.
Het topic mag gasloten worden!
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2025 Sitemasters.be - Regels - Laadtijd: 0.215s