| |
|
|
| | Всем привет!
Очень требуется помощь.
Скрипт "постраничная навигация" из книги "PHP5" Кузнецова М. и Симдянова И.
Подскажите тупому, почему не определяется "$temp"?
Как начинающий пользуюсь Денвером (все по умолчанию), может в нем проблема?
Только, пожалуйста, не посылайте меня куда нибудь еще, а просто скажите где ошибка.
Заранее благодарен.
------------------------------------------------------------------------
<?php
// Имя файла
$filename = "text.txt";
// Число позиций на странице
$pnumber = 3;
// Открываем файл для чтения
$bufer = file_get_contents($filename);
// Находим все строки при помощи регулярного выражения
preg_match_all("#([\d]+) ([^\n]+)(\n|$)#U",
$bufer,
$out,
PREG_PATTERN_ORDER);
// Формируем промежуточный массив
for($i = 0; $i < count($out[1]); $i++)
{
$temp[] = trim($out[2][$i]);
}
// Проверяем передан ли номер текущей страницы
if(isset($_GET['page'])) $page = $_GET['page'];
else $page = 1;
// Число страниц
$total = count($temp);
$number = (int)($total/$pnumber);
if((float)($total/$pnumber) - $number != 0) $number++;
$start = (($page - 1)*$pnumber + 1);
$end = $page*$pnumber + 1;
if($end > $total) $end = $total;
// Выводим содержимое страниц
for($i = $start; $i < $end; $i++)
{
echo $temp[$i]."<br>";
}
// Постраничная навигация
for($i = 1; $i <= $number; $i++)
{
// Если это произвольная страница
if($i != $number)
{
if($page == $i)
{
echo "[".(($i - 1)*$pnumber + 1)."-".$i*$pnumber."] ";
}
else
{
echo "<a href=$_SERVER[PHP_SELF]?page=".$i.">[".
(($i - 1)*$pnumber + 1)."-".$i*$pnumber."]</a> ";
}
}
// Если это последняя страница заменяем последнюю цифру
// максимальным числом позиций в массиве $temp
else
{
if($page == $i)
{
echo "[".(($i - 1)*$pnumber + 1)."-".($total - 1)."] ";
}
else
{
echo "<a href=$_SERVER[PHP_SELF]?page=".$i.">[".
(($i - 1)*$pnumber + 1)."-".($total - 1)."]</a> ";
}
}
}
?>
----------содержимое файла"text.txt"------------
програмирование
програмирование на PHP
програмирование на JavaScript
програмирование на ASP.NET
програмирование на Java
програмирование на Perl
програмирование на C++
програмирование на Pascal
програмирование на Fortran
програмирование на Assembler
|
| |
| |
|
|
| |
|
|
| |
для: bax
(30.12.2007 в 00:24)
| | |
<?
preg_match_all("|(.*)\n|", $bufer, $out, PREG_PATTERN_ORDER);
// Формируем промежуточный массив
for($i = 0; $i < count($out[1]); $i++)
{
$temp[] = trim($out[1][$i]);
}
?>
|
| |
| |
|
|
| |
|
|
| |
для: Джэф
(30.12.2007 в 01:38)
| | | На каком основании вы так решили ошибку? | |
| |
|
|
| |
|
|
| |
для: bax
(30.12.2007 в 00:24)
| | | Вот это тот случай когда блокирование вывода предупреждений (по этой переменной) не страшно. Просто происходит заполнение массива, до его объявления:
<?
//ели бы он был объявлен заранее
$temp = array();
// Формируем промежуточный массив
for($i = 0; $i < count($out[1]); $i++) {
//то здесь ругаться уже будет
$temp[] = trim($out[2][$i]);
}
?>
|
| |
| |
|
|
| |
|
|
| |
для: bax
(30.12.2007 в 00:24)
| | |
// Находим все строки при помощи регулярного выражения
preg_match_all("#([\d]+) ([^\n]+)(\n|$)#U",
$bufer,
$out,
PREG_PATTERN_ORDER);
|
Это выражение не соответствует тексту, содержащемуся в файле..
Попробуйте исправить текст в файле на
1 програмирование
2 програмирование на PHP
3 програмирование на JavaScript
4 програмирование на ASP.NET
* * * * * * * * * *
|
Либо выражение на
"#([\d]+)?\s*([^\n]+)(\n|$)#U"
|
| |
| |
|
|
| |
|
|
| |
для: kasmanaft
(30.12.2007 в 08:55)
| | | А еще лучше выкинуть это:) file, explode - наверное быстрее будет и без проблем. | |
| |
|
|
| |
|
|
| |
для: sim5
(30.12.2007 в 09:06)
| | | Спасибо.
Щас буду пробовать | |
| |
|
|