Создать ответ 
Постраничная листалка
Автор Сообщение
Роман Не на форуме
Младший сержант
*

Сообщений: 26
У нас с: Nov 2012
Сообщение: #1
Постраничная листалка
Люди! Помогите, пожалуйста!
Использовал скрипт листалки с этого сайта (Постраничный вывод или постраничная навигация), листалка выводится, а вот записи из БД не выводятся! Что делать? Подскажите новичку!!! Вот что я втыкал:

Код:
<?php
$db = mysql_connect ("localhost", "name","123");
mysql_select_db ("stol", $db);

function col_pages($count, $this, $radius) {
$j=0; $out=""; $td='<td width="35" bgcolor="lightgreen">';
if (($this-$radius)<1) $i=1;
     else $i=$this-$radius;
if ($i==1) $i++;

if (($count-($radius*2+1))<$i) $i=$count-($radius*2+1);
if ($i<2) $i=2;

if ($this!=1)
  $out.=$td.'<a href="'.$_SESSION[mess_url].'?comment_list=1">1</a></td>';
     else $out.=$td.'<b>[ 1 ]</b></td>';

if ($i>2) $out.=$td.'...</td>';

while ((($i<=($this+$radius)) or ($j<($radius*2+1))) and ($i<$count)) {
if ($i!==$this)
  $out.=$td.'<a href="'.$_SESSION[mess_url].'?comment_list='.$i.'">'.$i.'</a></td>';
     else $out.=$td.'<b>[ '.$i.' ]</b></td>';
$i++; $j++;
}
if ($i<$count) $out.=$td.'...</td>';
if ($count>1) {
     if ($count!=$this)
      $out.=$td.'<a href="'.$_SESSION[mess_url].'?comment_list='.$count.'">
      '.$count.'</a></td>';
     else $out.=$td.'<b>[ '.$count.' ]</b></td>';
}
return $out;
}


$result = mysql_query("SELECT * FROM stol WHERE id=id", $db);
$count_list=floor((mysql_num_rows($result)-1)/10)+1;

if (is_numeric($_GET[comment_list]) and $_GET[comment_list]>0) {
if ($_GET[comment_list]>$count_list) $comment_list=$count_list;
    else $comment_list=$_GET[comment_list];
}
else $comment_list=1;
if ($comment_list==0) $comment_list=1;

$result = mysql_query("SELECT * FROM stol WHERE id=id
            ORDER BY id LIMIT ".($comment_list*10-10).",10", $db);
$number = mysql_num_rows($result);
for ($n=1; $n<=$number; $n++) {
    $comments=mysql_fetch_array($result);
    // Оформление и вывод комментариев
    echo '<div>'.$comments[message].'</div>';
}


echo '<table style="border: 1px solid #4874a3;" cellspacing="2" cellpadding="0">';
echo '<tr align="center">';
  echo '<td bgcolor="lightgreen" width="65">';
if ($comment_list>1) echo '<a href="'.$_SESSION[mess_url].'">В начало</a>';
    else echo 'В начало';
  echo '</td>';
  echo '<td bgcolor="lightgreen" width="65">';
if ($comment_list>1) echo '<a href="'.$_SESSION[mess_url].'?comment_list='.($comment_list-1).'">Назад</a>';
    else echo 'Назад';
  echo '</td>';

echo col_pages((int)$count_list, (int)$comment_list, 3);

  echo '<td bgcolor="lightgreen" width="65">';
if ($comment_list<$count_list) echo '<a href="'.$_SESSION[mess_url].'?comment_list='.($comment_list+1).'">Вперед</a>';
    else echo 'Вперед';
  echo '</td>';
  echo '<td bgcolor="lightgreen" width="65">';
if ($comment_list<$count_list) echo '<a href="'.$_SESSION[mess_url].'?comment_list='.$count_list.'">В конец</a>';
    else echo 'В конец';
  echo '</td>';
echo '</tr>';
echo '</table>';
?>

Заранее благодарю!!!
09.11.2012 18:48:05
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #2
RE: Постраничная листалка
Роман, было бы еще не плохо, если бы Вы привели скриншот структуры таблицы stol. А так пока могу предположить, что у Вас в таблице stol нет поля message, потому ничего и не выводится.

Попробуйте в строчке:
PHP код:
echo '<div>'.$comments[message].'</div>'

message заменить на поле, которое точно есть в таблице stol.

Для нормальной работы скрипта постраничной навигации также добавьте следующий код в самое начало странички:
PHP код:
session_start();
 
$_SESSION[full_url]=mysql_real_escape_string(basename($_SERVER['REQUEST_URI']));
 
$_SESSION[mess_url]=strtok($_SESSION[full_url], '?'); 
09.11.2012 19:31:34
Найти все сообщения Цитировать это сообщение
Роман Не на форуме
Младший сержант
*

Сообщений: 26
У нас с: Nov 2012
Сообщение: #3
RE: Постраничная листалка
Огромная Вам благодарность!!!
Вы были правы насчёт messege!!! Я слишком невнимателен!!! У меня к вам ещё один вопрос: что значит вот это: Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at Z:\home\localhost\www\table\index2.php:12) in Z:\home\localhost\www\table\index2.php on line 18 ? Эта строка выводится перед всем содержимым.
PHP код:
session_start();
 
$_SESSION[full_url]=mysql_real_escape_string(basename($_SERVER['REQUEST_URI']));
 
$_SESSION[mess_url]=strtok($_SESSION[full_url], '?'); 

Всё! Разобрался! Ошибка была именно из-за этих строк!!!)))) И ещё раз, огромная Вам благодарность за помощь!!! Вы просто не представляете сколько нервов вымотала эта листалка мне!!!
session_start();
$_SESSION[full_url]=mysql_real_escape_string(basename($_SERVER['REQUEST_URI']));
$_SESSION[mess_url]=strtok($_SESSION[full_url], '?');

Не пойму с этими строками выдаёт ошибку, но без этих строк кнопка В НАЧАЛО работает некорректно, а именно: выводит не на первую страницу, а на текущую. Что делать подскажите???
(Последний раз сообщение было отредактировано 09.11.2012 в 20:27:48, отредактировал пользователь Роман.)
09.11.2012 19:53:44
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #4
RE: Постраничная листалка
Извиняюсь, в прошлом ответе допустил небольшую ошибку.
session_start(); необходимо поместить самой первой строчкой странички (до вывода тегов <html>, <head> и т.д.).

Эти три строчки служат для определения имени страницы, на которой работает скрипт постраничной навигации. Нужны они в том случае, если у Вас в одной таблице хранятся, например, комментарии ко многим темам. Так вот эти строчки и нужны чтобы выводились только комментарии к одной теме (странице на которой Вы находитесь), а не все.

Если у Вас в таблице хранятся данные только для одной страницы, то Вы можете смело не использовать эти три строчки, и заменить во всем коде '.$_SESSION[mess_url].' на имя странички (например, news.php).

Либо поместите session_start(); в самое начало странички, тогда менять ничего не придется.
09.11.2012 21:47:45
Найти все сообщения Цитировать это сообщение
Роман Не на форуме
Младший сержант
*

Сообщений: 26
У нас с: Nov 2012
Сообщение: #5
RE: Постраничная листалка
Эх, чтоб я без Вас делал?! Ещё раз благодарю!!!
Подскажите, пожалуйста, толковые книги по PHP и MySQL!
10.11.2012 14:42:59
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #6
RE: Постраничная листалка
Даже не знаю что посоветовать, т.к. сам читаю только мануалы и то по мере того, как сталкиваюсь с какой-нибудь проблемой.

Сейчас в Интернете есть огромное множество книг, так что выбирайте ту, где стиль написанного Вам более понятен. И главное больше практики.
10.11.2012 15:30:33
Найти все сообщения Цитировать это сообщение
Роман Не на форуме
Младший сержант
*

Сообщений: 26
У нас с: Nov 2012
Сообщение: #7
RE: Постраничная листалка
Доброго времени суток. Не могли бы Вы мне помочь в очередной раз? У меня небольшая заминка со скриптом. Я его прикрутил к одной из страниц и всё бы ничего, но при нажатии на следующую страницу пишет мол такой нет. Вот код всей страницы:
Код:
<?php
    session_start();
    include ("blocks/db.php");
    if (isset($_GET['date'])) {
        $date = $_GET['date'];
        }
    
    else {
        exit ("
            <p>Вы ввели данные несуществующей страницы.</p>
            ");
        }
    
    $date_title = $date;
    $date_begin = $date;
    $date++;
    $date_end = $date;
    $date_begin = $date_begin."-01";
    $date_end = $date_end."-01";
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<html>
    <head>
        <link rel="stylesheet" type="text/css" href="css/style.css">
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
          <script src="js/jquery 1.8.0.js" type="text/javascript"></script>
          <title><?php echo "Книги за - $date_title";?></title>
    </head>
    <body>
        <div id="wrapper">
            <?php include ("blocks/header.php");?>
            <?php include ("blocks/sidebar_l.php");?>
            <?php include ("blocks/sidebar_r.php");?>
            <div id="conteiner">
                <div id="conteiner_t">
                    <div class="title">«<?php echo "Книги за - $date_title";?>»</div>
                </div>
                <div id="conteiner_c">
                    <?php
                    $result = mysql_query ("SELECT id, author, title, year, postscoring, description, image, view, date, meter FROM audiobooks WHERE date>'$date_begin' AND date<'$date_end'", $db);
                    $count_list=floor((mysql_num_rows($result)-1)/1)+1;
                        
if (is_numeric($_GET[comment_list]) and $_GET[comment_list]>0) {
if ($_GET[comment_list]>$count_list) $comment_list=$count_list;
    else $comment_list=$_GET[comment_list];
}
else $comment_list=1;
if ($comment_list==0) $comment_list=1;

$result = mysql_query("SELECT id, author, title, year, postscoring, description, image, view, date, meter FROM audiobooks WHERE date>'$date_begin' AND date<'$date_end'
            ORDER BY id DESC LIMIT ".($comment_list*1-1).",1", $db);
$number = mysql_num_rows($result);
for ($n=1; $n<=$number; $n++) {
    $comments=mysql_fetch_array($result);
    // Оформление и вывод комментариев

                        
                        echo
                                "<div id='block'>
                                        <div id='block_t'><a class='link' title='Подробнее...' href='book.php?id=$comments[id]'>«$comments[title]»</a></div>
                                        <div id='block_c'>
                                                  <table align='center'>
                                                  <tr>
                                                       <td>
                                                 <div id='img'>
                                                     <img class='img' src='$comments[image]'>
                                                 </div>
                                                       </td>
                                                  </tr>
                                                  </table>
                                             <div id='txt'>
                                                <p><strong>Автор:</strong> $comments[author]</p>
                                                <p><strong>Название:</strong> $comments[title]</p>
                                                <p><strong>Год издания:</strong> $comments[year]</p>
                                                <p><strong>Озвучил:</strong> $comments[postscoring]</p>
                                                <p><strong>Описание:</strong> $comments[description]</p>
                                            </div>
                                        </div>
                                        <div id='block_b'>
                                                       <table align='center' width='555'>
                                                            <tr>
                                                                 <th>Просмотров: $comments[view]</th>
                                                                 <th>Добавлена: $comments[date]</th>
                                                    <th>Отзывов: $comments[meter]</th>
                                                    <th>Скачана:</th>
                                                            </tr>
                                                       </table>
                                                  </div>
                                    </div>";
                                }
                        ?>
                </div>
                <div id="conteiner_b">
                    <?php
$_SESSION[full_url]=mysql_real_escape_string(basename($_SERVER['REQUEST_URI']));
$_SESSION[mess_url]=strtok($_SESSION[full_url], '?');


function col_pages($count, $this, $radius) {
$j=0; $out=""; $td='<th width="30">';
if (($this-$radius)<1) $i=1;
     else $i=$this-$radius;
if ($i==1) $i++;

if (($count-($radius*2+1))<$i) $i=$count-($radius*2+1);
if ($i<2) $i=2;

if ($this!=1)
  $out.=$td.'<a href="'.$_SESSION[mess_url].'?comment_list=1">1</a></th>';
     else $out.=$td.'<b><u> 1 </u></b></td>';

if ($i>2) $out.=$td.'...</th>';

while ((($i<=($this+$radius)) or ($j<($radius*2+1))) and ($i<$count)) {
if ($i!==$this)
  $out.=$td.'<a href="'.$_SESSION[mess_url].'?comment_list='.$i.'">'.$i.'</a></th>';
     else $out.=$td.'<b><u> '.$i.' </u></b></th>';
$i++; $j++;
}
if ($i<$count) $out.=$td.'...</th>';
if ($count>1) {
     if ($count!=$this)
      $out.=$td.'<a href="'.$_SESSION[mess_url].'?comment_list='.$count.'">
      '.$count.'</a></th>';
     else $out.=$td.'<b><u> '.$count.' </u></b></th>';
}
return $out;
}




echo '<table align="center">';
echo '<tr>';
  echo '<th width="70">';
if ($comment_list>1) echo '<a href="'.$_SESSION[mess_url].'">В начало</a>';
    else echo 'В начало';
  echo '</th>';
  echo '<th width="70">';
if ($comment_list>1) echo '<a href="'.$_SESSION[mess_url].'?comment_list='.($comment_list-1).'">Назад</a>';
    else echo 'Назад';
  echo '</th>';

echo col_pages((int)$count_list, (int)$comment_list, 3);

  echo '<th width="70">';
if ($comment_list<$count_list) echo '<a href="'.$_SESSION[mess_url].'?comment_list='.($comment_list+1).'">Вперед</a>';
    else echo 'Вперёд';
  echo '</th>';
  echo '<th width="70">';
if ($comment_list<$count_list) echo '<a href="'.$_SESSION[mess_url].'?comment_list='.$count_list.'">В конец</a>';
    else echo 'В конец';
  echo '</th>';
echo '</tr>';
echo '</table>';


?>
                </div>
            </div>
            <?php include ("blocks/footer.php");?>
        </div>
    </body>
</html>

Заранее благодарю.
15.11.2012 20:41:29
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #8
RE: Постраничная листалка
По-моему проблема заключается в том, что Вы анализируете в URL переменную $_GET['date'], и если ее нет в URL, то выдается сообщение об отсутствии нужной страницы.
Так вот в нижней части кода, Вы забыли добавить данную переменную при формировании ссылок для перехода.

Наверно слишком сложно завернул Big Grin

Другими словами изначально URL странички у Вас выглядит примерно так:
usefulscript.ru/index.php?date=10

А после клика по листалке - usefulscript.ru/index.php?comment_list=2

Как видите date=10 потерялось, а должно быть usefulscript.ru/index.php?date=10?&comment_list=2

Так что попробуйте во всем скрипте заменить href="'.$_SESSION[mess_url].'?comment_list='. на href="'.$_SESSION[mess_url].'?'.$_GET['date'].'&comment_list='.
15.11.2012 21:10:42
Найти все сообщения Цитировать это сообщение
Роман Не на форуме
Младший сержант
*

Сообщений: 26
У нас с: Nov 2012
Сообщение: #9
RE: Постраничная листалка
К сожалению тоже самое(
15.11.2012 21:45:41
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #10
RE: Постраничная листалка
(15.11.2012 21:45:41)Роман писал(а):  К сожалению тоже самое(

Извините, в предыдущем посте я допустил ошибку.
Правильно писать не href="'.$_SESSION[mess_url].'?'.$_GET['date'].'&comment_list='., а href="'.$_SESSION[mess_url].'?date='.$_GET['date'].'&comment_list='.

URL в строке браузера до и после перехода у Вас какой?
15.11.2012 22:35:33
Найти все сообщения Цитировать это сообщение
Создать ответ 


Переход:


Пользователи просматривают эту тему: 1 Гость(ей)


LiveInternet
© Copyright 2011-2024 by UsefulScript.ru