Гостевая книга php + ajax (помощь в исправлении ошибки)

onuvidelsolnce

Новичок
Зравствуйте, буду очень благодарен если знающий человек поможет решить небольшую проблему в гостевой книге, которую я скачал и установил на свой сайт. Все в ней меня устраивает, только один неприятный момент...

В скрипте есть постраничное разбиение сообщений от посетителей( по десять на каждой странице) внизу есть переход по этим страницам, но вот в том то и заключается проблема при любом номере страницы, точнее при нажатии, все равно выдает 10 последних, но никак не тех которые нужно. Например имеется 20 сообщений, т.е 2-е страницы. и на первой и на второй выводится 10 последних.

На сайте где скачал скрип в коментария нашел реплику к коду где указывается место ошибки, но решения не приводится. Вот она:

"Да... г-н Попов - вы конечно ас, я нуб, по сравнению с вами, но надо быть внимательнее. В видеоуроке вы небрежно так, вскользь упомянули, что переделали дизайн, в частности перенесли строку с выводом след., пред., страница вниз. Может так оно конечно и красивей, но:
1. сообщения в гостевую выводит цикл
while ($cont больше или равно $cont2)
2. Переменная $cont1 формируется предварительно в коде, который как раз и считает общее число страниц и как раз этот кусок вы перенесли вниз
3. результат: при переходе на любую страницу всегда показывается первые n сообщений

Косяк однако, и причем нехороший."
Вот.
Сам код, то место как мне кажется, где нужно исправить ошибку :


PHP:
<?
include("gb_config.php"); 
$page = $_REQUEST['page'];

if (!(file_exists($data_file))){ 
fopen($data_file,"w") or die("Can't open data file");;
$data=file($data_file);	
}else{
fopen($data_file,"r");
$data=file($data_file);	
}

$count = count($data);

$total_pages = ceil($count/$messages_per_page); 

echo ("<a href=\"javascript:showdiv('signform');\"><strong>$la1</strong></a> <br><br><br>");





if($newest_on_top == 1)
$data = array_reverse($data);


$entries=array_slice($data,$begin,$messages_per_page);

$cont1=count($entries)-1;
$cont2=0;

while ($cont1>=$cont2) {
	$entry=$entries[$cont2];
	$entry=explode("|",$entry);
	$name = $entry[0];
	$homepage = $entry[1];
	$email = $entry[2];
	$message = $entry[3];
	//$ip
	$stime = $entry[5];
	$browser = $entry[6]; 
	
	$stime = date('m/d/y - g:i A', $stime);
	
	$message = wordwrap($message, $word_wrap, "<br>", true);
	
	//Smiley
	$message = ereg_replace(":p", " <img src=\"images/s1.gif\" alt=\":p\" border=\"0\"> ", $message);
	$message = ereg_replace(":)", " <img src=\"images/s2.gif\" alt=\":)\" border=\"0\"> ", $message);
	$message = ereg_replace(":a", " <img src=\"images/s3.gif\" alt=\":a\" border=\"0\"> ", $message);
	$message = ereg_replace(":o", " <img src=\"images/s4.gif\" alt=\":o\" border=\"0\"> ", $message);
	$message = ereg_replace(":s", " <img src=\"images/s5.gif\" alt=\":s\" border=\"0\"> ", $message);
	$message = ereg_replace(":r", " <img src=\"images/s6.gif\" alt=\":r\" border=\"0\"> ", $message);
	$message = ereg_replace(":v", " <img src=\"images/s7.gif\" alt=\":v\" border=\"0\"> ", $message);
	$message = ereg_replace(":h", " <img src=\"images/s8.gif\" alt=\":h\" border=\"0\"> ", $message);
	$message = ereg_replace(";)", " <img src=\"images/s9.gif\" alt=\";)\" border=\"0\"> ", $message);
	$message = ereg_replace(":m", " <img src=\"images/s10.gif\" alt=\":m\" border=\"0\"> ", $message);
	
	//Fix the "&" bug
	$message = str_replace("^amp^", "&",$message);
	$name = str_replace("^amp^", "&",$name);
	
	//URL
	if($convert_link == 1)
	$message = ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]", "<a href=\"\\0\" target=\"_blank\">\\0</a>", $message);

	
	if($homepage != 'http://'){
	$vhomepage = "<a href=\"$homepage\" target=\"_blank\"><img src=\"images/home.gif\" alt=\"$la13\" title=\"$la13\" border=\"0\"></a>";
	}else{
	$vhomepage = "<img src=\"images/home2.gif\" alt=\"$la13\" title=\"$la13\" border=\"0\">";
	}
	
	if($email){
	$email = str_replace('@','[at]',$email);
	$vemail = "<a href=\"mailto:$email\" target=\"_blank\"><img src=\"images/email.gif\" alt=\"$la12\" border=\"0\"></a>";
	}else{
	$vemail = "<img src=\"images/email2.gif\" alt=\"$la12\" border=\"0\">";
	}
	
	echo ("<div class=\"guestbook_top\"><img src=\"images/user.png\" alt=\"$name\" title=\"$name\"> <b>$name</b> <span style='margin-left:380px;'><font size = 1>$stime </font></span></div><div class=\"guestbook\"> <div align=\"right\" style=\"padding:2px;\"> $vhomepage $vemail <a href=\"gb_admin.php\"><img src=\"images/computer.png\" alt=\"$ip\" title=\"$la16\" border=\"0\"></a> <img src=\"images/world.png\" alt=\"$browser\" title=\"$browser\" border=\"0\"> </div> $message<br><br></div>");

	$cont2++;
}

if($count != 0){  
echo ("<div class='my11'>$la15: ");



//Print out page number

if (($page - 10) <= 0)
$rp = ($page - 11) * -1;

if (($total_pages - $page) < 10)
$lp = 10 + ($total_pages - $page) * -1;


if ($page != 1 && $page > 11)
echo("<a href=\"JavaScript:ajax('POST','gb_view.php','page','1')\">1</a> ... ");

for ($i=$page - (10 + $lp); $i < $page; $i++){
	
	if ($i < $page && $i > 0){
		echo("<a href=\"JavaScript:ajax('POST','gb_view.php','page','$i')\">$i</a> ");
	}
}


for ($i=$page; $i <= $page + 10 + $rp; $i++){
	if($page==$i){
		echo("<b>$i</b> ");
	}else if ($i >= $page && $i <= $total_pages){
		echo("<a href=\"JavaScript:ajax('POST','gb_view.php','page','$i')\">$i</a> ");
	}
}

if ($page != $total_pages && $page < $total_pages - 10)
echo(" ... <a href=\"JavaScript:ajax('POST','gb_view.php','page','$total_pages')\">$total_pages</a>");


}
echo ("</div>");
echo ("<div class='my11'>$la45 <strong>$count</strong></div> <br>");
echo ("<div class='my11'>");
//Make pages
if (isset($page) AND $page > 0)
  {
    if ($page > $total_pages) {
      $page = $total_pages; 
    } else {
      $begin=$page*$messages_per_page - $messages_per_page; 
    }
} else {
  $page = 1; 
  $begin = 0; 
  }

$next_page = $page + 1; 
$prev_page   = $page - 1;

  if ($prev_page < 1)
  {
    $prev_page = 1;
  } 

  if ($next_page > $total_pages)
  {
    $next_page = $total_pages;
  } 

if($count != 0){  


if($page == 1 && $total_pages == 1){
echo ("<font color = \"#CCCCCC\">$la6</font> | <font color = \"#CCCCCC\">$la7</font>"); 
}else if($page == $prev_page){  
echo ("<font color = \"#CCCCCC\">$la6</font> | <a href=\"JavaScript:ajax('POST','gb_view.php','page','$next_page')\">$la7</a>"); 
}else if($page == $next_page){
echo ("<a href=\"JavaScript:ajax('POST','gb_view.php','page','$prev_page')\">$la6</a> | <font color = \"#CCCCCC\">$la7</font>"); 
}else{
echo ("<a href=\"JavaScript:ajax('POST','gb_view.php','page','$prev_page')\">$la6</a> | <a href=\"JavaScript:ajax('POST','gb_view.php','page','$next_page')\">$la7</a>"); 
}

if($total_pages == 1){
echo(" | <font color = \"#CCCCCC\">$la8</font> | <font color = \"#CCCCCC\">$la9</font> | <a href=\"$home\">$la10</a> <br><br><br>");
}else{
echo(" | <a href=\"JavaScript:ajax('POST','gb_view.php','page','1')\">$la8</a> | <a href=\"JavaScript:ajax('POST','gb_view.php','page','$total_pages')\">$la9</a> | <a href=\"$home\">$la10</a> <br><br><br>");
}
}
echo ("</div>");
?>

хотя может это и не то место, тогда вся гостевая находится здесь:
http://ruseller.com/adds.php?rub=12&id=1685


Если это не сложные действия по исправления тогда помогите кто чем может. хотелось ды при исправлениях отавить все на своих местах. точнее кнопки там всяки и т.п.

Все расковырял, дизайн поменял, с кодировкой намучался, думал все устранил а тут такой фэил. неохота новую гостевую искать. да и мне нравится что без баз данных. простая и легкая не требовательная.
Спасибо.
 

onuvidelsolnce

Новичок
да, забыл сказать. Я php вообще не знаю. поэтому прсьба немного поподробнее как и где...)
 

С.

Продвинутый новичок
Если и после того подробнейшего описания прочины ошибки вы не понимаете, как ее исправить, то подумайте правильности выбора прогарммирования как сферы деятельности.
да, забыл сказать. Я php вообще не знаю. поэтому прсьба немного поподробнее как и где...)
С такими просьбами не на форум (по крайней мере не на этот), а к репититору.
 

onuvidelsolnce

Новичок
Я предположу что из вышесказанной приведенной мной цытаты нужно сделать следующее:
В коде заменить
PHP:
while ($cont1>=$cont2)
на
PHP:
while ($cont>=$cont2)
так?

Или везде $cont1 заменить на $cont начиная с самого начала?
 

onuvidelsolnce

Новичок
И ещё небольшой вопрос с этой же книгой. В IE (в остальных браузерах все работает отлично) при добавлении сообщения начинается обнавление страницы на подобии песочных часов но с течением времени никаких изменений не происходит, если просто нажать обновить страницу F5 или зайдти заново на нее видно что сообщение добавилось. В чем может быт причина не до конца работающего скрипта, что мешает в IE работе скорее всего Ajax скрипту? Я пользуюсь денвером может как-то это влияет. Спасибо
 

AmdY

Пью пиво
Команда форума
onuvidelsolnce
научитесь дебажить и смотреть ошибки, в ие нажмите f12, потому что телепатически угадать что за проблема очень сложно.
 

KorP

Новичок
PHP:
г-н Попов
по-моему пора уже запретить обсуждение поделать этого товарища :)
 
  • Like
Реакции: AmdY

fixxxer

К.О.
Партнер клуба
господи божеж мой откуда такой код? это точно 2011 год? во ВСЕХ доступных ныне мануалах написано, что ereg* функции сто лет как устарели

ну и в остальном этот код крайне бредов, откуда такой взят? это что, попов ТАКОМУ бреду сивой кобылы учит?
 
Сверху