Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » Вывод информации из MySQL

Ответить
Настройки темы
Вывод информации из MySQL

Аватара для Moon Mag

Новый участник


Сообщения: 28
Благодарности: 0

Профиль | Отправить PM | Цитировать


Всех приветствую.
Есть база MySQL, таблица и ячейка в которой находится большой текс. Подскажите пожалуйста как вывести от туда информацию допустим на 20 строк, а остальное сформировать на 2 страницу и так далее.
Есть похожая тема но там описывается как сделать максимальное количество символов на странице, а хотелось бы именно ограничение по строкам.
http://forum.oszone.net/post-807556.html

Отправлено: 10:04, 30-12-2008

 

Аватара для Coutty

Кот Ти


Сообщения: 7318
Благодарности: 1204

Профиль | Отправить PM | Цитировать


SELECT * FROM `my_table` ORDER BY `id` LIMIT 0, 20;
SELECT * FROM `my_table` ORDRE BY `id` LIMIT 20, 20;
и т.д. В LIMIT'е сначала с какой строки, а потом - сколько строк.

Отправлено: 10:32, 30-12-2008 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Moon Mag

Новый участник


Сообщения: 28
Благодарности: 0

Профиль | Отправить PM | Цитировать


К сожалению не работает.
Для эксперимента в нес в ячейку текст
1<br>2<br>3<br>4<br>5 и какой бы LIMIT не выставлял, текс выводится полностью

Отправлено: 11:31, 30-12-2008 | #3


Аватара для Coutty

Кот Ти


Сообщения: 7318
Благодарности: 1204

Профиль | Отправить PM | Цитировать


Ааа... Я не правильно прочитал задание.
Вроде бы MySQL не может делить текст на строки.
Как насчёт php-функции
array explode (string separator, string string [, int limit])
Разбиваем возвращаемое значение на строки и выводим строки перебором нужных значений массива.

Отправлено: 11:41, 30-12-2008 | #4


Аватара для Moon Mag

Новый участник


Сообщения: 28
Благодарности: 0

Профиль | Отправить PM | Цитировать


Но за этот пример тоже спасибо, я заодно и в нем разобрался )
А эта функция по другому работает это когда в базе не сколько строк
table
id text
1 1-text
2 2-text
3 3-text
4 4-text
5 5text


$content = mysql_query ("SELECT * FROM content LIMIT 0, 2;", $db);
$contenT = mysql_fetch_array ($content);
do
{
echo "<br>".$content['text'];
}
while ($txT = mysql_fetch_array ($txt));

вот в таком случае выведется из базы 2 строчки
1-text
2-text

Отправлено: 11:44, 30-12-2008 | #5


Аватара для Moon Mag

Новый участник


Сообщения: 28
Благодарности: 0

Профиль | Отправить PM | Цитировать


А вот explode() я чего то не догнал, он же получается. что каждое слово помещает в массив, тем самым мы можем ограничить максиму выводимых слов, а слова могут быть разной длины.
Просто в чем дело, есть сайт где ограничена длина и поэтому информация должна разбиваться на несколько страниц.

Отправлено: 12:10, 30-12-2008 | #6


Аватара для Coutty

Кот Ти


Сообщения: 7318
Благодарности: 1204

Профиль | Отправить PM | Цитировать


Почему обязательно слово?
PHP код: Выделить весь код

$arr explode("\n"$str); 


Так по переводу строки.

PHP код: Выделить весь код

$arr explode("<br />"$str); 


А так - по брейкам.

Можно разбить по предложениям ( explode(". ", $str); ), потом в цикле добавлять по одному предложению, пока суммарная длина текста не достигнет определённой длины. Или вообще в сам текст вставить разделители типа {{PAGE}} в нужных местах и потом по ним разбивать.
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:23, 30-12-2008 | #7


Аватара для Moon Mag

Новый участник


Сообщения: 28
Благодарности: 0

Профиль | Отправить PM | Цитировать


А можно задать максимальную длину строки, допустим width 300 и разбить это опять же на какое то количество строк?
Не хотелось бы делать какую-то определенную привязку, потому-то делаю не для себя, а для человека который даже от HTML очень далек.
explode("\n", $str); а какие еще ключи бывают(\n)?

Отправлено: 14:12, 30-12-2008 | #8


Аватара для Coutty

Кот Ти


Сообщения: 7318
Благодарности: 1204

Профиль | Отправить PM | Цитировать


Цитата Moon Mag:
А можно задать максимальную длину строки, допустим width 300 и разбить это опять же на какое то количество строк? »
Можно, но строка скорее всего разорвётся посередине слова.
Выделить часть строки так: $str = substr($str, 0, 300); Соответственно где-нибудь в середине - $str = substr($str, 3600, 300);
Цитата Moon Mag:
а какие еще ключи бывают(\n)? »
Да любые символы.
\n - знак новой строки
\t - знак табуляции
\r - перевод строки ( \r\n обычно объединяются)

Можно искать конец предложения регулярным выражением, например, но здесь я не смогу помочь Самый простой способ - по точке с пробелом.

Отправлено: 15:04, 30-12-2008 | #9


Аватара для Moon Mag

Новый участник


Сообщения: 28
Благодарности: 0

Профиль | Отправить PM | Цитировать


Спасибо большое за помощь Coutty.
И так после долгих мучение я смог вывести из MySQL определенное колличество строк на основе кода от chirs

Код: Выделить весь код
$text = 'Первый пример текста. Второй пример текста. Третий пример текста. Четвертый пример текста.';
$max_length = 30;
$page = (isset($_GET['page']) ? $_GET['page'] : 2);
// Разбиваем $text на массив $arr[], находя в тексте пробелы между словами
$text.= ' ';
while (!empty($text)):
  if (strlen($text)>$max_length) $n = $max_length; else $n = strlen($text);
  for ($i = $n-1; $i>0; $i--) if ($text[$i]==' ') break;
  $arr[] = trim(substr($text,0,$i+1)); $text = substr($text,$i+1);
endwhile;
$k = count($arr);
// Выводим на экран текущую страницу
echo 'Страница '.$page.' из '.$k.'<br><br>';
echo $arr[$page-1];
// Теперь рисуем простенький навигатор страниц
$nav = '<a href="?page='.($page>1 ? $page-1 : 1).'">Предыдущая</a> ';
$nav.= '<a href="?page='.($page<$k ? $page+1 : $k).'">Следующая</a>';
echo '<br><br>'.$nav;
// А это для отладки, чтобы было видно, что происходит
echo '<pre>'; print_r($arr);
, но после радостного успеха я сильно обломался когда попробовал в текс добавить картинку или ссылку так как все это
PHP код: Выделить весь код

$text 'Первый пример <img src=\"***.jpg\"> текста. Второй пример текста. Третий пример текста. Четвертый пример текста.'

считает одним текстом и может запись типа <img src=\"26_xp.jpg\"> разорвать на две части потому что там есть пробел между img_src и точно также ссылками.

Поэтому я сделал так
PHP код: Выделить весь код

<?php 

$text 
'Первый пример <img src="***.jpg"> текста.{{PAGE}} Второй пример текста.{{PAGE}} Третий пример текста.{{PAGE}} Четвертый пример текста.';


$all_page substr_count($text,"{{PAGE}}"); /*Считаем сколько страниц*/
echo $all_page;  /*Для проверки, потом можно убрать*/

/*Делаем проверку переменной page от не санкционированного ввода*/
if (isset($_GET['page'])) {$page=$_GET['page'];}  
if (isset(
$_GET['page']) == false or $page != is_numeric($page) or $page or $page $all_page) {$page='1';} 


$string strpos($text"{{PAGE}}"0); /*Ищем в тексте первую метку {{PAGE}} и возвращаем её значение*/
do
{
$i=$string+8/*Так как наша метка состоит из 8 символов и чтоб метка не занасилась в массив и не выводилась на экран, нам нужно её перекрыть*/
$arr[] = trim(substr($text,0,$string)); /*Добавляем выборку из текста в массив - страница*/
$text substr($text,$i); /*Выбираем последующие страницы, выбираем от начального и до конца текста*/
}
while (
$string strpos($text"{{PAGE}}"0)); /*Ищем 2-3,4, и тд. метку {{PAGE}} */

/* Если убрать скобки то выдаст структуру массива
echo '<pre>'; print_r($arr);
*/   

/* Выводим на экран текущую страницу */
echo '<br>Страница '.$page.' из '.$all_page.'<br><br>';
echo 
$arr[$page-1];


// Теперь рисуем простенький навигатор страниц
$nav '<a href="?page='.($page>$page-1).'">Предыдущая</a> ';
$nav.= '<a href="?page='.($page<$all_page $page+$all_page).'">Следующая</a>';
echo 
'<br><br>'.$nav;

?>

я немного позаимствовал части кода из других примеров, авторам спасибо.
Теперь просто будет немного ручного труда, придется в ручную подбирать колличество строк передвигая метки {{PAGE}}.

Отправлено: 19:48, 03-01-2009 | #10



Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » Вывод информации из MySQL

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Постраничный вывод PHP + MySQL (готовое решение) darksmoke Вебмастеру 6 19-05-2011 20:43
MySQL - MySQL & MySQL-Front timon4ik Программирование и базы данных 2 06-04-2008 18:07
Законы | Новая редакция ФЗ "Об информации, информатизации и защите информации" ArtemD Защита компьютерных систем 2 31-07-2006 11:58
Вывод на телевизор dascon Программное обеспечение Windows 15 04-09-2004 06:55
Вывод информации на двух мониторах Guest Программирование и базы данных 1 26-07-2004 15:39




 
Переход