|
Verfasst am: 09. 10. 2007 [09:25]
|
|
Commodore
Themenersteller
Dabei seit: 04.07.2003
Beiträge: 185
|
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!
|
|
Verfasst am: 09. 10. 2007 [10:21]
|
|
fuzz
Dabei seit: 10.04.2006
Beiträge: 178
|
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"<img src="typo3conf/ext/mm_forum//res/smilies/icon_wink.gif" alt="icon_wink.gif" />,
array("field" => "colB", "order" => "DESC"<img src="typo3conf/ext/mm_forum//res/smilies/icon_wink.gif" alt="icon_wink.gif" />
);
// 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
|
|
Verfasst am: 09. 10. 2007 [10:32]
|
|
Commodore
Themenersteller
Dabei seit: 04.07.2003
Beiträge: 185
|
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.
|