Index > Contao-Core > Modul Auflistung: Zwei Auflistungen auf einer Seite nicht möglich
Hallo,
ich habe mit dem Modul Auflistung eine Liste für das Frontend erstellt. Aus der Tabelle tl_member werden dabei die Mitglieder mit firstname, lastname und city korrekt angezeigt. Wenn ich dann z.B. nach city sortieren will (indem ich city in der Überschrift über der Liste anklicke) erhalte ich folgende Fehlermeldung:
Was mehr als erstaunglich ist, ist das eigenartige SELECT in der Fehlermeldung. Es findet ein Zugriff auf die Tabelle tl_calender_events statt auf tl_member statt. Das kann natürlich nicht funktionieren, ist mir aber äußerst schleierhaft, wie das passieren kann.
Ich habe TL 2.6.1, das Problem bestand aber auch bereits bei TL 2.6.?
Übrigens: ich möchte nicht verheimlichen, dass ich beim Testen in demo.typolight.org kein Problem mit der Sortierung der Liste habe.
Wie kann ich die Sortierung hinbekommen?
Gruß
Janis
ich habe mit dem Modul Auflistung eine Liste für das Frontend erstellt. Aus der Tabelle tl_member werden dabei die Mitglieder mit firstname, lastname und city korrekt angezeigt. Wenn ich dann z.B. nach city sortieren will (indem ich city in der Überschrift über der Liste anklicke) erhalte ich folgende Fehlermeldung:
Code:
Fatal error: Uncaught exception Exception with message Query error: Unknown column 'lastname' in 'order clause' ([b]SELECT id,alias,startDate,title FROM tl_calendar_events WHERE published=1 AND pid=1 AND startDate >= UNIX_TIMESTAMP(DATE(NOW())) ORDER BY lastname asc LIMIT 0,3[/b]) thrown in /homepages/30/d20658598/htdocs/xyz.de/system/libraries/Database.php on line 502 #0 /homepages/30/d20658598/htdocs/xyz.de/system/modules/listing/ModuleListing.php(164): Database_Statement->execute('') #1 /homepages/30/d20658598/htdocs/xyz.de/system/modules/frontend/Module.php(121): ModuleListing->compile() #2 /homepages/30/d20658598/htdocs/xyz.de/system/modules/listing/ModuleListing.php(74): Module->generate() #3 /homepages/30/d20658598/htdocs/xyz.de/system/libraries/Controller.php(219): ModuleListing->generate() #4 /homepages/30/d20658598/htdocs/xyz.de/system/modules/frontend/PageRegular.php(68): Controller->getFrontendModule('66', 'left') #5 /homepages/30/d20658598/htdocs/xyz.de/index.php(187): PageRegular->generate(Object(DB_Mysql_Result)) #6 /homepages/30/d20658598/htdocs/xyz.de/index.php(268): Index->run() #7 {main}
Was mehr als erstaunglich ist, ist das eigenartige SELECT in der Fehlermeldung. Es findet ein Zugriff auf die Tabelle tl_calender_events statt auf tl_member statt. Das kann natürlich nicht funktionieren, ist mir aber äußerst schleierhaft, wie das passieren kann.
Ich habe TL 2.6.1, das Problem bestand aber auch bereits bei TL 2.6.?
Übrigens: ich möchte nicht verheimlichen, dass ich beim Testen in demo.typolight.org kein Problem mit der Sortierung der Liste habe.
Wie kann ich die Sortierung hinbekommen?
Gruß
Janis
Zuletzt bearbeitet von Janis, 2008-12-18 17:15
2008-09-24 23:00
Ich habe noch einmal im Forum gewühlt, finde aber nicht einmal einen Ansatz zur Lösung :-( Auch im TL-Buch nichts zu finden.
Wo könnte ich mal weiter forschen?
Gruß Janis
Wo könnte ich mal weiter forschen?
Gruß Janis
2008-09-25 16:49
Hallo Janis,
hast du mal probiert das Problem mit einer frischen Installation zu reproduzieren?
Und hast du ein Update vo einer bestehenden Version durchgeführt?
hast du mal probiert das Problem mit einer frischen Installation zu reproduzieren?
Und hast du ein Update vo einer bestehenden Version durchgeführt?
Zuletzt bearbeitet von schlauchbeutelmaschine, 2008-10-16 16:39
2008-10-16 16:38
Vor zu viel Spielerei/frische Installation scheue ich mich - nachher funktionieren andere Dinge nicht, die bisher keine Probleme machten und man steckt noch mehr Zeit hinein. Ich habe mich damit abgefunden, dass es nicht funktioniert.
Gruß
Janis
Gruß
Janis
Zuletzt bearbeitet von Janis, 2008-10-23 23:04
2008-10-23 23:03
Der Fehler lässt mich nicht los und das Sortieren in Auflistungen ist noch immer nicht möglich.
Im Anhang findet ihr einige Bilder, die das Problem dokumentieren.
1a-Modul + 2b-Modul.png: sind die Einstellungen, die ich für das Auflistemodul vorgenommen habe.
2-Liste.png: Wie man sieht findet die Ausgabe der Liste korrekt statt
3-Fehler.png: Nach dem Versuch nach Mitgliedsdatum (bt_member_since) durch Anklicken von "Mitglied seit" zu sortieren kommt diese Fehlermeldung
Wer erlöst mich aus dem Wahnsinn?
Gruß
Janis
Im Anhang findet ihr einige Bilder, die das Problem dokumentieren.
1a-Modul + 2b-Modul.png: sind die Einstellungen, die ich für das Auflistemodul vorgenommen habe.
2-Liste.png: Wie man sieht findet die Ausgabe der Liste korrekt statt
3-Fehler.png: Nach dem Versuch nach Mitgliedsdatum (bt_member_since) durch Anklicken von "Mitglied seit" zu sortieren kommt diese Fehlermeldung
Wer erlöst mich aus dem Wahnsinn?
Gruß
Janis
2008-11-10 19:15
EIN SCHRITT WEITER ;-)
Ich hatte gehofft, dass der Fehler mit dem Update auf TL 2.6.3 von selbst verschwindet.
Falsch gehofft, aber ich habe etwas entdeckt:
Ich lasse mir mit dem Modul Auflistung eine Liste von ** tl_member ** ausgeben.
Die List wird anständig angezeigt. Will ich mir aber zu einem, Eintrag die Details ansehen, erhalte ich die Fehlermeldung:
SELECT FROM tl_calendar_events WHERE id='562' LIMIT 0,1
Klar:
1. zwischen SELECT und FROM fehlen die Felder (die habe ich aber in das Listenmodul richtig eingetragen: firstname, lastname, company, city, street, phone)
2. die Daten müssen aus tl_member kommen und nicht von tl_calendar_events (und im Listenmodul steht auch tl_member, sonst würde ja die Liste auch nicht angezeigt.
Ich nutze die unveränderte list_default und info_default.
Na, wer ahnt etwas?
Gruß
Janis
Ich hatte gehofft, dass der Fehler mit dem Update auf TL 2.6.3 von selbst verschwindet.
Falsch gehofft, aber ich habe etwas entdeckt:
Ich lasse mir mit dem Modul Auflistung eine Liste von ** tl_member ** ausgeben.
Die List wird anständig angezeigt. Will ich mir aber zu einem, Eintrag die Details ansehen, erhalte ich die Fehlermeldung:
SELECT FROM tl_calendar_events WHERE id='562' LIMIT 0,1
Klar:
1. zwischen SELECT und FROM fehlen die Felder (die habe ich aber in das Listenmodul richtig eingetragen: firstname, lastname, company, city, street, phone)
2. die Daten müssen aus tl_member kommen und nicht von tl_calendar_events (und im Listenmodul steht auch tl_member, sonst würde ja die Liste auch nicht angezeigt.
Ich nutze die unveränderte list_default und info_default.
Na, wer ahnt etwas?
Gruß
Janis
2008-12-18 13:11
Hi Janis,
unter anderem weil das
keine Fehlermeldung, sondern ein SQL Statement ist, kann man nicht nicht so richtig viel ahnen. Außer vielleicht, dass mit deinem Server, deiner TL Installation oder deiner DB etwas nicht stimmt. Auch wenn dir das nicht viel weiter hilft: in einem sauber laufenden TL 2.6.3 tritt der Fehler nicht auf.
cheers
Antipitch
PS: Du solltest keine realen Serverpfade veröffentlichen (egal wie nett das betreffende Forum auch immer sein mag)!
unter anderem weil das
Zitat:
SELECT FROM tl_calendar_events WHERE id='562' LIMIT 0,1
keine Fehlermeldung, sondern ein SQL Statement ist, kann man nicht nicht so richtig viel ahnen. Außer vielleicht, dass mit deinem Server, deiner TL Installation oder deiner DB etwas nicht stimmt. Auch wenn dir das nicht viel weiter hilft: in einem sauber laufenden TL 2.6.3 tritt der Fehler nicht auf.
cheers
Antipitch
PS: Du solltest keine realen Serverpfade veröffentlichen (egal wie nett das betreffende Forum auch immer sein mag)!
2008-12-18 14:37
Ok,
hier die ganze Fehlermeldung:
Fatal error: Uncaught exception Exception with message Query error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM tl_calendar_events WHERE id='569' LIMIT 0,1' at line 1 (
SELECT FROM tl_calendar_events WHERE id='569' LIMIT 0,1
) thrown in /homepages/30/d20658598/htdocs/xyz.de/system/libraries/Database.php on line 502
#0 /homepages/30/d20658598/htdocs/xyz.de/system/modules/listing/ModuleListing.php(303): Database_Statement->execute('569')
#1 /homepages/30/d20658598/htdocs/xyz.de/system/modules/listing/ModuleListing.php(93): ModuleListing->listSingleRecord('569')
#2 /homepages/30/d20658598/htdocs/xyz.de/system/modules/frontend/Module.php(129): ModuleListing->compile()
#3 /homepages/30/d20658598/htdocs/xyz.de/system/modules/listing/ModuleListing.php(76): Module->generate()
#4 /homepages/30/d20658598/htdocs/xyz.de/system/libraries/Controller.php(231): ModuleListing->generate()
#5 /homepages/30/d20658598/htdocs/xyz.de/system/modules/frontend/PageRegular.php(68): Controller->getFrontendModule('66', 'left')
#6 /homepages/30/d20658598/htdocs/xyz.de/index.php(187): PageRegular->generate(Object(DB_Mysql_Result))
#7 /homepages/30/d20658598/htdocs/xyz.de/index.php(293): Index->run()
#8 {main}
Neu installieren?? ... ich habe eine umfangreiche fertige Homepage. Müssen auch alle Tabellen neu erstellt werden???
Wenn auf eine ganz falsche Tabelle zugegriffen wird, liegt das doch hoffentlich nicht an der Datenbank?
Kann mir jemand Hinweise geben, wo ich laut Fehlermeldung möglicherweise erfolgreich etwas ändern kann?
Gruß
Janis
hier die ganze Fehlermeldung:
Fatal error: Uncaught exception Exception with message Query error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM tl_calendar_events WHERE id='569' LIMIT 0,1' at line 1 (
SELECT FROM tl_calendar_events WHERE id='569' LIMIT 0,1
) thrown in /homepages/30/d20658598/htdocs/xyz.de/system/libraries/Database.php on line 502
#0 /homepages/30/d20658598/htdocs/xyz.de/system/modules/listing/ModuleListing.php(303): Database_Statement->execute('569')
#1 /homepages/30/d20658598/htdocs/xyz.de/system/modules/listing/ModuleListing.php(93): ModuleListing->listSingleRecord('569')
#2 /homepages/30/d20658598/htdocs/xyz.de/system/modules/frontend/Module.php(129): ModuleListing->compile()
#3 /homepages/30/d20658598/htdocs/xyz.de/system/modules/listing/ModuleListing.php(76): Module->generate()
#4 /homepages/30/d20658598/htdocs/xyz.de/system/libraries/Controller.php(231): ModuleListing->generate()
#5 /homepages/30/d20658598/htdocs/xyz.de/system/modules/frontend/PageRegular.php(68): Controller->getFrontendModule('66', 'left')
#6 /homepages/30/d20658598/htdocs/xyz.de/index.php(187): PageRegular->generate(Object(DB_Mysql_Result))
#7 /homepages/30/d20658598/htdocs/xyz.de/index.php(293): Index->run()
#8 {main}
Neu installieren?? ... ich habe eine umfangreiche fertige Homepage. Müssen auch alle Tabellen neu erstellt werden???
Wenn auf eine ganz falsche Tabelle zugegriffen wird, liegt das doch hoffentlich nicht an der Datenbank?
Kann mir jemand Hinweise geben, wo ich laut Fehlermeldung möglicherweise erfolgreich etwas ändern kann?
Gruß
Janis
Zuletzt bearbeitet von Janis, 2008-12-18 20:37
2008-12-18 20:07
Zitat:
Neu installieren?? ... ich habe eine umfangreiche fertige Homepag
Muss ja vielleicht nicht sein, aber irgendwas stimmt an deinem System nicht, würde ich denken (hab das vorhin lokal mit 2 tl_member Feldern durchgespielt, kein Problem). Was passiert denn, wenn du versuchst, Daten aus einer anderen DB Tabelle aufzulisten? Und was, wenn du das Modul "Mitgliederliste" benutzt (was dafür ja eigentlich da ist, wenn ich mich nicht täusche)?
Bemerkenswert ist allerdings vor allem, dass eine Abfrage über eine falsche Tabelle durchgeführt wird. Kann ich nix zu sagen, vielleicht Leo oder jemand anderes
Nicht den Sand in den Kopf stecken...
Antipitch
2008-12-18 21:31
Hallo Antipitch,
danke erst einmal für "Kopf nicht in Sand stecken".
Ja, Deinen Test, mir mal eine andere Tabelle auflisten zu lassen, war gut. Sie führte zu den gleichen Fehlermeldungen - und in der SQL wurde wieder auf die falsche tl_calendar_events zugegriffen statt auf die jetzt beabsichtigte tl_companies. GRRRRRR
Der Kopf ist nicht im Sand, aber er die Äuglein schauen etwas hilflos in der Weltgeschichte herum
- vielleicht hat Leo ja wirklich eine Idee - obwohl sich ja mittlerweile auch etliche andere gut mit TL auskennen.
Wie krieg ich das nur hin?
Janis
danke erst einmal für "Kopf nicht in Sand stecken".
Ja, Deinen Test, mir mal eine andere Tabelle auflisten zu lassen, war gut. Sie führte zu den gleichen Fehlermeldungen - und in der SQL wurde wieder auf die falsche tl_calendar_events zugegriffen statt auf die jetzt beabsichtigte tl_companies. GRRRRRR
Der Kopf ist nicht im Sand, aber er die Äuglein schauen etwas hilflos in der Weltgeschichte herum
- vielleicht hat Leo ja wirklich eine Idee - obwohl sich ja mittlerweile auch etliche andere gut mit TL auskennen.
Wie krieg ich das nur hin?
Janis
2008-12-19 19:54
Das grenzt doch den Fehler zumindestens schonmal ein. 
Was Du mal versuchen solltest, damit beim probieren nix schief gehen kann: Setz Dir doch lokal mal ein System auf (XAMPP) und bilde die Seite eins zu eins ab, also Dateien und DB kopieren und auf dem lokalen Testsystem einspielen.
Dann kannst Du nach belieben testen und probieren, im dümmsten Fall machst Du aber nix kaputt.
So, nochmal zurück zum Problem: Irgendwop muss doch diese Tabelle herkommen. Wo wird die denn gesetzt?
Was Du mal versuchen solltest, damit beim probieren nix schief gehen kann: Setz Dir doch lokal mal ein System auf (XAMPP) und bilde die Seite eins zu eins ab, also Dateien und DB kopieren und auf dem lokalen Testsystem einspielen.
Dann kannst Du nach belieben testen und probieren, im dümmsten Fall machst Du aber nix kaputt.
So, nochmal zurück zum Problem: Irgendwop muss doch diese Tabelle herkommen. Wo wird die denn gesetzt?
2008-12-19 20:00
Budman:
So, nochmal zurück zum Problem: Irgendwo muss doch diese Tabelle herkommen. Wo wird die denn gesetzt?
1. Im Core habe ich keine Veränderungen vorgenommen.
2. Die Tabelle ist richtig im Modul Listing eingetragen.
3. Sonst würde beim Aufruf im Frontend auch nicht die Liste angezeigt werden, siehe hier
bunnet [dot] de/profil-fehlt-noch.html
([dot] durch einen Punkt ersetzen)
4. Klickt man hinten auf (i)nfo, erscheint nicht die Detailseite sondern die oben aufgeführte Fehlermeldung mit dem sql-Befehl auf die falsche Tabelle.
5. Auch Listings mit anderen Tabellen greifen (nur) für die Detailansicht immer wieder auf tl_calendar_events (warum gerade auf diese eine?)
Ich freue mich zu merken, dass sich einige um eine Lösung Gedanken machen.
Schöne Weihnachten ... oder gibt es vorher schon eine Lösung?
Janis
2008-12-20 21:53
Kannst Du auf der Seite mal testweise das EventModul rausnehmen? Ich vermute, da dieses zuerst kommt, wird es versehentlich genutzt und um die ORDER BY aus dem falschen Formular ergänzt. Ich bin mir ziemlich sicher, dass ohne das EventModul die ganze Sache funktionieren sollte.
Wenn sich das bestätigt sollte man anhand dessen weiter gehen können.
Wenn sich das bestätigt sollte man anhand dessen weiter gehen können.
2008-12-20 23:38
Budman:
Kannst Du auf der Seite mal testweise das EventModul rausnehmen? Ich vermute, da dieses zuerst kommt, wird es versehentlich genutzt und um die ORDER BY aus dem falschen Formular ergänzt. Ich bin mir ziemlich sicher, dass ohne das EventModul die ganze Sache funktionieren sollte.
Ich habe meinen Eintrag hier geändert auf:
Ja!!! Du hast Recht! Ohne das Eventmodul (Auflistung) funktioniert es!! Auch wenn ich ein Modul EventKalender (calendar) einbaue gibt es keine Probleme.
Eins fiel mir jetzt jedoch zusätzlich auf:
Nicht nur das Aufrufen der Detailinformationen am Ende der Zeilen in der Auflistung funktioniert nicht, sondern auch das Anklicken der Felder im Kopf der Listen zum Sortieren. Fehlermeldung hier:
Unknown column 'city' in 'order clause' (SELECT id,alias,startDate,title FROM tl_calendar_events WHERE published=1 AND (pid=1 OR pid=2) AND startDate >= UNIX_TIMESTAMP(DATE(NOW())) ORDER BY city asc LIMIT 0,3
1. tl_calender müsste natürlich wieder tl_member sein
2. die Select-Felder müssten auch aus tl_member kommen (kommen aber aus tl_calender)
3. besonders merkwürdig: das Feld city in ORDER BY kommt aus tl_member ????
Und: Das obige SQL-Statement ist in der Tat das, was für die Auflistung der Events auf jeder Seite geschrieben ist.
TL greift also auf die falsche Auflistung
Hilft das?
Janis
Zuletzt bearbeitet von Janis, 2008-12-21 02:45
2008-12-21 00:31
So, ich glaube, ich habe den Grund für das Problem herausgefunden:
Ich habe heute einmal in der Demo auf typolight.org zwei Module "Auflistung" angelegt:
1. eine für tl_events ohne Felder für die Detailansicht
2. eine für tl_member mit Felder für Detaiansicht
Und beide in das default-Template gelegt.
Ergebnis:
gleiche Probleme wie bei mir: für tl_member führt ein Aufruf der Details zu einer Fehlermeldung
Wurg-Around:
bei (1) auch Felder für die Detailansicht angeben, auch wenn man sie in der Ausgabe nicht benötigt. Dann funktioniert es!!!
Und nicht nur in der Demo, sondern auch bei mir!!!
Ach habe ich mich lange damit rumgeärgert. Aber der Vorschlag von budmann hat mir letzendlich den richtigen Impuls gegeben und Leo's Demo-Version ist richtig toll zum ausprobieren. Danke Leo!!
Meine TL-Welt ist wieder richtig in Ordnung.
Gruß
Janis
Ich habe heute einmal in der Demo auf typolight.org zwei Module "Auflistung" angelegt:
1. eine für tl_events ohne Felder für die Detailansicht
2. eine für tl_member mit Felder für Detaiansicht
Und beide in das default-Template gelegt.
Ergebnis:
gleiche Probleme wie bei mir: für tl_member führt ein Aufruf der Details zu einer Fehlermeldung
Wurg-Around:
bei (1) auch Felder für die Detailansicht angeben, auch wenn man sie in der Ausgabe nicht benötigt. Dann funktioniert es!!!
Und nicht nur in der Demo, sondern auch bei mir!!!
Ach habe ich mich lange damit rumgeärgert. Aber der Vorschlag von budmann hat mir letzendlich den richtigen Impuls gegeben und Leo's Demo-Version ist richtig toll zum ausprobieren. Danke Leo!!
Meine TL-Welt ist wieder richtig in Ordnung.
Gruß
Janis
2008-12-21 10:01
