[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Нужна помощь с построничной навигацией
krol-88
Здравствуйте, нашел скрипт постороничной навигации

$arr=file("bd.dtb");

//всего сообщений
$all=count($arr);

//число сообщений на странице
$pnumber=5;

echo'<p>всего элементов: '.$all.'</p>';

//номер страницы
$page=(isset($_GET['page'])) ? (int)$_GET['page'] : 1;

//число страниц
$num_pages=ceil($all/$pnumber);

//начальная позиция
$start=$page*$pnumber-$pnumber;

//проверка номера страницы
if ($page > $num_pages || $page < 1)
{
$page=1;
$start=0;
}

if ($all)
{
//элементы выводятся в обратном порядке!!
for ($i=$all-$start-1; $i>=$all-$start-$pnumber; $i--)
{
if (!isset($arr[$i])) break;
echo '<p>';
echo $arr[$i];
echo '</p>';
}
//навигация
echo '<p>';

for($pr = '', $i =1; $i <= $num_pages; $i++)
{
echo $pr=(($i == 1 || $i == $num_pages || abs($i-$page) < 2) ? ($i == $page ? " [$i] " : ' <a href="'.$_SERVER['SCRIPT_NAME'].'?page='.$i.'">'.$i.'</a> ') : (($pr == ' ... ' || $pr == '')? '' : ' ... '));
}

echo '</p>';
}
else
{
echo '<p>элементов нет</p>';
}


Но проблема в том что он выводит все что есть в текстовой базе bd.dtb, мне необходимо это как то разбить по группам.
Тоесть у меня есть база такого плана:

Главная|/index||Краткое описание||menu|Главная страница|Главная страница|Главная страница
Новость1|/news1||Краткое описание новости|img.jpg|news|Новость1|Новость1|Новость1
Cтатья1|/news1||Краткое описание статьи|img.jpg|articles|Cтатья1|Cтатья1|Cтатья1
Новость2|/news2||Краткое описание новости2|img.jpg|news|Новость2|Новость2|Новость2

Так вот мне например нужно найти например строки с новостями которые обозначены как news и отбать это уже скрипту на выполнение
но здесь у меня возникли проблемы я нахожу строки с новостями

$file = file("bd.dtb");
$count = count($file);

for($i = 0; $i < $count; $i++) {
$news = explode("|", $file[$i]);
if($news['5']=='news') {
echo "<b>".$news['0']."</b> на строке ".$i."<br>";
}
}


Но вот дальше знаний не хватает так в php я не силен, я так понимаю нужно загнать даные с новостями в массив и уже отдавать это скрипту но что то не получается у меня это сделать, подскажите пожалуйста как это организовать?



Спустя 1 минута, 34 секунды (24.01.2011 - 15:36) Evilsoul написал(а):
иди сюда

Спустя 15 минут, 19 секунд (24.01.2011 - 15:51) krol-88 написал(а):
Ну это не совсем то что мне нужно там используется mysql а у меня база хранится в файлах да и скрипт у меня есть мне только нужно как то выбрать нужные строки и отдать и х скрипту постраничной навигации

Спустя 15 минут, 5 секунд (24.01.2011 - 16:06) Evilsoul написал(а):
1-е лучше так не делать как ты делаешь, если ты называешь файлы базой то тебе и нужно работать с базой;
2-е если учишься учишь, по ссылке которую я дал, там проще всего разобраться в ПШП, я сам так учился.
3-е функция file("bd.dtb"); получает массив, для того что бы этот скрипт заработал нужно посмотреть что вернёт функция, сделать это можно следующим способом, поставь это после функции
echo '<pre>';
print_r($arr);
echo '</pre>';

Результат скопируй и кинь сюда.

Спустя 19 минут, 14 секунд (24.01.2011 - 16:25) krol-88 написал(а):
Вернула вот это:

Array
(
[
0] => Главная|/index||Краткое описание||menu|Главная страница|Главная страница|Главная страница

[1] => Новость1|/news1||Краткое описание новости|img.jpg|news|Новость1|Новость1|Новость1

[2] => Cтатья1|/news1||Краткое описание статьи|img.jpg|articles|Cтатья1|Cтатья1|Cтатья1

[3] => Новость2|/news2||Краткое описание новости2|img.jpg|news|Новость2|Новость2|Новость2
)



Но мне из этого массива нужно выдернуть новости потом вставить их в новый массив и уже потом отдать скрипту постраничной навигации, (если я правильно понимаю) и вот это я не могу сделать

Спустя 7 минут, 12 секунд (24.01.2011 - 16:33) krol-88 написал(а):
Новости я выбираю так
$file = file("db.dtb");
$count = count($file);
for($i = 0; $i < $count; $i++){
$news = explode("|", $file[$i]);
$a=0;
if($news['5']=='news'){
echo "Новость "; echo "на строке ".$i."<br>";
echo '<pre>';
print_r($news);
echo '</pre>';
}
}


Получается это:
Новость на строке 1

Array
(
[
0] => Новость1
[1] => /news1
[2] =>
[
3] => Краткое описание новости
[4] => img.jpg
[5] => news
[6] => Новость1
[7] => Новость1
[8] => Новость1

)

Новость на строке 3

Array
(
[
0] => Новость2
[1] => /news2
[2] =>
[
3] => Краткое описание новости2
[4] => img.jpg
[5] => news
[6] => Новость2
[7] => Новость2
[8] => Новость2
)

А вот загнать эти новости в новый массив и отдать скрипту у меня не выходит

Спустя 3 минуты, 29 секунд (24.01.2011 - 16:36) Evilsoul написал(а):
выдернуть новости так:
echo $arr[1].'<br>'.$arr[3];

отдать в массив так, другими словами ты его заново перепишешь:
$arr = array($arr[1], $arr[3]);


Спустя 16 минут, 19 секунд (24.01.2011 - 16:52) krol-88 написал(а):

Ок, но как мне в цикле индексы новостей получить, я именно на этом остановился, так не подходит:
$file = file("db.dtb");
$count = count($file);
for($i = 0; $i < $count; $i++){

$arr = explode("|", $file[$i]);
if($arr['5']=='news'){
echo $arr[$i].'<br>';

}
}



Спустя 10 минут, 1 секунда (24.01.2011 - 17:02) Evilsoul написал(а):
Ну тогда учи регулярные выражения по ссылке что я тебе дал, там есть, а как седлать я не подскажу так как сам ещё не учил регулярку.
Тебе нужно вытащить строки в которых есть определенные совпадения, допустем это будет слово Новости.

Спустя 3 минуты, 34 секунды (24.01.2011 - 17:06) krol-88 написал(а):
Ок и на этом спасибо

Спустя 10 минут, 31 секунда (24.01.2011 - 17:16) Evilsoul написал(а):
Пожалуйста, а если бы ты делал это с базой у тебя подобных вопросов не возникало бы.
Всё дело в том, что нужно делать правильно, а в данном случаи тебе работать с базой нужно, файлы не для этого, представь если у тебя в файле будет 1 000 000 строк, у тебя не то что сервер повиснет у тебя даже и сам виндовс задумается когда будет открывать подобное...

Спустя 47 минут, 15 секунд (24.01.2011 - 18:04) krol-88 написал(а):
Согласен, но сайт и рассчитан на 50-100страниц максимум да и готов он уже постраничную навигацию только вот хотелось бы прикрутить к нему
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.