Forum Webscript.Ru
Программирование => PHP => Тема начата: ВиталиЧ от 05 Февраля 2009, 00:18:05
-
В конце концов нашёл для себя оптимальный формат хранения данных в файле:
1x|2z|3y
| - соотв. как разделитель.
Необходима помощь - я никак не могу допереть, скажем, как к моему скрипту вывода можно прикрутить постраничный вывод.
Мой код:
$file = file("filename.txt");
$file = array_reverse($file);
$str = 5; //запускаем цикл, который сделает то количество //итераций, которое мы указали в $str
for ($i = 0; $i < $str; $i++) { //создаем массив из строки, разбивая ее указанными в файле символами "|".
$mess = explode("|",$file[$i]);
echo "1 - $mess[0], 2 - $mess[1], 3 - $mess[2], 4 - $mess[3] \\n"; }
К нему хотелось бы прикрутить (или иным методом реализовать постраничн. вывод) сей код, нешёл не так давно:
$str="This chapter provides a series of brief lessons that guide you through the process of creating a simple static website using the visual authoring tools in Macromedia Dreamweaver MX. For information on using the hand-coding tools in Dreamweaver. See Editing code in Dreamweaver; for information on creating a database-driven dynamic web application, see. This section provides instructions for two common system configurations—one where Windows 2000 or Windows XP Professional is installed on your hard disk. And one where Windows 2000 or Windows XP Professional is installed on a remote computer. If you don’t want to use these configurations, see Setting Up a Web Application. The following illustration shows the two configurations described in this section."; $char_one_page=3;//строк на одну страницу $strArr=preg_split("(\\.\\s|\\.\\n)",$str); $lenstr=count($strArr); $page=ceil($lenstr/$char_one_page); $_GET[\'p\']=($_GET[\'p\'])?$_GET[\'p\']:1; $q=$_GET[\'p\']*$char_one_page; $tmp1=($_GET[\'p\']*$char_one_page)-$char_one_page; for($i=$tmp1;$i<$tmp1+$char_one_page;$i++){ echo queryLight($strArr[$i])."."; } echo "
Продолжение: "; for($i=0;$i<$page;$i++){ echo "".(1+$i)." | "; } function queryLight($str){ $q="code Professional the"; $qarr=explode(" ",$q); for($i=0;$i$1",$str); } return $str; } ?>
Заранее спасибо за пояснения!
-
Код какой-то ненитабельный код вышел. Вы могли бы его разкомментировать?
-
Попробуй использовать
$file = array_slice ($file, $_GET[\'start\'], 5);
а через переменную ?start=5 (УРл) будешь передавать со какой страницы начинать.
-
Из файла вида:
Один|Два|Три
выгружаю по страницам, благо разобрался б/менее:
$base="news/news.txt"; // Файл где находиться инфа
$general=file($base); //Заносим весь наш файл в массив
$lines_file=file($base); //Еще разочек занесем наш файли в массив
$lines=count($lines_file); //Считаем общее количество записей в файле, ну т.е. строк.
$pmessages = file("$base");
$onlyg=5; //Сколько записей выводить на страницу
/*
Тут начинаеться самая главная часть нашего файла
Просчитываем странички
*/
if (@$page == "" or $page < 0) //Если переменная $page равна пустоте, или она меньше 0
{
$page = "1"; //Тогда переменнная $page=1
}
$first = count($pmessages) - ($onlyg * ($page - 1));
$second = count($pmessages) - ($onlyg * $page) + 1;
if ($second < 1)
{
$second = 1;
}
$pages = (int) ((count($pmessages) + $onlyg) / $onlyg); //Считаем общее количество страниц
for ($onlyg = 1; $onlyg <= $pages; $onlyg++) //Загоняем все в цикл, т.е. присваемваем переменно $onlyg значение
//1 и пока она меньше или равна $pages увеличиваем ее на единичку.
{
if ($onlyg != $page) //Если $olyg не равняется $page
{
//То наши ссылки имеют такой вид
$line .= "[ $onlyg ]";
}
if ($onlyg == $page) //А если равняеться
{
//То такой
$line .= "[ $onlyg ]"; //Ну т.е. в выводим не в виде ссылки ту страницу где сейчас находиться пользователь
}
}
/*
Теперь выводим саму информацию
*/
for ( $i = $first-1; $i >= $second-1; $i--)
{
$mess = explode("|",$general[$i]);
$id = $i;
$id++;
//ну а дальше уже выводим наши данные
echo "
$mess[0] $mess[1]
$mess[2]
\\n";
}
echo "$line
"; //Выводим ссылки
echo "Всего статей - $lines."; //Выведем информацию пользователю о общем количестве записей
?>
Вывожу по 5 на страницу... пишет внизу: ВСЕГО НОВОСТЕЙ 10, страниц - 3 (????!!!!)... хмммм...
+ при переходе на след. страницу, отображает, всё равно, последние 5 новостей
-
Чувствуется надрыв в этом всем. Искренность, кровью выписанные строки. Эх.
-
$base="news/news.txt"; // Файл где находиться инфа
$general=file($base); //Заносим весь наш файл в массив
$lines_file=file($base); //Еще разочек занесем наш файли в массив :-)
$lines=count($lines_file); //Считаем общее количество записей в файле, ну т.е. строк.
$pmessages = file("$base");
$onlyg=5; //Сколько записей выводить на страницу
/*
Тут начинаеться самая главная часть нашего файла
Просчитываем странички :-)
*/
$page=($_GET[\'page\']);
if (@$page == "" or $page < 0) //Если переменная $page равна пустоте, или она меньше 0
{
$page = "1"; //Тогда переменнная $page=1
}
$first = count($pmessages) - ($onlyg * ($page - 1));
$second = count($pmessages) - ($onlyg * $page) + 1;
if ($second < 1)
{
$second = 1;
}
$pages = (int) ((count($pmessages) + $onlyg) / $onlyg); //Считаем общее количество страниц
for ($onlyg = 1; $onlyg <= $pages; $onlyg++) //Загоняем все в цикл, т.е. присваемваем переменно $onlyg значение
//1 и пока она меньше или равна $pages увеличиваем ее на единичку.
{
if ($onlyg != $page) //Если $olyg не равняется $page
{
//То наши ссылки имеют такой вид
$zline .= "[ $onlyg ]";
}
if ($onlyg == $page) //А если равняеться
{
//То такой
$zline .= "[ $onlyg ]"; //Ну т.е. в выводим не в виде ссылки ту страницу где сейчас находиться пользователь
}
}
/*
Теперь выводим саму информацию
*/
for ( $i = $first-1; $i >= $second-1; $i--)
{
$mess = explode("|",$general[$i]);
$id = $i;
$id++;
//ну а дальше уже выводим наши данные
echo "
$mess[0] $mess[1]
$mess[2]
\\n";
}
echo "$zline
"; //Выводим ссылки
echo "Новостей: $lines"; //Выведем информацию пользователю о общем количестве записей
?>
разобрался. все работает.
Остался только 1 вопрос, изучение которого уже заняло у меня 1,5 безрезультатных часа...
Хотелось бы считать (и выводить) только непустые строки...
Заранее Спасибо.