PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (1): [1]

> Найдено сообщений: 15
Pingvin Отправлено: 28 Августа, 2012 - 11:55:38 • Тема: Ошибка php • Форум: Хранение данных, их вывод и обработка

Ответов: 4
Просмотров: 1171
С mb_split так и не получилось, а preg_split('//u',$str, -1, PREG_SPLIT_NO_EMPTY); - работает.
Pingvin Отправлено: 27 Августа, 2012 - 14:59:27 • Тема: Ошибка php • Форум: Хранение данных, их вывод и обработка

Ответов: 4
Просмотров: 1171
Да я ошибся, что без mb_ использовал функции, только даже с mb_split('/?/', $stroka) - не получается сделать массив по одному символу.
Pingvin Отправлено: 27 Августа, 2012 - 13:32:00 • Тема: Ошибка php • Форум: Хранение данных, их вывод и обработка

Ответов: 4
Просмотров: 1171
Как выяснилось str_split() c одним параметром нормально работает только с латинскими символами даже в UTF-8, даже установка внутренней кодировки с помощью команды mb_internal_encoding("UTF-8"); не помогает. Версия php 5.2.12
P.S. Выдаётся массив в 1251 кодировке, хотя входные данные в "UTF-8".
Pingvin Отправлено: 08 Октября, 2011 - 20:09:00 • Тема: While-цикл и его нестабильность • Форум: Хранение данных, их вывод и обработка

Ответов: 13
Просмотров: 5609
Я столкнулся с аналогичной проблемой был запрос UPDATE... . Решил. vidal спасибо за топик и за решение.
Pingvin Отправлено: 22 Сентября, 2011 - 09:05:08 • Тема: Как бороться с ошибкой в MySQL • Форум: Кодировки и все смежное

Ответов: 11
Просмотров: 3754
caballero пишет:
Не парьте себе мозги

Не парить, значит - не парить.
Pingvin Отправлено: 21 Сентября, 2011 - 21:06:50 • Тема: Как бороться с ошибкой в MySQL • Форум: Кодировки и все смежное

Ответов: 11
Просмотров: 3754
Я написал функцию для проверки кодировки БД (в структуре БД таблицы `tovar` после SET есть русские символы), а она всегда говорит, что кодировка нормальная и выводит соответственно правильно, хотя в БД исходник UTF8 (в браузере стоит кодировка UTF8)), что я делаю не так?
PHP:
скопировать код в буфер обмена
  1. function opred_codir_mysql()    { // верная кодировка MySQL или не верная
  2.         $sql = "SHOW CREATE TABLE `tovar`";
  3.         $result=mysql_query($sql);
  4.         if (MYSQL_NUM_ROWS($result))    {
  5.                 while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
  6.                         foreach ($line as $col_value)   {
  7.                                 if (strstr($col_value,'Титановый')) {echo "$col_value<br>\n";return 1;} // echo добавлено для отладки
  8.                                                                                         }
  9.                                                                                                                                 }
  10.                                                                         }
  11.         return 0;
  12.                                                                 }

P.S. Убрал лишнее отрицание и if, всё равно прога работает с точностью до наоборот: при добавлении запроса SET NAMES 'utf8' функция возвращает 0, а иначе 1 .
Pingvin Отправлено: 21 Сентября, 2011 - 18:28:26 • Тема: Как бороться с ошибкой в MySQL • Форум: Кодировки и все смежное

Ответов: 11
Просмотров: 3754
caballero пишет:
SET NAMES 'utf8'” вполне достаточно

Добавил эту настройку в другой скрипт, который выдавал ерунду, теперь всё нормально. Спасибо
Pingvin Отправлено: 20 Сентября, 2011 - 19:06:35 • Тема: Как бороться с ошибкой в MySQL • Форум: Кодировки и все смежное

Ответов: 11
Просмотров: 3754
caballero пишет:
SET NAMES 'utf8'” вполне достаточно
При этом переменная character_set_server так и осталась в 1251, но может она и не нужна?
Pingvin Отправлено: 20 Сентября, 2011 - 15:52:05 • Тема: Как бороться с ошибкой в MySQL • Форум: Кодировки и все смежное

Ответов: 11
Просмотров: 3754
Не на локальном (Денвер) не на удалённом серверах нет my.ini . Выполнил все 8 запросов, переписал БД, а то в ней тоже был код похожий на исходник utf8.
Pingvin Отправлено: 20 Сентября, 2011 - 11:58:23 • Тема: Как бороться с ошибкой в MySQL • Форум: Кодировки и все смежное

Ответов: 11
Просмотров: 3754
Если в прогу добавлять запрос: "SET NAMES 'utf8'” или 8 запросов (в первый раз): "set character_set_client='utf8'"; “set character_set_connection='utf8'";"set character_set_results='utf8'";"set character_set_database='utf8'"; "set character_set_server='utf8'"; "set collation_connection='utf8_general_ci'"; "set collation_database='utf8_general_ci'"; “set collation_server='utf8_general_ci'" – делающие все переменные character_set_... и collation_... отличными от 'utf8’ ими самыми. То русские символы кодируются : первый байт - 208 , а 161 - второй байт , а иначе кроме буквы ш как в блокноте. После второго запуска (запросы были впереди программы) 8 запросов (после убирания 8 запросов, опять портится), переменные все полученные по запросам "SHOW VARIABLES LIKE '%collat%'" и "SHOW VARIABLES LIKE '%char%'" становятся нормальными (с utf8), и буква ш стала нормально выводится.

С помощью phpmyadmin сейчас нормальный вид, а с помощью специально написанной программы, которая в 1251 кодировке нормально работала, раньше была вместо ш - ерунда. Кстати в кодировке 1251 всё было и есть в норме, но заказчик попросил. Т.е. каждый раз надо делать настройку таблицы.
Всем спасибо.
Pingvin Отправлено: 19 Сентября, 2011 - 14:33:47 • Тема: Как бороться с ошибкой в MySQL • Форум: Кодировки и все смежное

Ответов: 11
Просмотров: 3754
Я нигде запрос mysql_query("SET NAMES 'utf8'"); не использовал. При использовании данного запроса, все русские символы кодируются : первый байт - 208 , а 161 - второй байт , а иначе кроме буквы ш, все как в блокноте.
Pingvin Отправлено: 19 Сентября, 2011 - 09:10:36 • Тема: Как бороться с ошибкой в MySQL • Форум: Кодировки и все смежное

Ответов: 11
Просмотров: 3754
При выводе из БД с установленном ENGINE=MyISAM DEFAULT CHARSET=utf8 , вместо ‘ш’ код utf8 первый байт = 209 второй байт 136 , выдаёт первый байт = 209 второй байт 63 =‘?’, проверено в версиях 5.0.7 (php 5.3.3) и 4.1.25 (php 4.4.9) под разными браузерами. Как с этим бороться?
Простейшая программа , показывающая эту ошибку
Pingvin Отправлено: 15 Сентября, 2011 - 21:10:59 • Тема: Самопальный КЭШ для баннеров • Форум: Кодировки и все смежное

Ответов: 2
Просмотров: 1526
Оказывается после выхода из браузера при использовании команды ignore_user_abort. скрипты работают только с абсолютными путями.
Pingvin Отправлено: 14 Сентября, 2011 - 10:41:40 • Тема: Самопальный КЭШ для баннеров • Форум: Кодировки и все смежное

Ответов: 2
Просмотров: 1526
Ответ с хостинга: Вы можете выполнять скрипт по расписанию с помощью планировщика заданий cron…
Pingvin Отправлено: 05 Сентября, 2011 - 22:14:13 • Тема: Самопальный КЭШ для баннеров • Форум: Кодировки и все смежное

Ответов: 2
Просмотров: 1526
Почему-то не работает функция ignore_user_abort позволяющая работать программе записи КЭШ даже ночью, при отключённом браузере (Даже если в php.ini убрать комментарий перед ignore_user_abort = On ,вероятно, устанавливаемый по умолчанию)?
Для программы формирования КЭШа не нужно право работать час в дневное время. Просто до срабатывания по таймауту она делает перезагрузку, следующее время записывается в cache1\sled_time.txt. Время, требуемое для формирования КЭШа 6 минут, а стандартный таймаут = 30 секунд. Как выяснилось, основное время составляет не загрузка картинок от баннеров из Интернета, а проверка есть ли ссылка и если она есть, есть ли картинка в Интернете. Тогда КЭШ должен работать на сервере. Приведённые программы несколько избыточны, так как они служат для отладки.
Начальная: vakuzmenok.narod.ru/time_nach5.p hp и основная: vakuzmenok.narod.ru/runing5.php программа.
Некоторые моменты в программе: В круглосуточной записи на удалённом сервере die() не работает, видно так сконфигурирован сервер. Использование в начале и конце теги HTML, т.к. используются подпрограммы на JavaScript, а без данных тегов они не работают. Сразу после запуска программа проверяет в главной = текущей директории наличие подкаталогов cache1 и cache2, файлов cache1\form_kesh.txt, cache1\time.txt, cache1\close_cache.txt, cache1\sled_time.txt, cache1\statuscache.txt cache1\readcache.txt, cache1\time_nach.txt, которые можно создать пустыми. Если чего-то нет, то остановка и выдаётся соответствующее сообщение. Если встретится файл cache1\stop_runing.txt то программа останавливается.
Работа данной программы проверена под php 5.2.3 (Денвер) и 4.3.9, всё равно функция ignore_user_abort не работает под разными браузерами (пробовал под Лисой, Осликом и Оперой), т.е. работа программы прекращается при закрытии браузера или нажатия клавиши Стоп (остановка видна в браузере (везде кроме Оперы, хотя она там тоже останавливается))(в файл cache1\time.txt перестаёт писаться текущее время, как на локальном, так и на удалённом сервере, а иначе пишется каждые 10 минут).

Страниц (1): [1]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB