Joomla 5 Notice

We are pleased to announce that as of January 29, 2024, all of our Joomla extensions are compatible with Joomla 5.

For all who are still updateing from Joomla 3 to Joomla 4: Joomla 4 Migration instructions are available here:

There is now a separate Documentation for Visforms for Joomla 4 and for Visforms for Joomla 5!

Forum

Visforms Subscription user can ask questions in our forum. Please log in with the relevant user first.
Everybody can access the forum for reading.

Please only ask 1 question per topic.

1305 FUNCTION [Datenbank].CHAR_LENGTH does not exist

More
7 years 6 months ago #3692 by Administrator AV
Im deuschsprachigen Joomla! Forum bin ich über diesen Beitrag gestolpert, der Visforms betrifft
forum.joomla.de/index.php/Thread/1525-13...NGTH-does-not-exist/
Schade, dass dieser nicht hier im Forum gepostet wurde, denn dann hätte ich früher von diesem Bug in Visforms erfahren.

Der Bug zeigt sich darin, dass ein Fehler 1305 FUNCTION [Datenbank].CHAR_LENGTH does not exist geworfen wird nachdem der Benutzer das Formular abgeschickt hat, wenn man in Visforms in der Formularkonfiguration einen Ergebnistext angelegt hat. Der Fehler tritt nur selten auf, nämlich immer dann, wenn das Joomla! auf einer etwas älteren MySql Version (< 5.5) läuft.

Visforms verwendet in seinem Router einen mySql Befehl, der erst in MySql Versionen von 5.5 und höher existiert. Da Joomla! als Mindestversion für MySql 5.1 angibt, werden ich das Problem mit der nächsten Visforms-Version fixen. In der Zwischenzeit könnt ihr, wenn ihr betroffen seit, versuche, ob folgende Änderung das Problem behebt.

Geht in das Verzeichnis components/com_visforms und öffnet die Datei router.php.
In Zeile 195 - 220 findet sich folgender Code
Code:
if (strpos($segment, ':') !== false) { $query = $db->getQuery(true); $query->select('CASE WHEN CHAR_LENGTH (name) THEN CONCAT_WS(":", id, name) ELSE id END as slug'); $query->from('#__visforms'); $db->setQuery($query); $slugs = $db->loadColumn(); if (!empty($slugs)) { foreach ($slugs as $slug) { if ($segment === $slug) { $form = explode(':', $segment); $vars['id'] = $form[0]; if ($count == 2) { $vars['view'] = 'message'; } continue; } } } //we should not arrive here }

Diesen bitte ersetzen mit
Code:
if (strpos($segment, ':') !== false) { list($id, $name) = explode(':', $segment, 2); $query = $db->getQuery(true); //$query->select('CASE WHEN CHAR_LENGTH (name) THEN CONCAT_WS(":", id, name) ELSE id END as slug'); $query->select($db->quoteName( 'name')); $query->from('#__visforms'); $query->where($db->quoteName('id') . ' = ' . (int) $id); $db->setQuery($query); $slug = $db->loadColumn(); if (!empty($slug)) { if ($slug === $name) { $vars['id'] = $id; if ($count == 2) { $vars['view'] = 'message'; } } } //we should not arrive here }

Zur Sicherheit eine Sicherungskopie der router.php machen, bevor ihr die Änderungen durchführt.
Bitte lasst mich wissen, ob das das Problem behebt.

Herzliche Grüße,
Aicha

:idea: I recommend you the new and up-to-date documentation for Joomla 4:
docs.joomla-5.visforms.vi-solutions.de/en/docs/
Most of this also applies retrospectively to Joomla 3.
Please only ask 1 question per topic :-).

:idea: Ich empfehle Dir die neue und aktuelle Dokumentation für Joomla 4:
docs.joomla-5.visforms.vi-solutions.de/docs/
Das meiste gilt rückwirkend auch für Joomla 3.
Bitte immer nur 1 Frage pro Thema stellen :-).

Moderators: Administrator AVAdministrator IV
Powered by Kunena Forum