Closed Olli closed 4 years ago
Nein, daran wird es nicht liegen. Lasse dir doch mal das Query ausgeben, was der Filter generiert (FilterConfig::doInitQueryBuilder() -> ganz unten mal $queryBuilder->getSQL() ausgeben lassen und schauen, ob und wieso das Query falsch ist).
Ok ich habe einfach die Operatoren mal gelöscht - jetzt tut es wohl außer ich gebe bei dem Filter-Start Wert im FE einen Wert an, der kleiner als der kleinste oder größer als der größte Wert unter den aktuellen Daten in der Tabelle ist. Dann gibt es keine Ergebnisse mehr obwohl alle Daten noch in der Range liegen. Ich teste das morgen mal mit der SQL Ausgabe.
Wenn ich werte habe von
Und ich die Rage von 5 und 30 einstelle dann findet er nichts bei dem Query SELECT * FROM tl_mytable WHERE (tl_tl_mytable.published = 1) AND (('5' <= tl_mytable.valuecolumn) AND ('30' >= tl_mytable.valuecolumn)) Warum eigentlich ... die ganzen Werte liegen ja dazwischen und werden von der where Clause abgedeckt. Außerdem werden die Range Queries genau andersherum aufgebaut als ich sie intuitiv aufbauen würde. Hat das einen Grund?
mhm, das sieht schwer nach einem Typ-Problem aus. Du könntest mit deiner ursprünglichen Aussage evtl. recht haben :-) Probiere das doch bitte mal mit eingefügten Werten in phpmyadmin. Experimentiere bitte auch mal, ob es einen Unterschied macht, ob man bspw.
10.2 10,2 '10,2' '10.2'
abfragt. Es könnte ein Typecasting-Problem sein. Die WHERE-Bedingung sieht für mich erst mal korrekt aus.
10.2
geht
10,2
Fehler
'10,2'
Geht nicht
'10.2'
Geht nicht
und 10 geht auch.
Hm in dem Zusammenhang bin ich noch auf ein anderes Problem gestoßen ... die Sortierung nach den Varchar Werten funktioniert auch nicht zuverlässig. Erst wenn ich die nach Decimal 8,2 caste wird ein Schuh draus. Ich denke das ist hier
Kannst du den Link bitte noch ergänzen?
Was soll ich verlinken? Ich habe nach diesem Wert aus meinen Daten (tl_mytable.valuecolumn der ein varchar(255)) ist sortieren lassen. Da hat die Sortierung versagt. Jetzt habe ich die Spalte in Decimal(8,2) umgestellt. Die Sortierung funktioniert ebenso wie die Rangegeschichte. Eigentlich ist damit das Ticket erledigt. Die Frage ist, ob ein Range-Slider auf einer Varchar Spalte Sinn macht.
"Ich denke das ist hier"
-> das las sich so, dass du hier die Code-Stelle verlinken willst.
Wir können aus Zeitgründen natürlich nicht sämtliche Datentypen und Szenarien von MySQL durchtesten. Wenn es mit Decimal geht, wäre es ja ok.
Ja ist verständlich.
Ich habe vielleicht einen Bedienfehler oder auch nicht. Ich will einen Multi-Range Element nutzen. Dafür habe ich wie in der Anleitung ein filter-start und filter-stop Wert angelegt und das dann im Multi-Range assoziiert. Das Column was in der Datenbank durchsucht werden soll hat Zahlen enthalten in Form von xx.xx enthalten ist aber varchar(255). Wenn ich jetzt eine Range im Start und Stopfeld eingebe wird nie was gefunden außer ich gebe Operatoren an die beim Starfeld <= bzw < sind ... Wenn ich beim Filter-start > oder >= und beim Filter-Stop < oder <= angebe wird nichts ausgegeben obwohl die Tabelle mit solchen Werten enthält. Liegt das "nichtfunktionieren" daran, dass ich in der Datenbank varchar(255) für die Spalte habe?