sorterenfout
Simon - 17/02/2006 19:32 (laatste wijziging 17/02/2006 20:20)
PHP 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:
<form method="post" action="index.php?page=spelers.php&id=jeu">
Sorteren op:
<select name="sort">
<option value="naam">Naam</option>
<option value="leeftijd">Leeftijd</option>
<option value="natio">Nationaliteit</option>
<option value="tsi">TSI</option>
<option value="spec">Specialiteit</option>
<option value="vorm">Vorm</option>
</select>
<select name="sort_op">
<option value="ASC">Oplopend</option>
<option value="DESC">Aflopend</option>
</select>
<input name="submit" type="submit" value="Sorteren">
</form>
<?php
if(!isset($_POST['submit'])) {
$sort = "naam"; $sort_op = "ASC";
}
else {
$sort = $_POST['sort'];
$sort_op = $_POST['sort_op'];
}
$gSpeJeu2 = mysql_query("SELECT * FROM spelers_jeu ORDER BY `".$sort."` ".$sort_op."") or die(mysql_error());
while($speJeu = mysql_fetch_assoc($gSpeJeu2)) {
//alles fetchen
}
?>
<form method="post" action="index.php?page=spelers.php&id=jeu">
Sorteren op:
<select name="sort">
<option value="naam">Naam</option>
<option value="leeftijd">Leeftijd</option>
<option value="natio">Nationaliteit</option>
<option value="tsi">TSI</option>
<option value="spec">Specialiteit</option>
<option value="vorm">Vorm</option>
</select>
<select name="sort_op">
<option value="ASC">Oplopend</option>
<option value="DESC">Aflopend</option>
</select>
<input name="submit" type="submit" value="Sorteren">
</form>
<?php
if ( ! isset ( $_POST [ 'submit' ] ) ) { $sort = "naam" ; $sort_op = "ASC" ;
}
else {
$sort = $_POST [ 'sort' ] ;
$sort_op = $_POST [ 'sort_op' ] ;
}
//alles fetchen
}
?>
Iemand een idee om zo te kunnen sorteren?
12 antwoorden
Gesponsorde links
b4nkr0bz0r - 17/02/2006 19:41
PHP gevorderde
SELECT * FROM spelers_jeu ORDER BY rampzalig, waardeloos, slecht, zwak, matig, goed, uitstekend, formidabel
DESC/ASC
SELECT * FROM spelers_jeu ORDER BY rampzalig, waardeloos, slecht, zwak, matig, goed, uitstekend, formidabel
DESC/ ASC
probeer dit is..
Simon - 17/02/2006 19:58 (laatste wijziging 17/02/2006 21:47)
PHP expert
Citaat:
Unknown column 'rampzalig, waardeloos, slecht, zwak, matig, goed, uitstekend, fo' in 'order clause'
fout in de query...
IEMAND????
kokx - 17/02/2006 22:37
Onbekend
@simon: Die kolomnamen bestaan niet. En volgensmij hoort je script gewoon te werken.
Simon - 17/02/2006 22:41
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??
kokx - 17/02/2006 22:45
Onbekend
dus je hebt een kolom waar ofwel formidabel ofwel rampzalig instaat?
Simon - 17/02/2006 22:46
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...
kokx - 17/02/2006 22:53 (laatste wijziging 17/02/2006 22:55)
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:
<form method="post" action="index.php?page=spelers.php&id=jeu">
Sorteren op:
<select name="sort">
<option value="naam">Naam</option>
<option value="leeftijd">Leeftijd</option>
<option value="natio">Nationaliteit</option>
<option value="tsi">TSI</option>
<option value="spec">Specialiteit</option>
<option value="vorm">Vorm</option>
</select>
<select name="sort_op">
<option value="ASC">Oplopend</option>
<option value="DESC">Aflopend</option>
</select>
<input name="submit" type="submit" value="Sorteren">
</form>
<?php
$vorm = array("rampzalig", "waardeloos", "slecht", "zwak", "matig", "goed", "uitstekend", "formidabel");
if(!isset($_POST['submit'])) {
$sort = "naam"; $sort_op = "ASC";
}
else {
$sort = $_POST['sort'];
$sort_op = $_POST['sort_op'];
}
$gSpeJeu2 = mysql_query("SELECT * FROM spelers_jeu ORDER BY `".$sort."` ".$sort_op."") or die(mysql_error());
while($speJeu = mysql_fetch_assoc($gSpeJeu2)) {
$i = $speJeu;
echo $vorm[$i];
}
?>
<form method="post" action="index.php?page=spelers.php&id=jeu">
Sorteren op:
<select name="sort">
<option value="naam">Naam</option>
<option value="leeftijd">Leeftijd</option>
<option value="natio">Nationaliteit</option>
<option value="tsi">TSI</option>
<option value="spec">Specialiteit</option>
<option value="vorm">Vorm</option>
</select>
<select name="sort_op">
<option value="ASC">Oplopend</option>
<option value="DESC">Aflopend</option>
</select>
<input name="submit" type="submit" value="Sorteren">
</form>
<?php
$vorm = array ( "rampzalig" , "waardeloos" , "slecht" , "zwak" , "matig" , "goed" , "uitstekend" , "formidabel" ) ; if ( ! isset ( $_POST [ 'submit' ] ) ) { $sort = "naam" ; $sort_op = "ASC" ;
}
else {
$sort = $_POST [ 'sort' ] ;
$sort_op = $_POST [ 'sort_op' ] ;
}
$i = $speJeu ;
}
?>
Simon - 17/02/2006 22:56 (laatste wijziging 17/02/2006 22:57)
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?
kokx - 17/02/2006 22:56 (laatste wijziging 17/02/2006 22:58)
Onbekend
Ja, idd
Maar ik zou daarna wel het veld in tinyint veranderen want dat is meestal sneller.
kokx - 17/02/2006 23:41
Onbekend
Voor het eerste: je hebt gelijk (waarschijnlijk typfout)
voor het tweede: dat doet php automatisch
Gesponsorde links
Dit onderwerp is gesloten .