Jesper2Medlem sedan dec. 200475 inlägg Om man väljer att sortera resultatet efter nick så sorteras det underifrån, alltså ö-a, men jag vill sortera från a-ö. Vad gör jag för fel?
if($order == "nick"){
$sql = "SELECT * FROM member ORDER BY nick asc";
}
else{
$sql = "SELECT * FROM member ORDER BY '$order' desc";
}
SnakesMedlem sedan okt. 2004392 inlägg Re: Sortera
Testa med detta!
if($order == "nick"){
$sql = "SELECT * FROM member ORDER BY nick desc";
}
else{
$sql = "SELECT * FROM member ORDER BY '$order' desc";
}
Jesper2Medlem sedan dec. 200475 inlägg Tyvärr, det sorterar fortfarande Ö-A :/
SteadyMedlem sedan dec. 2004225 inlägg if($order == "nick"){
$sql = "SELECT * FROM member ORDER BY nick";
}
else{
$sql = "SELECT * FROM member ORDER BY '$order'";
}
Jesper2Medlem sedan dec. 200475 inlägg Nope, får den här ordningen:
Patrik
Martin
Lasse
Jesper
Dylan
Anton
@ndersMedlem sedan juni 200032 969 inlägg Vad innehåller $order?
Om den inte innehåller det du tror blir SQL-frågan felaktig, och ingen sortering är egentligen angiven. (Det ska inte vara apostrofer runt fältnamn.)
aasahMedlem sedan mars 20034 471 inlägg Re: Re: Sortera
Ta bort apostroferna!
if($order == "nick"){
$sql = "SELECT * FROM member ORDER BY nick asc";
}
else{
$sql = "SELECT * FROM member ORDER BY $order desc";
}
$order måste innehålla namnet på ett fält i databasen.
Red: Missade @nders svar.
Jesper2Medlem sedan dec. 200475 inlägg Det här är ju helt sanslöst ^^
Det ordnar fortfarande Ö-A, vad jag än gör blir fel!
if($order == "nick"){
$sql = "SELECT * FROM member ORDER BY nick asc";
}
else{
$sql = "SELECT * FROM member ORDER BY $order desc";
}
Det är den nuvarande koden. Apostroferna är jätteborta, men ändå.. :/ Fan alltså.. $order innehåller nick, precis som det ska. Har testat det..
dectgapMedlem sedan sep. 20021 655 inlägg "desc" står för "descending" (nedstigande/fallande) och sorterar alltså i fallande ordning, d.v.s. Ö-A.
Ändra "desc" till "asc" så ska det sorteras i stigande ordning istället.
Jesper2Medlem sedan dec. 200475 inlägg
dectgap skrev:
"desc" står för "descending" (nedstigande/fallande) och sorterar alltså i fallande ordning, d.v.s. Ö-A.
Ändra "desc" till "asc" så ska det sorteras i stigande ordning istället.
Men det står ju redan "asc"..
dectgapMedlem sedan sep. 20021 655 inlägg Det var jag som läste lite för hastigt.
Pröva att lägga till
echo $sql;
efter if-else-satsen, för att se att det verkligen är rätt SQL-sats som körs då.
Jesper2Medlem sedan dec. 200475 inlägg
dectgap skrev:
Det var jag som läste lite för hastigt.
Pröva att lägga till
echo $sql;
efter if-else-satsen, för att se att det verkligen är rätt SQL-sats som körs då.
Det var inga problem i den satsen.. Allt stämmer :/
aasahMedlem sedan mars 20034 471 inlägg Humm, pröva...
Vad händer om du skriver:
$sql = "SELECT * FROM member ORDER BY $order";
(Så länge du inte lägger till riktningen så är det ju samma sats.)
2)Vad händer nu?
$sql = "SELECT * FROM member ORDER BY $order";
if ($order == "nick")
$sql .= " ASC"; // OBS! Mellanslaget före
else $sql .= " DESC";// OBS! Mellanslaget före
Blev det någon skillnad? :q
- Om felet kvarstår, vad har du för typ i tabellen på nick-kolumnen?
UrMeMedlem sedan apr. 2001762 inlägg if($order == "nick")
{
$sql = "SELECT * FROM member ORDER BY nick";
}
else
{
$sql = "SELECT * FROM member ORDER BY $order desc";
}
100% säker på att $order är "nick"?
Får vi se resten av koden också?
Jesper2Medlem sedan dec. 200475 inlägg Här är all kod som är nödvändig.
<form name="order_by" method="post" action="onlinelist.php?page=1">
<span class="text">Sortera efter: </span>
<select class="form" name="order_by">
<option value="nick">Användarnamn</option>
<option value="age">Ålder</option>
<option value="sex">Kön</option>
<option value="status">Status</option>
</select>
<span class="text">visa </span><input name="valt_antal" type="text" size="2" maxlength="2" class="form" value="10"><span class="text"> per sida </span>
<input type="submit" name="Submit" value="Go" class="form">
</form>
</form>
<br>
<?PHP
if($_POST["order_by"] == ""){
$order = "nick";
}
else{
$order = $_POST["order_by"];
}
if(($_POST["valt_antal"] == "") AND ($_GET["valt_antal"] == "")){
$valt_antal = "10";
}
elseif($_GET["valt_antal"] != ""){
$valt_antal = $_GET["valt_antal"];
}
else{
$valt_antal = $_POST["valt_antal"];
}
$dbms_link = mysql_connect("***","***","***") or die ("Ingen kontakt med databasen");
$db_test = mysql_select_db ("***",$dbms_link);
if($order == "nick"){
$sql = "SELECT * FROM member ORDER BY nick asc";
}
else{
$sql = "SELECT * FROM member ORDER BY $order desc";
}
aasahMedlem sedan mars 20034 471 inlägg Blir det någon skillnad om du hoppar över första if-satsen i PHP-delen ovan och i stället skriver:
if($_POST["order_by"] == "nick" || $_POST["order_by"] == ""){
$sql = "SELECT * FROM member ORDER BY nick asc";
}
else{
$sql = "SELECT * FROM member ORDER BY $order desc";
}
??