Linux за българи: Форуми

Програмиране => Web development => Темата е започната от: luda_glawa в Mar 13, 2006, 14:51



Титла: Странен проблем с php и mysql
Публикувано от: luda_glawa в Mar 13, 2006, 14:51
Наистина странен. Имам страничка написана на PHP с база на MySQL. Интернет магазин накратко. Обаче когато добавям нови продукти когато е на английски името няма проблем. А съм го въвел на кирилица и се отрязва до деветия знак. Този проблем  или поне подобен имах и преди да направя някои промени по дизайна, но все ми се струва, че дизайна не би трябвало да оказва влияние върху SQL базата. Та преди да променя дизайна режеше до четвърти знак, но това само в Mozilla Firefox. В IE работеше т.е. именувах ги на кирилица. Но сега и на двете места ограничението на кирилица е девет знака. Когато погледна в базата името е нещо от сорта:

абвгдежзи&

а този ред отговаря на:

абвгдежзи

На латиница нямам никакви проблеми с дължината. Та ако може да ми дадете някаква идея къде може да е проблема ще съм благодарен. А само да добавя. Преди да се запише името в базата, въведено на кирилица, ми показва как би изглеждала информацията за продукта и там името е правилното. И заради това ми се струва, че проблема е в самия MySQL, а и няма никакви ограничения за дължината. Странно.

Да не би проблема да се крие в следните настройки на MySQL сървъра:

Стойност                    на сесията  глобална
character set client                 utf8     latin1
character set connection    utf8     latin1
character set database            latin1     latin1
character set results               utf8     latin1
character set server              latin1   latin1
character set system             utf8      utf8

ft max word len                  84         84


Титла: Странен проблем с php и mysql
Публикувано от: astronom в Mar 13, 2006, 15:05
Две неща трябва да провериш: кодирането на страницата ти и кодирането на колоната в MySQL. Аз лично ти препоръчвам UTF-8, след като имаш намерение да използваш няколко азбуки. Причината данните ти да бъдат отрязвани е, че нямаш достатъчно място за запис на символите в колоната.

ft_max_word_length се използва за ограничаване на дължината на думите които ще бъдат индексирани за Full Text Search.


Титла: Странен проблем с php и mysql
Публикувано от: rat в Mar 13, 2006, 15:13
Само да допълня :
Ако ползваш UTF8 за колоната, ще ти се наложи да укажеш с какъв енкодинг ти работи лконекцията :
mysql_connect()..
mysql_query("set names utf8")..


Титла: Странен проблем с php и mysql
Публикувано от: в Mar 13, 2006, 15:41
според мене проблема не е в mysql-а, а в магазина или там каквото е. Тоест виж си php кода.
Това нещо:

Цитат

абвгдежзи&


в в резултата на това нещо:
http://bg.php.net/manual/en/function.htmlentities.php

предполагам, че това дето го вкарваш за title първо минава през тази функц. после отива в базата (което според мене не е много добро решение)
след това минава през някаква функц. която проверява, за допустима дължина на заглавието:
Нещо от сорта на:
http://bg.php.net/manual/en/function.strlen.php

Както и да е - мисълта ми беше да огледаш и php кода


Титла: Странен проблем с php и mysql
Публикувано от: luda_glawa в Mar 13, 2006, 15:47
Благодаря за съветите. Довечера ще се заровя в кода :-). Утре ще пиша за резултата.


Титла: Странен проблем с php и mysql
Публикувано от: в Mar 13, 2006, 15:53
Цитат

Причината данните ти да бъдат отрязвани е, че нямаш достатъчно място за запис на символите в колоната.


има идея тука - ако колоната е нещо от сорта на
varchar(60)


Титла: Странен проблем с php и mysql
Публикувано от: в Mar 13, 2006, 16:08
Цитат (Guest @ Март 13 2006,16:53)
Цитат

Причината данните ти да бъдат отрязвани е, че нямаш достатъчно място за запис на символите в колоната.


има идея тука - ако колоната е нещо от сорта на
varchar(60)

varchar(64)

Доколкото разбирам просто не преобразува правилно кирилицата.

9 * 7 + 1 (&) = 64