Joomla 6 Notice

We are pleased to announce that all our Joomla extensions have been compatible with Joomla 6 since October 14th, 2025.

For those currently upgrading from Joomla 3 to 4: Instructions for Joomla 4 migration can be found here:

There are standalone documentations Visforms Joomla 4, Visforms Joomla 5 and Visforms Joomla 6.

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.

Important information for almost every question:
V1: Which Visforms version is running?
V2: Which Joomla version is running?
V3: Which PHP version is running?

1305 FUNCTION [Datenbank].CHAR_LENGTH does not exist

More
9 years 4 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 6:
docs.joomla-6.visforms.vi-solutions.de/en/docs/
Please ask only 1 question per topic :-).

:idea: Ich empfehle Dir die neue und aktuelle Dokumentation für Joomla 6:
docs.joomla-6.visforms.vi-solutions.de/docs/
Bitte immer nur 1 Frage pro Thema stellen :-).

Moderators: Administrator AVAdministrator IV
Powered by Kunena Forum