Seite 1 von 2

Gelöst: SQL-Fehlermeldung bei längerem Text für Tipp-Anzeige

Verfasst: 11.08.2008 14:01
von dieweltist
>Adminbereich - BB-Code ändern oder hinzufügen<

Wenn der Text für eine Tipp-Anzeige zu lang ist, erscheint bspw. so eine Fehlermeldung:
Allgemeiner Fehler
SQL ERROR [ mysqli ]

Data too long for column 'bbcode_helpline' at row 1 [1406]

SQL

UPDATE p_bbcodes SET bbcode_tag = 'rti=', bbcode_match = '[rti={NUMBER}]{TEXT}[/rti]', bbcode_tpl = '<table border=\"{NUMBER}\"><tr><td>{TEXT}</td></tr></table>', display_on_posting = 1, bbcode_helpline = 'Einzelne Tabellenzelle als Rahmen mit individueller Liniendicke: [rti=Rahmendicke in px]Text[/rti] px nicht mitschreiben! Auch geeignet, um Textfeld von BB-Code "Code" für Computercode zu kürzen. Dazu ggf. zuerst den PC-Code mit BB-Code "Code" umschließen', first_pass_match = '!\\[rti\\=([0-9]+)\\](.*?)\\[/rti\\]!ies', first_pass_replace = '\'[rti=${1}:$uid]\'.str_replace(array(\"\\r\\n\", \'\\\"\', \'\\\'\', \'(\', \')\'), array(\"\\n\", \'\"\', \''\', \'(\', \')\'), trim(\'${2}\')).\'[/rti:$uid]\'', second_pass_match = '!\\[rti\\=([0-9]+):$uid\\](.*?)\\[/rti:$uid\\]!s', second_pass_replace = '<table border=\"${1}\"><tr><td>${2}</td></tr></table>' WHERE bbcode_id = 103

BACKTRACE

FILE: includes/db/mysqli.php
LINE: 143
CALL: dbal->sql_error()

FILE: includes/acp/acp_bbcodes.php
LINE: 225
CALL: dbal_mysqli->sql_query()

FILE: includes/functions_module.php
LINE: 471
CALL: acp_bbcodes->main()

FILE: adm/index.php
LINE: 74
CALL: p_master->load_active()
In diesem Beitrag (klick), die letzte Tipp-Anzeige ganz unten, sollte ursprünglich dieser Text gewesen sein:
Einzelne Tabellenzelle als Rahmen mit individueller Liniendicke: [rti=Rahmendicke in px]Text[/rti] px nicht mitschreiben! Auch geeignet, um Textfeld von BB-Code "Code" für Computercode zu kürzen. Dazu ggf. zuerst den PC-Code mit BB-Code "Code" umschließen
Dieser Text löste aber die oben stehende SQL-Fehlermeldung aus. Nachdem ich diesen Info-Text etwas kürzte, wurde der BB-Code einwandfrei abgespeichert. Übrigens finde ich es prima, dass man so viele Zeichen für die Tipp-Anzeige verwenden kann. Wenn noch mehr Zeichen möglich wären, wäre es meines Erachtens noch besser.

Inzwischen habe ich herausgefunden, dass dieser Text genau 255 Zeichen lang ist, und somit problemlos abgespeichert werden können müsste. Bei nachfolgendem BB-Code habe ich zum Test diese 255 Zeichen probeweise als Tooltipp versucht abzuspeichern, was einwandfrei funktionierte. Aber eigentlich wollte ich den anderen Text dort haben. :grin:
123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789 1234567890123456789012345678901234567890123456789012345

Verfasst: 11.08.2008 17:00
von Dr.Death
Hi,

melde das mal bitte im Bugtracker --> http://www.phpbb.com/bugs/phpbb3

Verfasst: 11.08.2008 20:17
von dieweltist
Statt dessen könnte man auch die in der Fehlermeldung angegebene Einstellung in der Datenbank ändern. Vielleicht geht das dann sogar.

Verfasst: 12.08.2008 12:04
von Dr.Death
Naja, dann hast DU es gelöst, aber nicht alle anderen ;-)

Verfasst: 12.08.2008 12:43
von dieweltist
Ich hatte mich mit meinem letztem Beitrag geirrt. Sonst kann ma ja auch einen Text von bis zu 255 Zeichen Länge als Tooltipp abspeichern; nur bei diesem Text geht das nicht. Weil also sowieso schon irgendwo in der Datenbank 255 Zeichen als Maximalwert angegeben ist, würde eine weitere Erhöhung wahrscheinlich das Problem nicht lösen.

Es wäre nett, wenn irgend ein anderer User das im Bugtracker melden würde, denn ich beherrsche die englische Sprache nicht; und würde quasi nur im "Notfall" das dort erledigen mit gebrochenem Google- oder Babelfish-Automatenenglisch.

Verfasst: 12.08.2008 13:00
von Dr.Death
Ah,
ok... ich hab gerade auch in der DB nachgesehen.

Dies ist also kein Bug da die Länge auf 255 Zeichen beschränkt wurde.

Ich habe mal versucht den Fehler in einem phpBB3.0.2 Forum nachzustellen.

Ohne Erfolg. Die Eingabe lässt es nicht zu, mehr als 255 einzutragen.
Einzelne Tabellenzelle als Rahmen mit individueller Liniendicke: [rti=Rahmendicke in px]Text[/rti] px nicht mitschreiben! Auch geeignet, um Textfeld von BB-Code "Code" für Computercode zu kürzen. Dazu ggf. zuerst den PC-Code mit BB-Code "Code" umschließen
wird dann zu:
Einzelne Tabellenzelle als Rahmen mit individueller Liniendicke: [rti=Rahmendicke in px]Text[/rti] px nicht mitschreiben! Auch geeignet, um Textfeld von BB-Code "Code" für Computercode zu kürzen. Dazu ggf. zuerst den PC-Code mit BB-Code "Co
Vielleicht verwendest Du kein aktuelles phpBB 3.0.2 ?

Ansonsten könntest Du mal die Datei:

adm / style / acp_bbcodes.html
erneuern oder prüfen ob folgender Code vorhanden ist:
<dl>
<dt><label for="bbcode_helpline">{L_BBCODE_HELPLINE_TEXT}</label></dt>
<dd><input type="text" id="bbcode_helpline" name="bbcode_helpline" size="60" maxlength="255" value="{BBCODE_HELPLINE}" /></dd>
</dl>

Verfasst: 12.08.2008 14:47
von cYbercOsmOnauT
Hast Du auch den mySQLi Wrapper verwendet Dr.? Weil mySQL kürzt rigeros gespeicherte Texte auf 255 Zeichen, wenn das Feld z.B. VARCHAR(255) ist. Andere Datenbanken geben da einen Fehler aus.

Nur mal anmerk. ;)

Grüße,
Tekin

Verfasst: 12.08.2008 15:17
von dieweltist
Der Text hat doch auch nur 255 Zeichen (ich habe nachgezählt). Ich musste schon das Ausrufezeichen am Ende weglassen, denn dieses passte schon nicht mehr in das Feld. Und der bei Dir von der Datenbank gekürzte Text hat nur 240 Zeichen. Also doch ein Bug.

Nur; wenn man ihn meldet, wie wird dieser Bug dann beseitigt? Hoffentlich nicht dadurch, indem man die maximale Länge auf 240 begrenzt. Dann sollte es doch bessser so bleiben. Ab und an mal eine SQL-Fehlermeldung ist nicht tragisch.

Verfasst: 12.08.2008 15:20
von cYbercOsmOnauT
Ich denke trotzdem, dass es ein mySQLi Problem ist. Wenn Du ne normale mySQL DB verwendest, würde ich in der config.php die $dbms mal auf mysql änden und nochmal probieren.

Verfasst: 12.08.2008 17:53
von bantu
maxlenght im html reicht nicht aus. Da sollte in PHP ein $error generiert werden, wenn der Text länger als gewünscht ist. Zur Not einfach als Bug melden.

Edit: Bitte als Bug melden.
Edit2: Erledigt. Siehe http://code.phpbb.com/repositories/revision/5?rev=8743