---
title: "Sortera"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/119845-sortera"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "Jesper2"
published: "2005-01-11T17:41:10.000Z"
updated: "2005-01-15T15:11:55.000Z"
replies: 16
views: 421
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/119845-sortera"
---

# Sortera

## #1 — Jesper2, 2005-01-11T17:41Z

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?

```php
if($order == "nick"){
  $sql = "SELECT * FROM member ORDER BY nick asc";
}
else{
  $sql = "SELECT * FROM member ORDER BY '$order' desc";
}
```

Permalänk: https://www.webforum.nu/p/119845

## #2 — Snakes, 2005-01-11T17:56Z

Re: Sortera

Testa med detta!

```php
if($order == "nick"){
  $sql = "SELECT * FROM member ORDER BY nick desc";
}
else{
  $sql = "SELECT * FROM member ORDER BY '$order' desc";
}
```

Permalänk: https://www.webforum.nu/p/1525454

## #3 — Jesper2, 2005-01-12T09:18Z

Tyvärr, det sorterar fortfarande Ö-A :/

Permalänk: https://www.webforum.nu/p/1525708

## #4 — Steady, 2005-01-12T11:26Z

```php
if($order == "nick"){
  $sql = "SELECT * FROM member ORDER BY nick";
}
else{
  $sql = "SELECT * FROM member ORDER BY '$order'";
}
```

Permalänk: https://www.webforum.nu/p/1525769

## #5 — Jesper2, 2005-01-12T13:11Z

Nope, får den här ordningen:
Patrik
Martin
Lasse
Jesper
Dylan
Anton

Permalänk: https://www.webforum.nu/p/1525814

## #6 — @nders, 2005-01-12T13:56Z

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.)

Permalänk: https://www.webforum.nu/p/1525836

## #7 — aasah, 2005-01-12T14:28Z

Re: Re: Sortera

Ta bort apostroferna!

```php
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.

Permalänk: https://www.webforum.nu/p/1525856

## #8 — Jesper2, 2005-01-12T16:47Z

Det här är ju helt sanslöst ^^
Det ordnar fortfarande Ö-A, vad jag än gör blir fel!

```php
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..

Permalänk: https://www.webforum.nu/p/1525939

## #9 — dectgap, 2005-01-12T18:03Z

"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.

Permalänk: https://www.webforum.nu/p/1526006

## #10 — Jesper2, 2005-01-12T21:00Z

> **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"..

Permalänk: https://www.webforum.nu/p/1526120

## #11 — dectgap, 2005-01-13T00:05Z

Det var jag som läste lite för hastigt.

Pröva att lägga till

```php
echo $sql;
```

efter if-else-satsen, för att se att det verkligen är rätt SQL-sats som körs då.

Permalänk: https://www.webforum.nu/p/1526224

## #12 — Jesper2, 2005-01-13T14:01Z

> **dectgap skrev:**
>
> Det var jag som läste lite för hastigt.
> 
> Pröva att lägga till
>
>
> ```php
> 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 :/

Permalänk: https://www.webforum.nu/p/1526447

## #13 — aasah, 2005-01-13T14:13Z

Humm, pröva...

1)
Vad händer om du skriver:

```php
$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?

```php
$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

3) Om felet kvarstår, vad har du för typ i tabellen på nick-kolumnen?

Permalänk: https://www.webforum.nu/p/1526451

## #14 — @nders, 2005-01-13T14:15Z

> **Jesper2 skrev:**
>
> Det var inga problem i den satsen.. Allt stämmer :/

Och hur såg den ut då?

Permalänk: https://www.webforum.nu/p/1526452

## #15 — UrMe, 2005-01-13T14:18Z

```php
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å?

Permalänk: https://www.webforum.nu/p/1526453

## #16 — Jesper2, 2005-01-13T21:03Z

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&auml;ndarnamn</option>
    <option value="age">&Aring;lder</option>
    <option value="sex">K&ouml;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
<?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";
}
```

Permalänk: https://www.webforum.nu/p/1526683

## #17 — aasah, 2005-01-15T15:11Z

Blir det någon skillnad om du hoppar över första if-satsen i PHP-delen ovan och i stället skriver:

```php
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";
}
```

 ??

Permalänk: https://www.webforum.nu/p/1530542

---

Tråden på webben: https://www.webforum.nu/amne/php/119845-sortera
