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


вот код :


<?php



/**
* The guest book
* Гостевая книга
* @author IT studio IRBIS-team
* @copyright © 2009 IRBIS-team
*/
/////////////////////////////////////////////////////////
/**
* We establish the charset and level of errors
* Устанавливаем кодировку и уровень ошибок
*/
header("Content-Type: text/html; charset=utf-8");
error_reporting(E_ALL);

/////////////////////////////////////////////////////////////
// ADJUSTMENT
// НАСТРОЙКИ
/////////////////////////////////////////////////////////////
/**
* Quantity of posts on page
* Количество постов на странице
*/
define('NUM_POSTS', 5);


/////////////////////////////////////////////////////////////
// FUNCTIONS
// ФУНКЦИИ
/////////////////////////////////////////////////////////////
/**
* Function of reading of a directory
* Функция чтения директории
* @param string
* @return array
*/
function dirScan($dir)
{
static $files;

if(empty($files))
{
$files = scandir($dir);
$files = array_diff($files, array('.', '..'));
}

$files = count($files)?$files:array('1');

return $files;
}

/**
* Function of generation of the menu of paginal navigation
* Функция генерации меню постраничной навигации
* @param string
* @return string
*/
function pageMenu($page)
{
// Получаем список файлов (номера)
$files = dirScan('data');
// Сортируем массив по порядку
natsort($files);

$menu = ' | ';
// В цикле формируем ссылки
foreach($files as $num)
if($page == $num)
$menu .= '<strong>'. $num .'</strong> | ';
else
$menu .= '<a href="?page='. $num .'">'. $num .'</a> | ';

return $menu;
}

/**
* Replacement function bb-tags and smilies
* Функция замены bb-тегов и смайликов
* @param string
* @return string
*/
function bbTags($text)
{
$bb = array(
'',
'
',
'',
'
',
'',
'
',
'',
'
',
'[smile.gif]',
'[sad.gif]',
'[wink.gif]',
'[biggrin.gif]'
);

$tag = array(
'<b>',
'</b>',
'<i>',
'</i>',
'<s>',
'</s>',
'<u>',
'</u>',
'<img src="smailes/1.gif" />',
'<img src="smailes/2.gif" />',
'<img src="smailes/3.gif" />',
'<img src="smailes/4.gif" />'
);

return str_ireplace($bb, $tag, $text);
}


/////////////////////////////////////////////////////////////////
// VARIABLES
// ПЕРЕМЕННЫЕ
/////////////////////////////////////////////////////////////////
// Переменная для постранички
$page = !empty($_GET['page']) ? $_GET['page'] : 1;
$text1 = !empty($_POST['text1']) ? $_POST['text1'] : null;
$text2 = !empty($_POST['text2']) ? $_POST['text2'] : null;
$info = array();
$posts = array();


/////////////////////////////////////////////////////////////////
// SCRIPT
// СКРИПТ
/////////////////////////////////////////////////////////////////

if(!empty($_POST['ok']))
{
if(!$text1)
$info[] = 'Текстовое поле не заполнено.';

if(!$text2)
$info[] = 'Текстовая область не заполнена.';

if(count($info) == 0)
{

$file = max(dirScan('data'));

if(file_exists('data/'. $file))
{
$posts = unserialize(file_get_contents('data/'. $file));
$keys = array_keys($posts);
$id = max($keys) + 1;
$num = count($posts);
}
else
$num = $id = 1;
// Здесь меняем номер на константу
if($num >= NUM_POSTS)
{
++$file;
unset($posts);
}

$posts[$id]['date'] = date('d-m-Y');
$posts[$id]['name'] = $text1;
$posts[$id]['mess'] = $text2;

file_put_contents('data/'. $file, serialize($posts));
// Перенаправляем браузер на последнюю страницу
header('location: http://'. $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] .'?page='. $file);
exit();
}
}
else
$info[] = 'Напишите что-нибудь';

/////////////////////////////////////////////////////////////////
// VIEW
// ОТОБРАЖЕНИЕ
/////////////////////////////////////////////////////////////////

?>
<form action="" method="post">
Логин:<br />
<input name="text1" type="text" value="<?php echo htmlspecialchars($text1) ?>"/><br />
Сообщение:<br />
<textarea name="text2" cols="40" rows="10"><?php echo htmlspecialchars($text2);?></textarea><br />
<input name="ok" type="submit" />
</form>
<div style="padding-left:50px">

<?php
// отрисовываем меню навигации. Еще одно - ниже
echo pageMenu($page);
?>
</div>
<?php

echo implode('<br>', $info) .'<br>';

if(file_exists('data/'. $page))
{
$posts = unserialize(file_get_contents('data/'. $page));

foreach($posts as $id => $post)
{
$date = $post['date'];
$name = htmlspecialchars($post['name']);
$mess = nl2br(bbTags(htmlspecialchars($post['mess'])));
?>
<div style="border:1px solid; width:70%; background-color:#66FFFF; min-height:100px; margin:5px; padding:5px">
<?php echo $date; ?> / <strong><?php echo $name; ?></strong>
<hr width="30%" align="left" />
<?php echo $mess; ?>
</div>
<?php
}
}
?>
<div style="padding-left:50px">
<?php echo pageMenu($page); ?>
</div>


если вас не затруднит объясните суть ошибки , заранее спасибо



Спустя 12 минут (28.06.2012 - 17:06) Денис777 написал(а):
как мне пишет денвер что ошибка где то тут :


{
$files = scandir($dir);
$files = array_diff($files, array('.', '..'));
}

Спустя 5 минут, 17 секунд (28.06.2012 - 17:12) twin написал(а):
Текст ошибки в студию

Спустя 8 минут, 12 секунд (28.06.2012 - 17:20) Денис777 написал(а):
twin


{
$files = scandir($dir);
$files = array_diff($files, array('.', '..'));
}

Спустя 9 минут, 27 секунд (28.06.2012 - 17:29) johniek_comp написал(а):
Денис777
biggrin.gif
прямо так и пишет?

Спустя 6 минут, 19 секунд (28.06.2012 - 17:36) Денис777 написал(а):
johniek_comp так и пишет , что ошибка на 17 и 18 линии

Спустя 1 минута, 48 секунд (28.06.2012 - 17:37) Денис777 написал(а):
вот код без коментов а то что то слишком большой ><


<?php


header("Content-Type: text/html; charset=utf-8");
error_reporting(E_ALL);

define('NUM_POSTS', 5);



function dirScan($dir)
{
static $files;

if(empty($files))
{
$files = scandir($dir);
$files = array_diff($files, array('.', '..'));
}

$files = count($files)?$files:array('1');

return $files;
}


function pageMenu($page)
{

$files = dirScan('data');

natsort($files);

$menu = ' | ';

foreach($files as $num)
if($page == $num)
$menu .= '<strong>'. $num .'</strong> | ';
else
$menu .= '<a href="?page='. $num .'">'. $num .'</a> | ';

return $menu;
}


function bbTags($text)
{
$bb = array(
'',
'
',
'',
'
',
'',
'
',
'',
'
',
'[smile.gif]',
'[sad.gif]',
'[wink.gif]',
'[biggrin.gif]'
);

$tag = array(
'<b>',
'</b>',
'<i>',
'</i>',
'<s>',
'</s>',
'<u>',
'</u>',
'<img src="smailes/1.gif" />',
'<img src="smailes/2.gif" />',
'<img src="smailes/3.gif" />',
'<img src="smailes/4.gif" />'
);

return str_ireplace($bb, $tag, $text);
}




$page = !empty($_GET['page']) ? $_GET['page'] : 1;
$text1 = !empty($_POST['text1']) ? $_POST['text1'] : null;
$text2 = !empty($_POST['text2']) ? $_POST['text2'] : null;
$info = array();
$posts = array();


if(!empty($_POST['ok']))
{
if(!$text1)
$info[] = 'Текстовое поле не заполнено.';

if(!$text2)
$info[] = 'Текстовая область не заполнена.';

if(count($info) == 0)
{

$file = max(dirScan('data'));

if(file_exists('data/'. $file))
{
$posts = unserialize(file_get_contents('data/'. $file));
$keys = array_keys($posts);
$id = max($keys) + 1;
$num = count($posts);
}
else
$num = $id = 1;

if($num >= NUM_POSTS)
{
++$file;
unset($posts);
}

$posts[$id]['date'] = date('d-m-Y');
$posts[$id]['name'] = $text1;
$posts[$id]['mess'] = $text2;

file_put_contents('data/'. $file, serialize($posts));

header('location: http://'. $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] .'?page='. $file);
exit();
}
}
else
$info[] = 'Напишите что-нибудь';



?>
<form action="" method="post">
Логин:<br />
<input name="text1" type="text" value="<?php echo htmlspecialchars($text1) ?>"/><br />
Сообщение:<br />
<textarea name="text2" cols="40" rows="10"><?php echo htmlspecialchars($text2);?></textarea><br />
<input name="ok" type="submit" />
</form>
<div style="padding-left:50px">

<?php

echo pageMenu($page);
?>
</div>
<?php

echo implode('<br>', $info) .'<br>';

if(file_exists('data/'. $page))
{
$posts = unserialize(file_get_contents('data/'. $page));

foreach($posts as $id => $post)
{
$date = $post['date'];
$name = htmlspecialchars($post['name']);
$mess = nl2br(bbTags(htmlspecialchars($post['mess'])));
?>
<div style="border:1px solid; width:70%; background-color:#66FFFF; min-height:100px; margin:5px; padding:5px">
<?php echo $date; ?> <strong><?php echo $name; ?></strong>
<hr width="30%" align="left" />
<?php echo $mess; ?>
</div>
<?php
}
}
?>
<div style="padding-left:50px">
<?php echo pageMenu($page); ?>
</div>

Спустя 4 минуты, 48 секунд (28.06.2012 - 17:42) fdr написал(а):
Денис777
А тегами оформить нельзя)))

Спустя 5 минут, 24 секунды (28.06.2012 - 17:48) fdr написал(а):
в каталоге нужно создать папку data)))

Спустя 35 секунд (28.06.2012 - 17:48) Денис777 написал(а):
fdr ?????? вы не сравнивайте себя с другими , говорю же учюсь только , как было в уроке сказано так и написал

Спустя 1 минута, 56 секунд (28.06.2012 - 17:50) twin написал(а):
\Что говорит интерпретатор? Что написано в браузере, когда запускаешь этот код?

Спустя 28 секунд (28.06.2012 - 17:51) Денис777 написал(а):
fdr точно , я забыл про нее совсем , 7 раз перечитал урок и не мог понять где ошибка , спасибо smile.gif

Спустя 58 секунд (28.06.2012 - 17:52) Денис777 написал(а):
twin спасибо , мне уже помогли smile.gif

Спустя 57 секунд (28.06.2012 - 17:52) fdr написал(а):
Денис777
Цитата
fdr ?????? вы не сравнивайте себя с другими

я имел в виду при добавление на форум, можно для красоты и наглядности оформить код тегами PHP, они находятся в редакторе, ниже списков)))

Спустя 3 минуты, 19 секунд (28.06.2012 - 17:56) Денис777 написал(а):
fdr я тут 7 дней еще не совсем освоил форум

Спустя 1 минута, 49 секунд (28.06.2012 - 17:58) fdr написал(а):
biggrin.gif Угу))))

Спустя 3 минуты, 49 секунд (28.06.2012 - 18:01) Денис777 написал(а):
а как сделать чтоб страниц навигаций было всего 15 допустим , а то у меня их выводиться я так понял безконечность , там написанно как сделать максимум сообщений на одной странице , а вот как осущетвить чтоб их самих было максимум 15 , а после бы остольные удалялись

Спустя 26 минут, 40 секунд (28.06.2012 - 18:28) twin написал(а):
А зачем? Там же написано - это учебный скрипт. Применять его на боевом сайте не след. Дальше есть полноценная гостевая на бд, там нет таких проблем.

Спустя 11 минут, 5 секунд (28.06.2012 - 18:39) Денис777 написал(а):
twin спс , сразу не увидел , не стал забигать вперед smile.gif с админкой что то немогу разобраться sad.gif

Спустя 1 час, 53 минуты, 47 секунд (28.06.2012 - 20:33) YVSIK написал(а):
Денис777 специально для тебя сделаю
<?php 

/**
* The guest book
* Гостевая книга
*
@author IT studio IRBIS-team
*
@copyright © 2009 IRBIS-team
*/
/////////////////////////////////////////////////////////
/**
* We establish the charset and level of errors
* Устанавливаем кодировку и уровень ошибок
*/

header("Content-Type: text/html; charset=utf-8");
error_reporting(E_ALL);
/////////////////////////////////////////////////////////////
// ADJUSTMENT
// НАСТРОЙКИ

/////////////////////////////////////////////////////////////
/**
* Quantity of posts on page
* Количество постов на странице
*/

define('NUM_POSTS', 5);
/////////////////////////////////////////////////////////////
// FUNCTIONS
// ФУНКЦИИ

/////////////////////////////////////////////////////////////
/**
* Function of reading of a directory
* Функция чтения директории
*
@param string
*
@return array
*/

function dirScan($dir)
{
static $files;

if(empty($files))
{
$files = scandir($dir);
$files = array_diff($files, array(
'.',
'..'
));
}
$files = count($files) ? $files : array(
'1'
);
return $files;
}

/**
* Function of generation of the menu of paginal navigation
* Функция генерации меню постраничной навигации
*
@param string
*
@return string
*/

function pageMenu($page)
{
// Получаем список файлов (номера)
$files = dirScan('data');
// Сортируем массив по порядку
natsort($files);
$menu = ' | ';
// В цикле формируем ссылки

foreach($files as $num)
{

if($page == $num)$menu .= '<strong>'. $num .'</strong> | ';
}
else
{
$menu .= '<a href="?page='. $num .'">'. $num .'</a> | ';
}
return $menu;
}

/**
* Replacement function bb-tags and smilies
* Функция замены bb-тегов и смайликов
*
@param string
*
@return string
*/

function bbTags($text)
{
$bb = array(
'',
'',
'',
'',
'',
'',
'',
'',
'[]',
'[]',
'[]',
'[]'
);
$tag = array(
'<b>',
'</b>',
'<i>',
'</i>',
'<s>',
'</s>',
'<u>',
'</u>',
'<img src="smailes/1.gif" />',
'<img src="smailes/2.gif" />',
'<img src="smailes/3.gif" />',
'<img src="smailes/4.gif" />'
);
return str_ireplace($bb, $tag, $text);
}
/////////////////////////////////////////////////////////////////
// VARIABLES
// ПЕРЕМЕННЫЕ

/////////////////////////////////////////////////////////////////
// Переменная для постранички
$page = !empty($_GET['page']) ? $_GET['page'] : 1;
$text1 = !empty($_POST['text1']) ? $_POST['text1'] : null;
$text2 = !empty($_POST['text2']) ? $_POST['text2'] : null;
$info = array(

);

$posts = array(

);

/////////////////////////////////////////////////////////////////
// SCRIPT
// СКРИПТ

/////////////////////////////////////////////////////////////////

if(!empty($_POST['ok']))
{

if(!$text1)
{
$info[] = 'Текстовое поле не заполнено.';
}

if(!$text2)
{
$info[] = 'Текстовая область не заполнена.';
}

if(count($info) == 0)
{
$file = max(dirScan('data'));

if(file_exists('data/'. $file))
{
$posts = unserialize(file_get_contents('data/'. $file));
$keys = array_keys($posts);
$id = max($keys) + 1;
$num = count($posts);
}
else
{
$num = $id = 1;
}
// Здесь меняем номер на константу

if($num > = NUM_POSTS)
{
++$file;
unset($posts);
}
$posts[$id]['date'] = date('d-m-Y');
$posts[$id]['name'] = $text1;
$posts[$id]['mess'] = $text2;
file_put_contents('data/'. $file, serialize($posts));
// Перенаправляем браузер на последнюю страницу
header('location: http://'. $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] .'?page='. $file);
exit();
}
}

else
{
$info[] = 'Напишите что-нибудь';
}
/////////////////////////////////////////////////////////////////
// VIEW
// ОТОБРАЖЕНИЕ

/////////////////////////////////////////////////////////////////
?>
<form action="" method="post">
Логин:<br />
<
input name="text1" type="text" value="<?php echo htmlspecialchars($text1)?>"/><br />
Сообщение:<br />
<
textarea name="text2" cols="40" rows="10"><?php echo htmlspecialchars($text2);
?></textarea><br />
<
input name="ok" type="submit" />
</
form>
<
div style="padding-left:50px">

<?php
// отрисовываем меню навигации. Еще одно - ниже
echo pageMenu($page);
?>
</div>
<?php echo implode('<br>', $info) .'<br>';

if(file_exists('data/'. $page))
{
$posts = unserialize(file_get_contents('data/'. $page));

foreach($posts as $id => $post)
{
$date = $post['date'];
$name = htmlspecialchars($post['name']);
$mess = nl2br(bbTags(htmlspecialchars($post['mess'])));
?>
<div style="border:1px solid; width:70%; background-color:#66FFFF; min-height:100px; margin:5px; padding:5px">
<?php echo $date;
?> / <strong><?php echo $name;
?></strong>
<
hr width="30%" align="left" />
<?php echo $mess;
?>
</div>
<?php
}
}

?>
<div style="padding-left:50px">
<?php echo pageMenu($page);
?> < / div
?>

вот )) а делается это вот так :angry:

Спустя 37 минут, 10 секунд (28.06.2012 - 21:10) Игорь_Vasinsky написал(а):
Свернутый текст
Денис777 специально для тебя сделаю
biggrin.gif biggrin.gif biggrin.gif
Цитата
    * The guest book 
    * Гостевая книга 
    * @author IT studio IRBIS-team 
    * @copyright © 2009 IRBIS-team

Спустя 14 часов, 30 минут, 58 секунд (29.06.2012 - 11:41) Денис777 написал(а):
Игорь_Vasinsky не че не понял ><
Быстрый ответ:

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