Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Вывод гостевой - постраничная навигация
 
 автор: Denandi   (23.06.2007 в 13:33)   письмо автору
 
 

Всем привет!
-Знаю тема битая, но на найду решения..
надо сделать вывод из тхт файла сообщ по 10 шт на странице...
пошел по этой схеме и что то не верно пишу а что не понимаю.. Кто знает- помогите! или дайте свой вариант достойного вывода...
Спасибо.
$meny=10;
$rezult=$abc-$meny;

$massiv=file("text.txt");
$abc=explode("^^", $massiv);
$abc=array_reverse($abc);
for($i=$abc; $i>=$rezult; $i--){
print $massiv[$i];
}

   
 
 автор: cheops   (23.06.2007 в 14:06)   письмо автору
 
   для: Denandi   (23.06.2007 в 13:33)
 

Возможно вас заинтересует скрипт по ссылке http://www.softtime.ru/scripts/pager.php.

   
 
 автор: Denandi   (23.06.2007 в 14:46)   письмо автору
 
   для: cheops   (23.06.2007 в 14:06)
 

Спасибо cheops, очень оперативно, но я имел ввиду обычный вывод N-ного количества записей из тхт!!! :) просто гостевая- не постраничный вывод!!!
Извените если не так выразился.Приведенный выше код Не могу реализовать вот прошу помощи или какие то достойные ссылки. а то глаза устают столько кода "лапатить"..:)

   
 
 автор: bronenos   (23.06.2007 в 16:59)   письмо автору
 
   для: Denandi   (23.06.2007 в 14:46)
 

$massiv=array_slice(file("text.txt"), 0, N);

   
 
 автор: Denandi   (24.06.2007 в 05:16)   письмо автору
 
   для: bronenos   (23.06.2007 в 16:59)
 

Спасибо bronenos, но твоя схема НЕ работает!
______________________________________
вот пробывал изменить содержимое...:)
ни-хрена!!! Выводит все сообщения на экран, вместо 10 положенных..:(
$meny=10;
$rezult=$value-$meny;
$massiv=join(' ',file("text.txt"));
$abc=explode("^^", $massiv);
$abc=array_reverse($abc);
foreach ($abc as $value)
if($value>0)
{
for($i=count($value); $i>=$rezult; $i--)
print $abc[$i];
}

   
 
 автор: CrazyAngel   (24.06.2007 в 06:04)   письмо автору
 
   для: Denandi   (24.06.2007 в 05:16)
 

как это не работает? оно режет массив от нуля до N ...
вы что-то путаете ...
array_slice
file

   
 
 автор: Denandi   (24.06.2007 в 06:10)   письмо автору
 
   для: CrazyAngel   (24.06.2007 в 06:04)
 

Вот именно не работает...
Пропадает все кроме вводной формы.
Нет, это гдето касяк в коде вывода.. хотя по логике должно работать.. :(

   
 
 автор: bronenos   (24.06.2007 в 06:26)   письмо автору
 
   для: Denandi   (24.06.2007 в 06:10)
 

их надо с конца показывать?

   
 
 автор: Denandi   (24.06.2007 в 06:32)   письмо автору
 
   для: bronenos   (24.06.2007 в 06:26)
 

Ну, вообще то было бы правильнее если бы новые сообщения были вверху..
хотя мне сча до жОпы сверху-снизу..:)))
просто принципиально хочу найти причину "поломки"......
________________________________________________________________
$meny=10;
$rezult=$value-$meny;
// $massiv=array_slice(file("text.txt"), 0, N);

$massiv=implode(' ', file('',"text.txt"));

$abc=explode("^^", $massiv);

$abc=array_reverse($abc);
foreach ($abc as $value)
{
if($value>0)
{for($i=count($value); $i>=$rezult; $i--)
print $abc[$i];
}

   
 
 автор: bronenos   (24.06.2007 в 09:36)   письмо автору
 
   для: Denandi   (24.06.2007 в 06:32)
 

array_reverse + array_slice

   
 
 автор: sim5   (24.06.2007 в 10:09)   письмо автору
 
   для: Denandi   (23.06.2007 в 13:33)
 

Вообще ничего не понимаю. На вторую строку вашего кода естественно появится ошибка:
Undefined variable: abc
Поставим выражение $rezult=$abc-$meny уже после того как вы определили массив, но опять получите при выполнении этой строки:
Fatal error: Unsupported operand types
Я понимаю так, что должно быть $rezult=count($abc)-$meny, а в цикле $i=count($abc), если уж на то пошло. Или это только у меня "неправильный" php?

   
 
 автор: amigo62   (24.06.2007 в 21:06)   письмо автору
 
   для: sim5   (24.06.2007 в 10:09)
 

Denandi, возможно, мои наработки помогут? //$mess-массив с сообщениями,

//$number-кол-во на страницу,

//$page-номер страницы

//$array-массив с сообщениями,

$rows=sizeof($array);

//кол-во станиц

$pages=ceil($rows/$number);

$start=$page*$number;

$stop=$start+$number;

$i=$start;

while(($i<$rows)&&($i<$stop)){echo $array[$i].'<br>';}

думаю, вывод ссылок труда не составит, вычисляются они с использованием $pages.

   
 
 автор: Denandi   (24.06.2007 в 22:59)   письмо автору
 
   для: sim5   (24.06.2007 в 10:09)
 

Все верно sim5 ошибки присутствуют это я уже не стал их тогда исправлять так как
времени не было. но тем ни мение пока не работает... да и вообще чужой код- ПОТЕМКИ! :)) ладно, похоже надо до вых дожить и попытаться еще...
Всем- Спасибо!

   
 
 автор: BaSh   (24.06.2007 в 23:16)   письмо автору
 
   для: Denandi   (24.06.2007 в 22:59)
 

вот, может пригодится, выводит 10 записей + постраничная навигация.

<?
// сама функция навигации
 
function navigator($nazvanie,$path,$addpage,$onlug,$lines,$url,$twt){
    
$perp 'Перейти на стр.: ';
    
$razdle=' ';
    if(
$path==""){$path="1";}
    if(
$addpage<'1'){$addpage="1";}
    
$line ="$nazvanie: ";      
    
$pages ceil($lines/$addpage);
    
$onlug = (int)($onlug/2);        
    for(
$i=1$i <= $pages$i++){
     if(
$pages $pages-$path and $path <= $pages){
         
$e = ($i*$addpage)-$addpage;
         if(
$i=="1"){$e++;}
         if(
$addpage=="1" and $i!="1"){$e++;}
          if( 
$path == $i  )   {
             
$second=$addpage*$path
             
$first=$second-$addpage;
             if(
$second $lines){$second $lines;} 
             if(
$second "0"){$second "0";} 
             
$line.= "\n$razdle<font color=ff0000>$e</font>";
             }
         if( 
$onlug+$path+$i and $path-$onlug-$i and $path != $i)  {
          
$line.= "\n$razdle<a href=\"$url?$twt=$i";
          
$line.= "\" title=\"$perp $i\">$e</a>";
         }
         if( 
$onlug+$path+== $i){
         
$line.= "\n<a href=\"$url?$twt=$i";
         
$line.= "\" title=\"$perp $i\"> >></a>";
         } 
         if( 
$path-$onlug-== $i){
         
$line.= "\n<a href=\"$url?$twt=$i";
         
$line.= "\" title=\"$perp $i\"><< </a>";
         }
         if( (
2*$onlug)+$path+== $i){
         
$line.= "\n<a href=\"$url?$twt=$i";
         
$line.= "\" title=\"$perp $i\">...</a>"
         } 
         if( 
$path-(2*$onlug)-== $i){
         
$line.= "\n<a href=\"$url?$twt=$i";
         
$line.= "\" title=\"$perp $i\">...</a>";
         }
       }
    }
   if(
strlen($line)>"11"){return $line = array($line,$first,$second); }
   else{ return 
FALSE; }
  }


// есди есть данные в командной строке, то выводим их
if (isset($_GET))    {foreach ( $_GET as $key => $value )    {$$key=$value;}}                                    
 
// вставляем верхний шаблон html кода
#include("top.htm");       

// если не указана какая страница, то выводим в программу, что онв первая
 
if($page==""){$page="1";}

// считываем базу в массив строк, в нашем случае база называется 'anek.dat'

$general=@file('anek.txt');

// считаем сколько всего строк в базе
 
$lines=count($general);

// говорим, что исполняемый файл  'help.php', называйте его как хотите
 
$adres 'help.php';

/* вставляем данные в функцию, где 
   "Анекдот" - название разбивки
   $page - в командной строке будет отображать текущую навигацию,
   передается автоматически при работе функции,
   10 - посколько анекдотов показывать, 
   5- по сколько показывать навигационных страничек
   $lines -количество всех анекдотов в базе
   $adres - исполняемый php файл
   'page' - должно по буквам совпадать со словом разбивки 
   в командной строке '$page', но без знака доллара
   то есть слова $page и 'page' во вставке далее в функцию меняйте как хотите,
   но не забыватй у последнего слова убирать '$'
   Все это дело вставляем в функцию
*/
 
$line_arr navigator("Анекдот",$page,10,5,$lines,$adres,'page');

// в итоге получается $line - линия навигации 
 
$line   $line_arr[0];

// какой первый анекдот выводить, именно на этой страничке
 
$first  $line_arr[1];

// какой последний анекдот выводить, именно на этой страничке
 
$second $line_arr[2];

/* проверяем есть ли такая страница в базе, если есть, то 
   печатаем саму линию навигации, если нет выводим "Такой странички нет в базе".
   Поставьте в командной строке броузера "help.php?page=1300", то есть
   пользователь сам поставил страницу, которой нет и вы увидите результат
*/ 
 
if($line != ''){
   echo
"<p><font face=Verdana size=2 color=000080>$line</font> \n </p>";
   }   
 else{
      echo
"Такой странички нет в базе.......\n
          <br><a href=help.php>вернуться на первую страницу</a>"
;
     }


/* дошли до вывода самих анекдотов, они выводятся в обратном порядке
   в базе они размещены так: 'анекдот::дата::'
   строка ниже дает нам возможность дабыть сами анекдоты по строкам
   list($message,$date)=explode("::", $general[$i]);
   $message - сам анекдот
   $date - дата добавления анекдота, но ее мы выводить не будем
   $nomber - номер очередного анекдота
   в конце цикла печатаем сам анекдот
   echo"<p align=justify><font color=000080>$nomber.</font> $message</p>\n";
   послеэтого цикл повторяется, пока $first и $second будут еще
   удовлетворять условиям, то есть первый и последний анекдот, именно на 
   этой странице, то есть это ограничители, которые ранее мы определили
*/
for ( $i $lines-$first-1$i >= $lines-$second$i--)
  {
  list(
$message,$date)=explode("::"$general[$i]);
  
$nomber=$lines-$i
  echo
"<p align=justify><b>$nomber.</b> $message</p>\n";
  }


// еще раз печатаем линию навигации, но уже внизу
 
echo"<p><font face=Verdana size=2 color=000080>$line</font> \n </p><p>\n </p>";

// вставляем нижний шаблон html текста
#include("end.htm"); 
?>


Взято отсюда http://omsk777.ru/all.php?act=navigat
Или сразу скачать полный скрипт http://omsk777.ru/all.php?act=scrypt&scrypt=navigator&nomer=14

   
 
 автор: Denandi   (25.06.2007 в 05:18)   письмо автору
 
   для: BaSh   (24.06.2007 в 23:16)
 

Угу BaSh, спасибо - буду разбираться..

   
 
 автор: Trianon   (25.06.2007 в 09:53)   письмо автору
 
   для: Denandi   (25.06.2007 в 05:18)
 

Объясните вторую из этих строк.


$massiv=file("text.txt");
$abc=explode("^^", $massiv);


что значит разбить массив?

   
 
 автор: Denandi   (26.06.2007 в 00:43)   письмо автору
 
   для: Trianon   (25.06.2007 в 09:53)
 

Привет всем!
Я делал без implode, просто заранее формировал ...
$abc ="$msg.^^.$email.^^.$name.^^.$data. \n\r";
потом это должно дробится ...переворачиваться и выводиться циклом...:))
___________________________
вот последний код-рабочий все переворачивает, дробит, выводит... но мне надо что бы вывод на стр был только 10 сообщений --а не весь массив!! :)
_________________________
$massiv=join("",file("text.txt"));
$q=explode("^^",$massiv);
$q=array_reverse($q);
if($q > 0){
for($i=count($q); $i>=10; $i--)
print $q[$i];
}

-----------------------------------
Народ, кто знает.........
почему эта честь кода НЕ ОТСЧИТЫВАЕТ ДО 10 а, просто тупо
выводит весь массив???????

   
 
 автор: sim5   (26.06.2007 в 07:38)   письмо автору
 
   для: Denandi   (26.06.2007 в 00:43)
 

print $i покажет.

   
 
 автор: bronenos   (26.06.2007 в 08:26)   письмо автору
 
   для: Denandi   (24.06.2007 в 22:59)
 

Потёмки? при чем я? :D

   
 
 автор: Denandi   (26.06.2007 в 22:51)   письмо автору
 
   для: bronenos   (26.06.2007 в 08:26)
 

:)))))...... bronenos..... Я имел ввиду, Разбираться в чужем коде, это как рыться в чужой башке - ПАТЕМКИ!!!!! :))
Лично к тебе это не относится.. но, твою функию обязательно обкатаю! :)) Спасибо за помощь!

   
 
 автор: KEPZ   (26.06.2007 в 17:02)   письмо автору
 
   для: Denandi   (23.06.2007 в 13:33)
 

на http://wr-script.ru/ есть скрипт гостевой... глянь там... как раз для тебя..

   
 
 автор: indexer   (27.06.2007 в 15:10)   письмо автору
 
   для: Denandi   (23.06.2007 в 13:33)
 

Гостевая на файлах бред, как и все остальное на файлай. Неужели мускула нет?

   
 
 автор: Denandi   (27.06.2007 в 18:13)   письмо автору
 
   для: indexer   (27.06.2007 в 15:10)
 

Гостевая на файлах бред, как и все остальное на файлай. Неужели мускула нет?Так никто и не спорит...это так, ради квалификации..
Которая как понятна - слаба.>

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования