Сбивается кодировка парочки букв кирилицы при записи в БД
Прислано: kissfm
чт, 11/03/2010 - 17:15
Здравствуйте.
Вот по заказу вручную написал инструментарий на голом php и всунул его в Drupal.
Короче, там есть несколько полей для ввода пользователям своего ФИО, Адреса, Доп. инфо...
И при извлечении этих данных для просмотра буквы кириллицы И, Ш некорректно выглядят, хотя и не всегда.
Только 2 эти буквы почему-то.
Я прикрепил скрин этих делов.
В чем тут может быть дело? Посоветуйте решение.
Спасибо.
| Прикрепленный файл | Размер |
|---|---|
| cod.jpg | 6.75 кб |
- kissfm's blog
- Для комментирования войдите или зарегистрируйтесь
В чем тут может быть дело? Посоветуйте решение.
Вот в чём:
Вот по заказу вручную написал инструментарий на голом php и всунул его в Drupal.
- Для комментирования войдите или зарегистрируйтесь
Ну и..?
Обычная БД, обычные запросы. Какие тут подводные камни? И почему только 2 буквы И, Ш барахлят?
- Для комментирования войдите или зарегистрируйтесь
Вы правда думаете что API придумано чтобы поржать и порождать тормоза?
Не будьте умнее друпала, хотите быть умнее - пишите свою CMS, а пока вы работаете в контексте друпала, вы должны следовать его правилам
- Для комментирования войдите или зарегистрируйтесь
Угу...так что же нужно применить при записи данных в таблицу?
- Для комментирования войдите или зарегистрируйтесь
Давайте, я за вас и код напишу, что уж там.
Сайт api.drupal.ru и раздел "Базы данных" придумали только для избранных?
- Для комментирования войдите или зарегистрируйтесь
а ваш код сложно сюда скопировать?
- Для комментирования войдите или зарегистрируйтесь
Давайте, я за вас и код напишу
Я не просил код писать, а только если кто знает, то в пару словах описать как избежать этой неприятности.
а ваш код сложно сюда скопировать?
А что вы хотите, что бы я скопировал сюдаь? SQL запросы на insert?
Ну вот:
function getVar($value){ if(isset($_GET[$value])) $data=$_GET[$value]; else if(isset($_POST[$value])) $data=$_POST[$value]; else if(isset($_REQUEST[$value])) $data=$_REQUEST[$value]; else $data=''; return $data; } $sess_id=(int)getVar('hid_sess_id'); // ID сеанса $film_name=getVar('hid_film_name'); // Название фильма $date_session=getVar('hid_date_session'); // Дата сеанса $time_session=getVar('hid_time_session'); // Время сеанса $tickcol=(int)getVar('hid_tickcol'); // количество билетов $tickets=getVar('hid_tickets'); // заказанные места $summ=(int)getVar('hid_summ'); // сумма $delivdate=getVar('hid_delivdate'); // дата доставки $fio=getVar('hid_fio'); // ФИО $phone=getVar('hid_phone'); // телефон $adr=getVar('hid_adr'); // адрес $dinfo=getVar('hid_dinfo'); // доп.инфо $rndm=getVar('hid_rndm'); // рандом $result1 = mysql_query("INSERT INTO zb_orders (film_name, session_id, datetimesess, tick_col, places, status, totalsum, delivery_date, fio, phone, adress, info, order_date, order_time, rndm)VALUES ('".$film_name."', ".$sess_id.", '".$date_session." ".$time_session."', ".$tickcol.", '".substr($allplaces, 2)."', 'no', '".$summ."', '".$delivdate."', '".$fio."', '".$phone."', '".$adr."', '".$dinfo."','".date('d.m.Y')."','".date('H:i')."', '".$rndm."')");
И еще! Этот код не в блоке Друпала, этот код в скрипте лежит на серваке в отдельном php файле.
- Для комментирования войдите или зарегистрируйтесь
И ответов куча...
- Для комментирования войдите или зарегистрируйтесь
Ладно, сам нашел.
Если не знаете, то вот вам решение:
// для записи в БД $fio=iconv('utf-8','windows-1251',$fio); // вывод с БД и отображение echo iconv('windows-1251','utf-8',$row['fio']);
- Для комментирования войдите или зарегистрируйтесь
код одна сплошная дыра
- Для комментирования войдите или зарегистрируйтесь
код одна сплошная дыра
Теперь уже две. Две сплошных дыры. Топикстартер, Вам самому не стыдно такое выкладывать?
Ладно, сам нашел.
Что нашли? Это называется решение? Вы программированию в Индии учились?
На всякий случай подскажу: при коннекте к мускулю можно кодировочку указать.
- Для комментирования войдите или зарегистрируйтесь
А чего тут стыдного? У меня нет общепринятых стереотипов по данному вопросу. Какое нашел решение - такое и использовал. Работает, проблем больше нету...
И подсказку можно ли реальную написать тут об указании кодировки?
- Для комментирования войдите или зарегистрируйтесь
топикстартер
начни хотя бы с того что поищи конструкцию
db_query("SELECT .... %d ....", $value);
У меня нет общепринятых стереотипов по данному вопросу.
Это ты оправдал таким образом уязвимость кода? Лучше бы спросил в чем дыры.
- Для комментирования войдите или зарегистрируйтесь
Ну, оправдание-не оправдание. Есть, что есть...
Я хочу получить указания на дыры в коде. Давай я посмотрю на них.
- Для комментирования войдите или зарегистрируйтесь
Я хочу получить указания на дыры в коде. Давай я посмотрю на них.
смотрите что написал kuzyakiev@drupal.org, а то 1 запрос и вся БД ушла злоумышленникам
- Для комментирования войдите или зарегистрируйтесь




Комментарии