login  Naam:   Wachtwoord: 
Registreer je!
 Forum

sorterenfout

Offline Simon - 17/02/2006 19:32 (laatste wijziging 17/02/2006 20:20)
Avatar van SimonPHP expert Hey

het gaat eigenlijk niet echt om een fout, maar eerder iets logisch, wanneer ik rangschik volgens Vorm doet hij dat alfabetisch, want zo staan ze in de db; maar eigenlijk is de volgorde: rampzalig, waardeloos, slecht, zwak, matig, goed, uitstekend, formidabel

Wanneer ik dus ASC of DESC sorteer doet hij dat volgens het alfabet, maar ik wil het zoals hierboven vermeld, rampzalig -> formidabel of omgekeerd

Weet iemand hoe ik dat op een goeie manier kan oplossen

QUERY + FORM:
  1. <form method="post" action="index.php?page=spelers.php&id=jeu">
  2. Sorteren op:
  3. <select name="sort">
  4. <option value="naam">Naam</option>
  5. <option value="leeftijd">Leeftijd</option>
  6. <option value="natio">Nationaliteit</option>
  7. <option value="tsi">TSI</option>
  8. <option value="spec">Specialiteit</option>
  9. <option value="vorm">Vorm</option>
  10. </select>
  11. &nbsp;&nbsp;
  12. <select name="sort_op">
  13. <option value="ASC">Oplopend</option>
  14. <option value="DESC">Aflopend</option>
  15. </select>
  16. &nbsp;&nbsp;
  17. <input name="submit" type="submit" value="Sorteren">
  18. </form>
  19. <?php
  20. if(!isset($_POST['submit'])) {
  21. $sort = "naam"; $sort_op = "ASC";
  22. }
  23. else {
  24. $sort = $_POST['sort'];
  25. $sort_op = $_POST['sort_op'];
  26. }
  27.  
  28. $gSpeJeu2 = mysql_query("SELECT * FROM spelers_jeu ORDER BY `".$sort."` ".$sort_op."") or die(mysql_error());
  29. while($speJeu = mysql_fetch_assoc($gSpeJeu2)) {
  30. //alles fetchen
  31. }
  32. ?>


Iemand een idee om zo te kunnen sorteren?

12 antwoorden

Gesponsorde links
Offline b4nkr0bz0r - 17/02/2006 19:41
Avatar van b4nkr0bz0r PHP gevorderde
  1. SELECT * FROM spelers_jeu ORDER BY rampzalig, waardeloos, slecht, zwak, matig, goed, uitstekend, formidabel
  2. DESC/ASC


probeer dit is..
Offline Simon - 17/02/2006 19:58 (laatste wijziging 17/02/2006 21:47)
Avatar van Simon PHP expert
Citaat:
Unknown column 'rampzalig, waardeloos, slecht, zwak, matig, goed, uitstekend, fo' in 'order clause'


fout in de query...


IEMAND????
Offline kokx - 17/02/2006 22:37
Avatar van kokx Onbekend @simon: Die kolomnamen bestaan niet. En volgensmij hoort je script gewoon te werken.
Offline Simon - 17/02/2006 22:41
Avatar van Simon PHP expert Natuurlijk werkt het, maar het sorteert alfabetisch...

En dat wil ik niet, ik wil dat hij volgens 'goedheid' sorteert, er zijn volgende mogelijkheden:
Citaat:
rampzalig, waardeloos, slecht, zwak, matig, goed, uitstekend, formidabel

zoals je ziet zijn deze in volgorde van 'goedheid', maar dat is niet hetzelfde als alfabetisch

Citaat:
Nu: de spelers staan alfabetisch

Citaat:
ik wil: de spelers worden gesorteerd van rampzalig formidabel bij ASC en formidabel rampzalig bij DESC



Begrijp je??
Offline kokx - 17/02/2006 22:45
Avatar van kokx Onbekend dus je hebt een kolom waar ofwel formidabel ofwel rampzalig instaat?
Offline Simon - 17/02/2006 22:46
Avatar van Simon PHP expert ja, die kolom heet vorm, en die schommelt tussen:
rampzalig, waardeloos, slecht, zwak, matig, goed, uitstekend, formidabel

ik wil ze in die volgorde rangschikken...
Offline kokx - 17/02/2006 22:53 (laatste wijziging 17/02/2006 22:55)
Avatar van kokx Onbekend verander het veld even in tinyint geef ze allemaal een nummer (0,1,2,3,4,5,6,7)
je zet het in een array en doet het dan zo:
  1. <form method="post" action="index.php?page=spelers.php&id=jeu">
  2. Sorteren op:
  3. <select name="sort">
  4. <option value="naam">Naam</option>
  5. <option value="leeftijd">Leeftijd</option>
  6. <option value="natio">Nationaliteit</option>
  7. <option value="tsi">TSI</option>
  8. <option value="spec">Specialiteit</option>
  9. <option value="vorm">Vorm</option>
  10. </select>
  11. &nbsp;&nbsp;
  12. <select name="sort_op">
  13. <option value="ASC">Oplopend</option>
  14. <option value="DESC">Aflopend</option>
  15. </select>
  16. &nbsp;&nbsp;
  17. <input name="submit" type="submit" value="Sorteren">
  18. </form>
  19. <?php
  20. $vorm = array("rampzalig", "waardeloos", "slecht", "zwak", "matig", "goed", "uitstekend", "formidabel");
  21. if(!isset($_POST['submit'])) {
  22. $sort = "naam"; $sort_op = "ASC";
  23. }
  24. else {
  25. $sort = $_POST['sort'];
  26. $sort_op = $_POST['sort_op'];
  27. }
  28.  
  29. $gSpeJeu2 = mysql_query("SELECT * FROM spelers_jeu ORDER BY `".$sort."` ".$sort_op."") or die(mysql_error());
  30. while($speJeu = mysql_fetch_assoc($gSpeJeu2)) {
  31. $i = $speJeu;
  32. echo $vorm[$i];
  33. }
  34. ?>

Offline Simon - 17/02/2006 22:56 (laatste wijziging 17/02/2006 22:57)
Avatar van Simon PHP expert kan ik heel snel alle waarden met rampzalig in 0 veranderen?

mysql_query("UPDATE spelers_jeu SET vorm = 0 WHERE vorm = 'rampzalig'")
en dan voor alle andere dit herhalen?
Offline kokx - 17/02/2006 22:56 (laatste wijziging 17/02/2006 22:58)
Avatar van kokx Onbekend Ja, idd
Maar ik zou daarna wel het veld in tinyint veranderen want dat is meestal sneller.
Offline Simon - 17/02/2006 22:57 (laatste wijziging 17/02/2006 23:00)
Avatar van Simon PHP expert ok, ik dacht al om het in cijfertjes te veranderen, vond het teveel werk 


maar dit begrijp ik niet zo goed:
  1. while($speJeu = mysql_fetch_assoc($gSpeJeu2)) {
  2. $i = $speJeu;
  3. echo $vorm[$i];
  4. }

moet die $i = $speJeu; niet $i = $speJeu['vorm']; worden
ik begrijp het nie 
en die array, moet da nie
array(0 => "rampzalig, 1 => "waardeloos");
zijn?
Offline kokx - 17/02/2006 23:41
Avatar van kokx Onbekend Voor het eerste: je hebt gelijk (waarschijnlijk typfout)

voor het tweede: dat doet php automatisch
Offline Simon - 18/02/2006 10:17
Avatar van Simon PHP expert Echt bedankt kokx, het werkt perfect
:D :D 
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2025 Sitemasters.be - Regels - Laadtijd: 0.211s