Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Гостевая книга php + ajax (помощь в исправлении ошибки)

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
onuvidelsolnce
Отправлено: 15 Ноября, 2011 - 10:48:46
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Нояб. 2011  


Помог: 0 раз(а)




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

В скрипте есть постраничное разбиение сообщений от посетителей( по десять на каждой странице) внизу есть переход по этим страницам, но вот в том то и заключается проблема при любом номере страницы, точнее при нажатии, все равно выдает 10 последних, но никак не тех которые нужно. Например имеется 20 сообщений, т.е 2-е страницы. и на первой и на второй выводится 10 последних.
Пример моей ошибки здесь(попереключайте страницы постраничного разбиения):
http://onuvidelsolnce[dot]netau[dot]net/gb/

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

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

Косяк однако, и причем нехороший."


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

PHP:
скопировать код в буфер обмена
  1. <?
  2. include("gb_config.php");
  3. $page = $_REQUEST['page'];
  4.  
  5. if (!(file_exists($data_file))){
  6. fopen($data_file,"w") or die("Can't open data file");;
  7. $data=file($data_file);    
  8. }else{
  9. fopen($data_file,"r");
  10. $data=file($data_file);    
  11. }
  12.  
  13. $count = count($data);
  14.  
  15. $total_pages = ceil($count/$messages_per_page);
  16.  
  17. echo ("<a href=\"javascript:showdiv('signform');\"><strong>$la1</strong></a> <br><br><br>");
  18.  
  19.  
  20.  
  21.  
  22.  
  23. if($newest_on_top == 1)
  24. $data = array_reverse($data);
  25.  
  26.  
  27. $entries=array_slice($data,$begin,$messages_per_page);
  28.  
  29. $cont1=count($entries)-1;
  30. $cont2=0;
  31.  
  32. while ($cont1>=$cont2) {
  33.     $entry=$entries[$cont2];
  34.     $entry=explode("|",$entry);
  35.     $name = $entry[0];
  36.     $homepage = $entry[1];
  37.     $email = $entry[2];
  38.     $message = $entry[3];
  39.     //$ip
  40.     $stime = $entry[5];
  41.     $browser = $entry[6];
  42.    
  43.     $stime = date('m/d/y - g:i A', $stime);
  44.    
  45.     $message = wordwrap($message, $word_wrap, "<br>", true);
  46.    
  47.     //Smiley
  48.     $message = ereg_replace(":p", " <img src=\"images/s1.gif\" alt=\":p\" border=\"0\"> ", $message);
  49.     $message = ereg_replace(":)", " <img src=\"images/s2.gif\" alt=\":)\" border=\"0\"> ", $message);
  50.     $message = ereg_replace(":a", " <img src=\"images/s3.gif\" alt=\":a\" border=\"0\"> ", $message);
  51.     $message = ereg_replace(":o", " <img src=\"images/s4.gif\" alt=\":o\" border=\"0\"> ", $message);
  52.     $message = ereg_replace(":s", " <img src=\"images/s5.gif\" alt=\":s\" border=\"0\"> ", $message);
  53.     $message = ereg_replace(":r", " <img src=\"images/s6.gif\" alt=\":r\" border=\"0\"> ", $message);
  54.     $message = ereg_replace(":v", " <img src=\"images/s7.gif\" alt=\":v\" border=\"0\"> ", $message);
  55.     $message = ereg_replace(":h", " <img src=\"images/s8.gif\" alt=\":h\" border=\"0\"> ", $message);
  56.     $message = ereg_replace(";)", " <img src=\"images/s9.gif\" alt=\";)\" border=\"0\"> ", $message);
  57.     $message = ereg_replace(":m", " <img src=\"images/s10.gif\" alt=\":m\" border=\"0\"> ", $message);
  58.    
  59.     //Fix the "&" bug
  60.     $message = str_replace("^amp^", "&",$message);
  61.     $name = str_replace("^amp^", "&",$name);
  62.    
  63.     //URL
  64.     if($convert_link == 1)
  65.     $message = ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]", "<a href=\"\\0\" target=\"_blank\">\\0</a>", $message);
  66.  
  67.    
  68.     if($homepage != 'http://'){
  69.     $vhomepage = "<a href=\"$homepage\" target=\"_blank\"><img src=\"images/home.gif\" alt=\"$la13\" title=\"$la13\" border=\"0\"></a>";
  70.     }else{
  71.     $vhomepage = "<img src=\"images/home2.gif\" alt=\"$la13\" title=\"$la13\" border=\"0\">";
  72.     }
  73.    
  74.     if($email){
  75.     $email = str_replace('@','[at]',$email);
  76.     $vemail = "<a href=\"mailto:$email\" target=\"_blank\"><img src=\"images/email.gif\" alt=\"$la12\" border=\"0\"></a>";
  77.     }else{
  78.     $vemail = "<img src=\"images/email2.gif\" alt=\"$la12\" border=\"0\">";
  79.     }
  80.    
  81.     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>");
  82.  
  83.     $cont2++;
  84. }
  85.  
  86. if($count != 0){  
  87. echo ("<div class='my11'>$la15: ");
  88.  
  89.  
  90.  
  91. //Print out page number
  92.  
  93. if (($page - 10) <= 0)
  94. $rp = ($page - 11) * -1;
  95.  
  96. if (($total_pages - $page) < 10)
  97. $lp = 10 + ($total_pages - $page) * -1;
  98.  
  99.  
  100. if ($page != 1 && $page > 11)
  101. echo("<a href=\"JavaScript:ajax('POST','gb_view.php','page','1')\">1</a> ... ");
  102.  
  103. for ($i=$page - (10 + $lp); $i < $page; $i++){
  104.    
  105.     if ($i < $page && $i > 0){
  106.         echo("<a href=\"JavaScript:ajax('POST','gb_view.php','page','$i')\">$i</a> ");
  107.     }
  108. }
  109.  
  110.  
  111. for ($i=$page; $i <= $page + 10 + $rp; $i++){
  112.     if($page==$i){
  113.         echo("<b>$i</b> ");
  114.     }else if ($i >= $page && $i <= $total_pages){
  115.         echo("<a href=\"JavaScript:ajax('POST','gb_view.php','page','$i')\">$i</a> ");
  116.     }
  117. }
  118.  
  119. if ($page != $total_pages && $page < $total_pages - 10)
  120. echo(" ... <a href=\"JavaScript:ajax('POST','gb_view.php','page','$total_pages')\">$total_pages</a>");
  121.  
  122.  
  123. }
  124. echo ("</div>");
  125. echo ("<div class='my11'>$la45 <strong>$count</strong></div> <br>");
  126. echo ("<div class='my11'>");
  127. //Make pages
  128. if (isset($page) AND $page > 0)
  129.   {
  130.     if ($page > $total_pages) {
  131.       $page = $total_pages;
  132.     } else {
  133.       $begin=$page*$messages_per_page - $messages_per_page;
  134.     }
  135. } else {
  136.   $page = 1;
  137.   $begin = 0;
  138.   }
  139.  
  140. $next_page = $page + 1;
  141. $prev_page   = $page - 1;
  142.  
  143.   if ($prev_page < 1)
  144.   {
  145.     $prev_page = 1;
  146.   }
  147.  
  148.   if ($next_page > $total_pages)
  149.   {
  150.     $next_page = $total_pages;
  151.   }
  152.  
  153. if($count != 0){  
  154.  
  155.  
  156. if($page == 1 && $total_pages == 1){
  157. echo ("<font color = \"#CCCCCC\">$la6</font> | <font color = \"#CCCCCC\">$la7</font>");
  158. }else if($page == $prev_page){  
  159. echo ("<font color = \"#CCCCCC\">$la6</font> | <a href=\"JavaScript:ajax('POST','gb_view.php','page','$next_page')\">$la7</a>");
  160. }else if($page == $next_page){
  161. echo ("<a href=\"JavaScript:ajax('POST','gb_view.php','page','$prev_page')\">$la6</a> | <font color = \"#CCCCCC\">$la7</font>");
  162. }else{
  163. 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>");
  164. }
  165.  
  166. if($total_pages == 1){
  167. echo(" | <font color = \"#CCCCCC\">$la8</font> | <font color = \"#CCCCCC\">$la9</font> | <a href=\"$home\">$la10</a> <br><br><br>");
  168. }else{
  169. 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>");
  170. }
  171. }
  172. echo ("</div>");
  173. ?>


Xотя может это и не то место, тогда вся гостевая находится здесь:

http://onuvidelsolnce[dot]netau[dot]net/gb/

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

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

(Отредактировано автором: 15 Ноября, 2011 - 10:51:07)

 
 Top
broshurkaplus
Отправлено: 17 Ноября, 2011 - 21:28:47
Post Id



Посетитель


Покинул форум
Сообщений всего: 354
Дата рег-ции: Янв. 2011  
Откуда: Пружаны Бресткая обл. Беларусь


Помог: 2 раз(а)




на первый взгляд я думаю , может меня кто то и поправит, в этом

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

счтитываешь кусок масива с $begin длиной $messages_per_page
это вначале
а далее там где формируешь с $begin

при нажатии на сылку передаёшь номер страницы, и если это код обработчика он из этого значения считает $begin , получается думаю что эта переменная одна и таже при нажатии на сылки разных страниц.

<a href="JavaScript:ajax('POST','gb_view.php','page','2')">2</a>

'2'-это номер страницы
page- это к чему не пойму , это на всех ссылках страниц

вначале
$page = $_REQUEST['page'];
типа $page=page и из за этого неправильно $cont рассчитывается

думаю вывод такой - эхом посмотри что получает и $page при нажатии на сылки разных страниц

ps я сам тока учусь...
 
 Top
onuvidelsolnce
Отправлено: 18 Ноября, 2011 - 21:43:39
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Нояб. 2011  


Помог: 0 раз(а)




broshurkaplus, спасибо что откликнулся. Я крайне плохо знаю Phр. Не мог бы ты все свои советы внести в код и выложить его сюда. А я тогда проверю твою версию, просто сам я скорее всего не так внесу изменения в код как нужно, как ты советовал. Если не трудно конечно. Спасибо.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB