Разбитие списка новостей

Статус
В этой теме нельзя размещать новые ответы.

empty

Guest
PHP:
//инициализируем пустой массив
$array = array();
//открываем нужную нам директоию
$od = opendir("mydir");
//читам файлы из директории
while(($r=readdir($od))!==false){
//если это не ссылки на текущую и не на родительскую директорию, то
	if($r!="." && $r!="..")
//заносим имена файлов в массив
		$array[] = $r;
}
понимэ?
 

empty

Guest
О чем ты думаешь? Ты про циклы слышал?
Я тебе код написал, ты понял что он делает?
 

ZizA

Guest
Автор оригинала: rotoZOOM
Названия файлов вот так в массив кладут:
PHP:
$mas[]=$filename;
Вот млин.. тупая книга (у меня тут учебник рядом)...

Сижу думаю, почему элементы в массив не добавляются.. оказывается "=" надо ставить... а в книге опечатка :))
 

empty

Guest
а что в книге написано? впрочем неважно. поместил в массив свои файлы?

-~{}~ 04.02.05 17:06:

Эх, Зюзик-Зюзик...
 

ZizA

Guest
Автор оригинала: empty
а что в книге написано? впрочем неважно. поместил в массив свои файлы?

-~{}~ 04.02.05 17:06:

Эх, Зюзик-Зюзик...
Ну все ясно теперь мне.. твой скрипт работает.. и что теперь дальше... ?

Не надо меня винить.. я час наза узнал что такое массив
:rolleyes:
 

ZizA

Guest
Автор оригинала: empty
гы... тогда я так понимаю, что про цикл for и конструкцию if ты тоже не слышал ни разу?
неее... это-то я знаю :)

Вот что дальше теперь... у меня есть массив, который содержит имена файлов... мне теперь нужно,чтобы страница разбивалась на несколько частей и каждая часть включала по 20 новостей из массива т.е. с 0 по 19... на след... с 20 по 39... и т.д.
 

empty

Guest
ZizA
умница.

у тебя уже массив, предположим его зовут $array, который в себе содержит имена всех твоих файлов, которые ты подсчитал вышеприведённым мною скриптом. Массив имеет такую структуру:

PHP:
$array[0] = "Имя_твоего_файла_с новостями_1";
$array[1] = "Имя_твоего_файла_с новостями_2";
$array[2] = "Имя_твоего_файла_с новостями_3";
...
$array[100] = "Имя_твоего_файла_с новостями_99";
тебе нужно вывести на страницу 20 имён файлов новостей, начиная с $array[0] и до $array[19] (всего 20). Что нужно сделать? Нужно воспользоваться циклом, например циклом FOR, который выведет тебе при каком-то условии новости с такой-то по такую-то.

Догоняй....
 

ZizA

Guest
Автор оригинала: empty
Догоняй....
Это мне тоже ясно.. 20 новостей я вывел :) Я и до этого так выводил, только без массива

Что теперь?

Как вывести другие 20 на другой странице


1 2 3 4 5 6
 

empty

Guest
Теперь давай договоримся: твой скрипт будет выводить страницы с новостями исходя из значения GET-переменной page ($_GET["page"]), которая будет при нажатии на каждую ссылку 1 2 3 4 5 6 передавать сценарию своё значение.
Т.е. нажали на цифру 3, в скрипт поступила переменая $_GET["page"] = 3

сначала сформулируем назначение переменной $_GET["page"]: эта переменная будет формировать значение 2 переменных ($i и $j), которые в цикле будут определять с какого номера и по какой нужно вывести элементы массива.

Например, если скрипту передали $_GET["page"]=1, то
$i должна быть равна 0, $j = 20 (т.е. первая страница - первые 20 записей - с 0 элемента масива до 19 включительно)

таким образом мы понимаем, что таблица соотношений должна быть такого рода:
PHP:
$_GET["page"] | $i | $j |
-------------------------------
1             | 0 | 20 |
-------------------------------
2             | 21 | 40 |
--------------------------------
3             | 41 | 60 |
--------------------------------
и так далее.

ТЫ МОЖЕШЬ исходя из значения переменной $_GET["page"] получить значения переменных $i и $j (что б они были в тех же пропорциях, как и в таблице), зная, что лимит равен 20 новостям на страницу?
 

ZizA

Guest
Автор оригинала: empty
ТЫ МОЖЕШЬ исходя из значения переменной $_GET["page"] получить значения переменных $i и $j (что б они были в тех же пропорциях, как и в таблице), зная, что лимит равен 20 новостям на страницу?
Во-первых, как получить число элементов в массиве? :)

Честно сказать.. я смысл работы понял, только вот...

А вот если так вот?

PHP:
<?php
$num= 100;  // Число записей всего. 
$perpage = 20; // Кол-во записей на странице. 
$pages_count = @ceil($num/$perpage); 
$pages .= 'Страницы:'; 
  for($j=1;$j<=$pages_count;$j++) 
 { 
 
          if ($_GET['page'] != $j) 
          { 
             $pages .= ' <a href="?page='.$j.'"><b>'.$j.'</b></a> '; 
          } 
          else 
          { 
             $pages .= ' <b>'.$j.'</b> '; 
          } 
 }
?>
[\PHP]

Все... я домой :) Из дома еще помучаюсь :)
 

empty

Guest
Во-первых, как получить число элементов в массиве?
$all = count($array);
функция count - возвращает кол-во элементов в массиве.


Отлично. Этим ты создал строку-навигацию. Правильно.
Теперь делов то - нужно научиться правильно формировать переменные $i и $j - как в таблице, с такими пропорциями и for или while циклом вывести всё, от $i до $j.
 

ZizA

Guest
Автор оригинала: empty
Отлично. Этим ты создал строку-навигацию. Правильно.
Теперь делов то - нужно научиться правильно формировать переменные $i и $j - как в таблице, с такими пропорциями и for или while циклом вывести всё, от $i до $j.
Ага... вот теперь и в этом проблема.

Как все это соединить? :)

Помоги плиз.. :) Последний напряг
 

empty

Guest
ZizA
Как все это соединить?
я же написал тебе всё почти:
Теперь делов то - нужно научиться правильно формировать переменные $i и $j - как в таблице, с такими пропорциями и for или while циклом вывести всё, от $i до $j.
напряги мозг! это не сложно.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху