---
title: "-> alfabetisk odning...nästan :-)"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/16580-alfabetisk-odning-nästan"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "Jontto"
published: "2002-01-03T16:39:00.000Z"
updated: "2002-01-15T11:56:00.000Z"
replies: 7
views: 198
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/16580-alfabetisk-odning-nästan"
---

# -> alfabetisk odning...nästan :-)

## #1 — Jontto, 2002-01-03T16:39Z

Nedan finns min färdiga kod...nu bara ett problem som jag inte direkt vet hur jag ska lösa...

Enligt koden så radas alla ChordName bara upp efter det de har blivit skapade, men allra hels skulle jag se dem radade i ordningen C D E F G A B. Hur komma till detta? Har någon nå förslag?

```
"> 
    <FORM METHOD="post" ACTION="<?PHP echo $PHP_SELF; ?>?body=edit#action"> 
    Select chord: 
    <SELECT NAME="ChordToEdit[]"> 
    <?PHP 
     // connect to database 
     $link = mysql_connect($host, $login, $password); 
     mysql_select_db($dbase,$link); 
     $result = mysql_query("SELECT * FROM $table",$link); 
     while ($myrow = mysql_fetch_array($result)) { 
        // do something to every column 
        printf("\n\t\t<OPTION>%s</OPTION>",$myrow["ChordName"]); 
     } // end while 
     echo "\n\n"; 
    ?> 
    </SELECT> 
    <INPUT TYPE="submit" VALUE="Edit chord"> 
    <INPUT TYPE="hidden" NAME="editchord"> 
    </FORM>
```

MVH, Jontto

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

## #2 — Asterix, 2002-01-03T19:33Z

Byt ut

```
$result = mysql_query("SELECT * FROM $table",$link);
```

mot

```
$result = mysql_query("SELECT * FROM $table ORDER BY ChordName",$link);
```

Fel av mig trodde du ville ha det i alfabetisk ordning

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

## #3 — Jontto, 2002-01-05T19:59Z

Tackar å bockar...de e juh ändå lite trevligare nu. Men min högsta önskan består...finns det faktiskt ingen som kan ge lite tips om hur göra det??

\*le snällt\*

Jontto

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

## #4 — LarsG, 2002-01-05T20:08Z

```

$result = mysql_query("SELECT * FROM $table order by case chordName when 'C' then 1 when 'D' then 2 when 'E' then 3 when 'F' then 4 when 'G' then 5 when 'A' then 6 when 'B' then 7 end ",$link);
```

Jag förutsätter att chordName bara innehåller ett tecken.

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

## #5 — Jontto, 2002-01-09T17:26Z

ChordName har nog flera tecken, så din kod i sig själv hjälper inte 

Däremot löste jag redan uppgiften, kommentera gärna om den går att lösa enklare, ty min inläggsantal visar ungefär hur långt jag hunnit med PHP :e 

```
 $result = mysql_query("SELECT * FROM $table ORDER BY ChordName",$link);
 $C=0;$Db=0;$D=0;$Eb=0;$E=0;$F=0;$Gb=0;$G=0;$Ab=0;$A=0;$Bb=0;$B=0;
 while ($myrow = mysql_fetch_array($result)) {
	// do something to every column
	$check = $myrow["ChordName"];
	$letters = substr($check,0,2);
	if($letters == 'Db') {$chord_array_Db[$Db] = $check;$Db++;}
	else if($letters == 'Eb') {$chord_array_Eb[$Eb] = $check;$Eb++;}
	else if($letters == 'Gb') {$chord_array_Gb[$Gb] = $check;$Gb++;}
	else if($letters == 'Ab') {$chord_array_Ab[$Ab] = $check;$Ab++;}
	else if($letters == 'Bb') {$chord_array_Bb[$Bb] = $check;$Bb++;}
	else {
		$letters = substr($check,0,1);
		if($letters == 'C') {$chord_array_C[$C] = $check;$C++;}
		else if($letters == 'D') {$chord_array_D[$D] = $check;$D++;}
		else if($letters == 'E') {$chord_array_E[$E] = $check;$E++;}
		else if($letters == 'F') {$chord_array_F[$F] = $check;$F++;}
		else if($letters == 'G') {$chord_array_G[$G] = $check;$G++;}
		else if($letters == 'A') {$chord_array_A[$A] = $check;$A++;}
		else if($letters == 'B') {$chord_array_B[$B] = $check;$B++;}
	} // end 1st if-else
 } // end while
	foreach($chord_array_C as $key) {echo "<OPTION>$key\n";}
	foreach($chord_array_Db as $key) {echo "<OPTION>$key\n";}
	foreach($chord_array_D as $key) {echo "<OPTION>$key\n";}
	foreach($chord_array_Eb as $key) {echo "<OPTION>$key\n";}
	foreach($chord_array_E as $key) {echo "<OPTION>$key\n";}
	foreach($chord_array_F as $key) {echo "<OPTION>$key\n";}
	foreach($chord_array_Gb as $key) {echo "<OPTION>$key\n";}
	foreach($chord_array_G as $key) {echo "<OPTION>$key\n";}
	foreach($chord_array_Ab as $key) {echo "<OPTION>$key\n";}
	foreach($chord_array_A as $key) {echo "<OPTION>$key\n";}
	foreach($chord_array_Bb as $key) {echo "<OPTION>$key\n";}
	foreach($chord_array_B as $key) {echo "<OPTION>$key\n";}
```

Med vänliga onsdagshälsningar, Jontto

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

## #6 — LarsG, 2002-01-09T17:33Z

Ok, men det går att enbart sortera direkt på första bokstaven i select-satsen.

```
$result = mysql_query("SELECT * FROM $table order by case substring(chordName from 1 for 1) when 'C' then 1 when 'D' then 2 when 'E' then 3 when 'F' then 4 when 'G' then 5 when 'A' then 6 when 'B' then 7 end ",$link);
```

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

## #7 — Jontto, 2002-01-15T11:28Z

ahaa...finns det ett enkelt sätt att lite avancicera? Ett sätt att få dem i ordningen C Db D Eb E F Gb G Ab A Bb B ?
Fixar det nog med php, men får jag det på nåt sätt me en query oxå?

Tack, Jontto

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

## #8 — LarsG, 2002-01-15T11:56Z

```
$result = mysql_query("SELECT * FROM $table order by case " .
"when substring(chordName from 1 for 2) = 'Db' then 2 " .
"when substring(chordName from 1 for 2) = 'Eb' then 4 " .
"when substring(chordName from 1 for 2) = 'Gb' then 7 " .
"when substring(chordName from 1 for 2) = 'Ab' then 9 " .
"when substring(chordName from 1 for 2) = 'Bb' then 11 " .
"when substring(chordName from 1 for 1) = 'C' then 1 " .
"when substring(chordName from 1 for 1) = 'D' then 3 " .
"when substring(chordName from 1 for 1) = 'E' then 5 " .
"when substring(chordName from 1 for 1) = 'F' then 6 " .
"when substring(chordName from 1 for 1) = 'G' then 8 " .
"when substring(chordName from 1 for 1) = 'A' then 10 " .
"when substring(chordName from 1 for 1) = 'B' then 12 end"
,$link);
```

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

---

Tråden på webben: https://www.webforum.nu/amne/php/16580-alfabetisk-odning-nästan
