Sortieren: Aufsteigend, Absteigend, nach Spalte > User kann selbst entscheiden

Kalma

Erfahrenes Mitglied
Hey,

ich habe ein Problem mit ner Sortier-Funktion.

Hier habe ich eine von vielen bald kommenden Seiten, wo der User selbst auswählen kann, wonach sortiert werden soll:
http://dfmusik.de/?section=bands

So. Nun habe ich eine Funktion geschrieben, wo mit if überprüft werden soll, welches ordnen-kriterium aktiviert wurde:
PHP:
		function ordnen()
		{
			$sort	= $_GET['sort'];
			
		if ($sort == "")
			{
				$order = "id DESC";
			}
		elseif ($sort == "titel_desc")
			{
				$order = "titel DESC";
			}
		elseif ($sort == "titel_asc")
			{
				$order = "titel ASC";
			}
		elseif ($sort == "genre_desc")
			{
				$order = "genre ASC";
			}
		elseif ($sort == "name_desc")
			{
				$order = "name ASC";
			}
		elseif ($sort == "name_asc")
			{
				$order = "name ASC";
			}
		elseif ($sort == "genre_asc")
			{
				$order = "genre ASC";
			}
		elseif ($sort == "herkunft_desc")
			{
				$order = "herkunft ASC";
			}
		elseif ($sort == "herkunft_desc")
			{
				$order = "herkunft ASC";
			}
		elseif ($sort == "punkte_desc")
			{
				$order = "punkte ASC";
			}
		elseif ($sort == "punkte_asc")
			{
				$order = "punkte ASC";
			}
		elseif ($sort == "band_desc")
			{
				$order = "band ASC";
			}
		elseif ($sort == "band_asc")
			{
				$order = "band ASC";
			}
		elseif ($sort == "preis_desc")
			{
				$order = "preis ASC";
			}
		elseif ($sort == "preis_asc")
			{
				$order = "preis ASC";
			}
		}



Die Seite, mit der zu ordnenden Abfrage sieht so aus:
PHP:
echo ordnen();
					$abeintrag 	= $_GET['page'] * $itemsPerPage - $itemsPerPage;
					$Lesen 			= "SELECT * FROM alben ORDER BY ".$order." LIMIT ".$abeintrag.", ".$itemsPerPage.";";


Es kommt jedoch folgende Fehlermeldung:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/www/web245/html/bands.php on line 161



Wär nett, wenn ihr mir helfen könntet :(

David
 
die Funktion ordnen() hat keinen Rückgabewert, und eine Variable in einer Funktion ist nach aussen nicht sichtbar/vorhanden, ausser diese wird als referenz übergeben oder global gesetzt...

also, schreibe ans ende deiner Funktion "return $order;"
und im Script wo es vorkommt "$order = ordnen();"

dann sollte es klappen...
 
Hey,
danke dir, vergesse es immer mit den globalen Variablen und so :(


Naja, danke auf jeden fall :)

David
 
Kein Problem, hier noch ein kleiner Denkanstoss, hier noch ein Beispiel für die Funktion ordnen()

PHP:
function ordnen() {
  if (preg_match('/(titel|genre|name|herkunft|punkte|band|preis)\_(asc|desc)/',$_GET["sort"],$m)) {
    $order = $m[1] . " " . $m[2];  
  } else {
    $order = "id DESC";
  }
  return $order;
}

eine von vielen Möglichkeiten...
 
Zurück