webForumDet fria alternativet

Sortera

16 svar · 400 visningar · startad av Jesper2

Jesper2Medlem sedan dec. 200475 inlägg
#1

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
#2

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
#3

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

SteadyMedlem sedan dec. 2004225 inlägg
#4
if($order == "nick"){
  $sql = "SELECT * FROM member ORDER BY nick";
}
else{
  $sql = "SELECT * FROM member ORDER BY '$order'";
}
Jesper2Medlem sedan dec. 200475 inlägg
#5

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

@ndersMedlem sedan juni 200032 969 inlägg
#6

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
#7

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
#8

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
#9

"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
#10

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
#11

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
#12

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
#13

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

  1. Om felet kvarstår, vad har du för typ i tabellen på nick-kolumnen?
@ndersMedlem sedan juni 200032 969 inlägg
#14

Jesper2 skrev:

Det var inga problem i den satsen.. Allt stämmer :/

Och hur såg den ut då?

UrMeMedlem sedan apr. 2001762 inlägg
#15
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
#16

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
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
#17

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

??

134 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)