» WAP Мастер Форум https://forum.wapinet.ru/index.php » PHP https://forum.wapinet.ru/viewforum.php?id=3 » Вывод большого текста, теория https://forum.wapinet.ru/viewtopic.php?id=412 |
JInn » 2009.06.14 16:41 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Делаю библиотеку и столкнулся с тем, что не знаю как правильно вывести большой текст. Весь же выводить не будешь в одну страницу. Теоретически план созрел такой. Достаешь текст из базы, обрезаешь (substr а лучше даже mb_substr) до нужного количества символов, выводишь на экран. Если текст длиннее обрезанного, то создаем страницы и следующая страница уже будет с того места, где обрезали. Вроде как то так. Такой вывод это нормально или есть варианты получше? Мне не нравится что текст запрашивается полностью на каждой странице, это как бы не есть хорошо. Но других вариантов пока не вижу, слаб еще в пхп ( Смотрел MCH - библиотеку но там сплошной ООП ( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Gemorroj » 2009.06.14 17:24 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
нет там никакого ООП. Если файл достается из БД, то можно доставать лишь его часть. В MySQL есть функция substr, работает так же как и в PHP. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
JInn » 2009.06.14 19:04 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
У меня уже глюки какие то, вроде писал сообщение и нет его... | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Gemorroj » 2009.06.14 20:10 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
вместо str ставь имя колонки строку в которой нужно обрезать | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
JInn » 2009.06.15 05:13 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Вот это рабочая строка: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
JInn » 2009.06.15 05:43 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$array=mysql_query("SELECT SUBSTRING(`new` FROM 7 FOR 200) AS `new`,`tema` FROM `news` WHERE `n_id`=7 LIMIT 1 "); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
JInn » 2009.06.16 06:07 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Возникла проблема с mb_string Когда выводится текст, то в конце и в начале иногда неправильно обрезает. Я использовал mb_substr Но ситуация не изменилась, хотя насколько я знаю эта функция должна нормально обрезать. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Chizh » 2009.06.16 06:43 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
нужно указать кодировку, в которой ты работаешь. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
JInn » 2009.06.16 09:55 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Кодировку я указываю в начале страницы. Внутри функции еще можно, но так как кодировка указана, я этого не делал. По идее она должна принять ту кодировку которая в скрипте | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Akdmeh » 2009.06.16 10:06 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
не по идее. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Chizh » 2009.06.16 10:07 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
как раз таки это не зависит от кодировки страниц. для библиотеки нужно специально указать еще раз ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
JInn » 2009.06.16 10:24 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Я имею ввиду что в начале страницы я пишу mb_internal_encoding("UTF-8"); Поэтому в самой функции я кодировку не пишу Код:
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
JInn » 2009.06.16 10:36 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
По идее субстринг в базе тоже работает с многобайтовыми символами, но неправильно режет, поэтому и мб_стринг пришлось использовать, но тоже не помогает, а я с этими функциями только столкнулся, поэтому даже не понимаю как это работает ( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Gemorroj » 2009.06.16 13:04 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
база данных в UTF-8 ?? SEN NAMES utf8 прописал? | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Akdmeh » 2009.06.16 13:08 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
да, посмотри кодировку таблицы-это мне своего времени тоже массу проблем доставляло... | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
JInn » 2009.06.16 15:02 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
не. не писал. Работало же ))) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Gemorroj » 2009.06.16 15:07 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
так делают только те, кто не в курсе что делает SET NAMES, достаточно mysql_query('SET names `utf8`'); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
JInn » 2009.06.16 15:33 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Понятно. А вот еще вопрос. Создаю базу и делаю такие запросы Код:
И меню у меня потом показывает в неправильной кодировке. Приходится из скрипта уже переделывать. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Gemorroj » 2009.06.16 15:43 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
mysql_query('SET NAMES `utf8`'); нужно писать сразу же после соединения с сервером MySQL. и когда создаешь БД, выбери сравнение utf8_general_ci | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Akdmeh » 2009.06.16 17:09 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
А ещё когда таблицу создаешь можно указать | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Gemorroj » 2009.06.16 17:11 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ну у него там так и стоит) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
JInn » 2009.06.17 16:14 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Вот убейте меня, но я ничего не понимаю. Вот полностью файл инсталла. Че бы я не делал, но в базу заливается неправильно ((( в htaccess php_value default_charset UTF-8 еще пробовал вот это AddDefaultCharset UTF-8. Тоже не помогает... | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
JInn » 2009.06.17 16:25 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Может есть какой нибудь скрипт, где заливается база и потом выводится в утф8? Я уже не знаю где посмотреть | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Gemorroj » 2009.06.17 16:40 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
вот этот бред убери и оставь только mysql_query('SET NAMES `utf8`'); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
JInn » 2009.06.17 16:57 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Да я уже не знал че делать поэтому писал все что можно. Я заливаю в базу а потом вывод делаю и выводится в cp-1251. Когда открываю phpmyadmin то там нормально показывает если страница в кодировке cp-1251 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Gemorroj » 2009.06.17 17:13 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[
- коннект к бд как происходит? после нето есть SET NAMES? При создании БД сравнение utf8_general_ci выбрал?? Сделай дамп бд и прикрепи сюда. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
JInn » 2009.06.17 17:39 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
При создании бд выбирал сравнение utf-8 general_ci SET_NAMES есть только в инсталле. Или во время работы скрипта тоже надо??? | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Gemorroj » 2009.06.17 17:47 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
естественно надо тоже. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
JInn » 2009.06.18 03:40 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Вот ёпт... Написал SET_NAMES и все заработало... А я 2 дня ломал phpmyadmin :D И мало того, по ходу теперь и mb_striing не нужен, потому что все режется так как надо (SUBSTRING'ом при запросе). Вывод русского текста на 25 страницах не выдал ни одной ошибки ) Всем огромное спасибо :D |