$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"); получает массив, для того что бы этот скрипт заработал нужно посмотреть что вернёт функция, сделать это можно следующим способом, поставь это после функции
Результат скопируй и кинь сюда.
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 строк, у тебя не то что сервер повиснет у тебя даже и сам виндовс задумается когда будет открывать подобное...
Всё дело в том, что нужно делать правильно, а в данном случаи тебе работать с базой нужно, файлы не для этого, представь если у тебя в файле будет 1 000 000 строк, у тебя не то что сервер повиснет у тебя даже и сам виндовс задумается когда будет открывать подобное...
Спустя 47 минут, 15 секунд (24.01.2011 - 18:04) krol-88 написал(а):
Согласен, но сайт и рассчитан на 50-100страниц максимум да и готов он уже постраничную навигацию только вот хотелось бы прикрутить к нему