$this->internal["orderBy"]="name";
eigene Extension sort FE
Hallo,
ich habe ein ähnliches Problem:
Die Ergebnisse werden bei mir jetzt nach einer Spalte 'supplier' sortiert, diese referenziert bei mir aber auf eine andere Tabelle und enthählt daher nur die 'uid' der Referenztabelle (ähnlich den Kategorien in dem CD-Listen-Tutorial).
Wie kann man die Ergebnisse der Listview (pi_list_makelist) alphabetisch nach der Spalte der Referentabelle sortieren?
Viele Grüße
Lassmiranda
Hallo Foristi,
genau vor diesem Problem stehe ich gerade.
Habe eine Tabelle <Namen>, die Element1, Element2,...ElementX enthält
In meiner Stammtabelle, wo <Namen> referenziert wird, möchte ich nach diesem Feld sortieren. Schön und gut, doch das System sortiert es nach dem internen Sortierschlüssel der Tabelle - UID??
Scheinbar nicht, denn wenn ich (z.B. Mit phPMyAdmin die Tabelle öffne, dann ist sie nicht nach UID sortiert sondern nach...ja, wonach denn??)
Hatte so schön die Elemente1-X gemäß UID in die Tabelle eingefügt, damit dann die Sortierung entsprechend in der Stammtabelle klappt.
Wo kann ich den Hebel ansetzen, dass "wirklich" nach der UID der Tabelle <Namen> sortiert werden kann?
VG Christian
Keiner eine Idee? :p
ich habe mich nicht durch deinen code gearbeitet, aber mit untenstehendem gehts nicht ("name" durch "uid" ersetzen...)?
matin schrieb$this->internal["orderBy"]="name";
Hatte mich auf lassmiranda bezogen ;-)
Nein, damit klappt es nicht.
Vielleicht hilft ein Bilck in die Datenbank. Dort sind die Elemente in der Tabelle <Namen>, wenn ich die Ansicht öffne so sortiert:
uid:
1
10
2
5
3
...
d.h. die sind nicht geordnet....folglich wird im Frontend bei Nutzung von $this->internal["orderBy"]="name" in der Tabelle <Haupttabelle> zwar nach <Namen> sortiert, aber der Output entspricht nicht der uid in der Datenbank.
Ich vermute, die Datensätze sind nach crdate sortiert...
Wie kann ich das beeinflussen, dass nach uid sortiert wird?
(hatte nämlich nachträglich die uids neu vergeben, so dass sich cerdate nicht chronologisch verhält)
Einen habe ich noch:
In der mySQL Datenbank habe ich mal die <Haupttabelle> geöffnet und nach <name> sortieren lassen:
1
10
11
12
...
19
2
3
4
...
9
Und so werden dann auch meine Datensätze natürlich angezeigt...Die eingetragenen uid werden zu Strings umgewandelt und in dem jeweiligen Feld steht dann dieser Eintrag...
na toll. Jetzt muss ich nen neuen Weg finden, wie ich das Feld sortiere (Kasper hat ja in seinme Videotutorial darauf hingewiesen, dass da mehr Hirnschmalz von Nöten ist...heul.)
Wenn also jemand einen Tipp geben kann, wie ich eine Tabelle nach einem Feld sortieren kann, das seine Werte aus einer anderen Tabelle bezieht, die wiederum nur ihre uid als String einträgt...dann wäre ich sehr glücklich 😃
Bin nun etwas weiter gekommen und habe hier 8-) im Forum einen Beitrag gefunden: #31438, der meinem Streben sehr nahe kommt.
Habe es prompt ausprobiert, und da wird was sortiert. Nur nicht so, wie ich das möchte.
Mit
$queryParts['SELECT'] = '
a.*,
b.cat';
$queryParts['FROM'] = '
tx_anweisungen_basis a,
tx_anweisungen_category b';
$queryParts['WHERE'] = sprintf('
a.category=b.uid ',
str_replace('tx_anweisungen_basis', 'a', $this->cObj->enableFields('tx_anweisungen_basis'))
);
$res = $GLOBALS['TYPO3_DB']->exec_SELECTquery(
$queryParts['SELECT'],
$queryParts['FROM'],
$queryParts['WHERE']
);
Hiermit wird nach uid sortiert, aber ich möchte gerne das gemäß alphabetischer Sortierung in der Tabelle tx_anweisungen_category sortiert wird.
Weiss jemand Rat?
Gruss
Christian
Guten Morgen,
einmal noch frage ich in die Runde, ob jemand weiss, wie ich es hinbekomme, nach dem Alphabet geordnet den Inhalt einer (Haupt)Tabelle zu sortieren, die ein Feld mit durch Komma getrennte Einträge der UID einer zweiten Tabelle enthält? (also nach diesen Inhalten soll dann sortiert werden.
Beispiel
[Hautptabelle]
Anweisung Nr. | Titel | Category | ....
[Tabelle 2: Category]
Dokumentation,uid=10 | Hygiene,uid=1 | Validierung,uid=12 |.....
Die Haupttabelle soll nach dem Feld Category sortiert werden, und zwar alphabetisch...
Gruss
Christian
verstehe ich das richtig... du willst alle einträge aus der haupttabelle mit den jeweiligen kategorien verknüpfen, um sie dann geordnet nach kategorie zurückzugeben?
ich kenn mich mit SQL nicht so gut aus, dass ich weiss, wie man einen join aus kommaseparierten fremdschlüsseln machen kann. aber warum machst du nicht einfach eine distinct abfrage auf die kategorien-tabelle und suchst dann für jede kategorie die einträge aus der haupttabelle aus, die im kategorien-feld die entsprechende UID aufweisen?
wenn du das problem nicht in einem schritt lösen kannst, so teile es in kleinere, lösbare probleme auf (divide and conquer...). 😉
Ja, das wäre eine Möglichkeit ;-). Werde das Problem mal versuchen so anzugehen:
Lade die Tabelle, ersetze die UIDs in dem Feld Category (kommaseparierten Liste) durch die Klartexte der Category...und spucke das ganze dann sortiert nach Category aus 😃