Hallo Forum,
vor einiger Zeit habe ich eine ältere Version von tt_products so angepasst, dass es möglich war, einzelnen Produkten mehrfach Kategorien zuzuweisen und auch pro Kategorie eine Sortierung vorzunehmen. Dazu habe ich ein serialisiertes PHP-Array in einem Datenbankfeld abgelegt.
Leider hat diese Methode auch einen kleinen Hacken, denn nun muss ich zuerst immer alle Datensätze einlesen, dass "Sortierungs-Array" auswerten und nach diesem dann die Sortierung in PHP vornehmen ...
Da ich für ein ähnliches, bestehendes Projekt nun auch so eine Mehrfachsortierung benötige, suche ich nach Mitteln und Wegen, die Sortierung wieder in mySQL zurückzuverlagern!
Daher meine Frage:
Gibt es Möglichkeiten innerhalb von mySQL (4.1) in einem Feld Mehrfachwerte zu hinterlegen und diese zur Sortierung zu nutzen???
Wäre euch sehr dankbar für Antworten! 🙂
hmm... also wenn du ein array hast indem steht nach welchen spalten in welcher reihenfolge sortiert werden soll. kannste dir doch daraus den query machen oder?
// Dein Array aus der DB
$sortAr = array(
array("field" => "colA", "order" => "ASC"),
array("field" => "colB", "order" => "DESC")
);
// Der SQL Query für die Abrage
$query = "SELECT * FROM tabelle ORDER BY ";
// Anhängen der Sortierung
for ( $i = 0; $i < sizeof($sortAr); $i++ ) {
$query .= $sortAr[$i]["field"]." ".$sortAr[$i]["order"];
if ( ($i > 0) && ($i < sizeof($sortAr)-1) ) {
$query .= ", ";
}
}
// Ergebnis:
// $query = "SELECT * FROM tabelle ORDER BY colA ASC, colB DESC";
...so in etwa... passt das wie du es brauchst?
gruß fu
Hi fuzz,
leider ist es etwas anders, stell dir ein Artikel vor, der zwei Kategorien angehört:
Art. 001, Kategorie 1, Sortierung 3. Position
Art. 001, Kategorie 4, Sortierung 5. Position
Heraus kommt folgendes Array, welches im DB-Feld serialisiert abgelegt wird:
$sorting = array(1 => 3, 4 => 5);
Sprich: Der Key ist die Kategorie-Id, der Wert ist die Sortierung innerhalb des Kat.
Ein ORDER BY kann man nun ja nicht mehr anweden, also müssen alle Datensätze der gewünschten Kategorie zuerst ausgelesen, deren Sortierungs-Array unserialisiert und anhand dessen dann die eigentliche Sortierung per PHP durchführen werden.