Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Закрытая темаСоздание новой темы Создание опроса
> Постраничный вывод, Постраницный вывод ленты новостей 
:(
    Опции темы
Osrus
Дата 13.12.2004, 01:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 443
Регистрация: 4.12.2004

Репутация: нет
Всего: 3



Данный скрипт выводит сообщения из текстового файла.
Можно ли устроить код таким образом, чтобы на странице выводились не все сообщения, например только 10? При этом, чтобы посмотреть следующие 10 нужно нажать next и т.д.?
Сложно ли сделать такой код и стоит ли? Мне иинтересно ваше мнение...

Код

<?php
$text_of_file=join('',file('textnews.dat'));
$message_array=explode('<>',$text_of_file);
$message_array=array_reverse($message_array);
foreach ($message_array as $message){
echo "<table border=0 width=500 align=center><tr><td>$message</td></tr></table><br>";
}
?>


Это сообщение отредактировал(а) Osrus - 13.12.2004, 01:31


--------------------
Шагнул на скользкий путь красноглазия...
Long live Socialism!
PM MAIL ICQ   Вверх
penizillin
Дата 13.12.2004, 03:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 10.11.2004

Репутация: 8
Всего: 9



можно заменить foreach на for и отображать элементы с индексом между x и x+10. x передавать в url.
PM MAIL ICQ   Вверх
Osrus
Дата 13.12.2004, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 443
Регистрация: 4.12.2004

Репутация: нет
Всего: 3



Цитата(penizillin @ 13.12.2004, 03:14)
можно заменить foreach на for и отображать элементы с индексом между x и x+10. x передавать в url.

А чуть поподробнее млжно ... желательно с примером
$message_array as $message это массив сообщениея? что значит as message?

Это сообщение отредактировал(а) Osrus - 13.12.2004, 12:09


--------------------
Шагнул на скользкий путь красноглазия...
Long live Socialism!
PM MAIL ICQ   Вверх
Opik
Дата 13.12.2004, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 24
Всего: 55



Цитата
$message_array as $message

$message_array - массив
as $message - как один элемент массива.
А чуть поподробнее млжно - можно smile
Код
$size_of_array = sizeof($message_array);
for($i=0; $i<$size_of_array;$i++){
print $message_array[$i];
}

что бы показывало след страницу надо вместо $i = 0, присвоить этой переменной значение 10 и т.д.

Это сообщение отредактировал(а) Opr - 13.12.2004, 12:16
PM MAIL Skype   Вверх
IZ@TOP
Дата 13.12.2004, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



А в ФАКе посмотреть? Там есть пример как сделать постраничный вывод.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Osrus
Дата 13.12.2004, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 443
Регистрация: 4.12.2004

Репутация: нет
Всего: 3



IZ@TOP
Opr
penizillin
Премного Благодарствую... Наконец-то с вашей и божьей помощью доделал что хотел.
Чисто в познавательныйх целях мне интересно "i" обозначает количество символов выводимых на странице, али же строк? Или я ошибаюсь? Просто если поствить i=5 и ввести два сообщения, то сообщений видно не будет...

Это сообщение отредактировал(а) Osrus - 13.12.2004, 22:25


--------------------
Шагнул на скользкий путь красноглазия...
Long live Socialism!
PM MAIL ICQ   Вверх
Opik
Дата 13.12.2004, 22:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 24
Всего: 55



Osrus
i - текущая запись в массиве, ты просто сделай прерку, если $i больше чем всего - пишем, что не найдено или чего го то там))
PM MAIL Skype   Вверх
Osrus
Дата 13.12.2004, 23:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 443
Регистрация: 4.12.2004

Репутация: нет
Всего: 3



Opr
Так если я не ошибаюсь
Код

$size_of_array = sizeof($message_array);
for($i=1; $i<$size_of_array;$i++){
if($i<10){
print "<font color=000000><center> $message_array[$i]</center></font>";
}
Похоже на правду? Вроде работает ...
А еще с переходом на другую страницу не подскажете как лучше сделать... Типа просмотреть следующие

Это сообщение отредактировал(а) Osrus - 13.12.2004, 23:46


--------------------
Шагнул на скользкий путь красноглазия...
Long live Socialism!
PM MAIL ICQ   Вверх
Opik
Дата 13.12.2004, 23:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 24
Всего: 55



Osrus
Нет.
Код

$size_of_array = sizeof($message_array);
for($i=1; $i<$size_of_array;$i++){
if($i>$size_of_array){ 'nety' } else {
print "<font color=000000><center> $message_array[$i]</center></font>";
}
}

PM MAIL Skype   Вверх
Osrus
Дата 14.12.2004, 00:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 443
Регистрация: 4.12.2004

Репутация: нет
Всего: 3



Opr Только мой тож работает я протестировал - выводит последние 9 сообщений
А твой наоборот не выводит указанное число, остальные выводит
+ тут еще реверс стоит $size_of_array = sizeof($message_array);
Переход к следующим сообщениям можно сделать?

Код

$size_of_array = sizeof($message_array);
for($i=1; $i<$size_of_array;$i++){
if($i<+10){
print "<font color=000000><center> $message_array[$i]</center></font>";
}
"+" Забыл

Это сообщение отредактировал(а) Osrus - 14.12.2004, 01:37


--------------------
Шагнул на скользкий путь красноглазия...
Long live Socialism!
PM MAIL ICQ   Вверх
penizillin
Дата 14.12.2004, 02:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 10.11.2004

Репутация: 8
Всего: 9



Код
$size_of_array = sizeof($message_array);
$first = intval($_GET["first"]); //например
$last = $first + 10;

for($i=$first; $i<$last;$i++){
   if(isset($message_array[$i])){
       echo($message_array[$i]);
   }
}


опять-же, это один из семи-восьми возможных вариантов.
PM MAIL ICQ   Вверх
Osrus
Дата 14.12.2004, 03:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 443
Регистрация: 4.12.2004

Репутация: нет
Всего: 3



smile И все-таки, как сделать переход на другие десять, чтобы предыдущие не показывались

Это сообщение отредактировал(а) Osrus - 14.12.2004, 03:08


--------------------
Шагнул на скользкий путь красноглазия...
Long live Socialism!
PM MAIL ICQ   Вверх
penizillin
Дата 14.12.2004, 03:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 10.11.2004

Репутация: 8
Всего: 9



передавать в url переменную first=10
PM MAIL ICQ   Вверх
Eretik
Дата 14.12.2004, 03:27 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Я вообще сам новичок, но может можно так:
Код

$text_of_file=join('',file('textnews.dat'));
$message_array=explode('<>',$text_of_file);

$messages_to_page = 10; //сколько сообщений на страницу
$current_page = (isset($_GET['page'])) ? $_GET['page'] : 0; //номер текущей страницы, переданный в адресной строке броузера (если не передан, то 0)
$size_of_array = sizeof($message_array); //всего сообщений
$pages_count = ceil($size_of_array/$messages_to_page); //количество страниц

//создаём переменную page_link, где будут ссылки на пред. и след. страницу
switch($current_page) {
case $pages_count -1: {
 $page_link = ($current_page == 0) ? '' : '<a href="?page='.($current_page-1).'">Предыдущая страница</a>';
 break;
}
case '0': {
 $page_link = ($current_page == $pages_count - 1) ? '' : '<a href="?page='.($current_page+1).'">Следующая страница</a>';
 break;
}
default: {
 $page_link = '<a href="?page='.($current_page-1).'">Предыдущая страница</a> | <a href="?page='.($current_page+1).'">Следующая страница</a>';
}
}

//считаем с какого по какое сообщение выводить на эту страницу (переменные start и end соответственно)
if(($current_page * $messages_to_page > 1) && ($current_page * $messages_to_page < $size_of_array)) {
$start = $current_page * $messages_to_page;
if($current_page * $messages_to_page + $messages_to_page > $size_of_array) {
 $end = $size_of_array;
} else {
 $end = $current_page * $messages_to_page + $messages_to_page;
}
} else {
$start = 0;
$end = ($messages_to_page > $size_of_array) ? $size_of_array : $messages_to_page;
}
//и выводим эти сообщения
while($start < $end) {
echo "<font color=#000000><center> $message_array[$start]</center></font>";
$start++;
}
//и ссылки выводим
echo $page_link;


Основа из топика "то, что должен знать каждый о php". Попытался изменить немного, может это и неэффективно, может можно гораздо проще и короче? Но так вроде работает!
  Вверх
Osrus
Дата 14.12.2004, 03:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 443
Регистрация: 4.12.2004

Репутация: нет
Всего: 3



передавать в url переменную first=10
Извиняюсь... Я наверное не так выразился... Чтобы на этой же странице при нажатии появлялись след 10 и т.д.

Спасибо всем

Это сообщение отредактировал(а) Osrus - 14.12.2004, 03:57


--------------------
Шагнул на скользкий путь красноглазия...
Long live Socialism!
PM MAIL ICQ   Вверх
Закрытая темаСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0540 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.