Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Ошибки в постраничной навигации.
 
 автор: Makroris   (04.05.2008 в 16:03)   письмо автору
 
 

Пользуюсь статьей http://www.softtime.ru/info/articlephp.php?id_article=33 для постраение постраничной навигации. Тока что то выдает ошибки:
вот код:
<?php  
// Устанавливаем соединение с базой данных  
include "connections\asd.php";  
// Переменная хранит число сообщений выводимых на станице  
$num 25;  
// Извлекаем из URL текущую страницу  
$page $_GET['page'];  
// Определяем общее число сообщений в базе данных  
$result mysql_query("SELECT COUNT(*) FROM  news");  
$posts mysql_result($result0); 
// Находим общее число страниц  
$total intval(($posts 1) / $num) + 1;  
// Определяем начало сообщений для текущей страницы  
$page intval($page);  
// Если значение $page меньше единицы или отрицательно  
// переходим на первую страницу  
// А если слишком большое, то переходим на последнюю  
if(empty($page) or $page 0$page 1;  
  if(
$page $total$page $total;  
// Вычисляем начиная к какого номера  
// следует выводить сообщения  
$start $page $num $num;  
// Выбираем $num сообщений начиная с номера $start  
$result mysql_query("SELECT * FROM news LIMIT $start$num");  
// В цикле переносим результаты запроса в массив $postrow  

while ( $postrow[] = mysql_fetch_array($result))  
?> 


Выдает ошибки:

Warning: mysql_result(): supplied argument is not a valid MySQL result resource in Z:\home\test1.ru\www\TMP5xetlc8t0.php on line 18

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in Z:\home\test1.ru\www\TMP60lp0c8x5.php on line 34

Подскажите в чем тут дело?

   
 
 автор: Usta   (04.05.2008 в 16:15)   письмо автору
 
   для: Makroris   (04.05.2008 в 16:03)
 

Проверьте файл connections\asd.php соединения с базы данных. У вас наверное имена таблицы или имя ДБ указаны не верно.

   
 
 автор: morkovkin   (04.05.2008 в 16:18)   письмо автору
 
   для: Makroris   (04.05.2008 в 16:03)
 

Не знаю, может это повлиять на работоспособность, но в это строчке

$result = mysql_query("SELECT COUNT(*) FROM  news");


между Фром и Ньюс два пробела.

   
 
 автор: Makroris   (04.05.2008 в 16:26)   письмо автору
 
   для: Makroris   (04.05.2008 в 16:03)
 

С БД соединение есть, таблица тоже указана верна.

вот в этих строках у меня ошибки:

$posts = mysql_result($result, 0); 


и

while ( $postrow[] = mysql_fetch_array($result))  

   
 
 автор: Makroris   (04.05.2008 в 19:08)   письмо автору
 
   для: Makroris   (04.05.2008 в 16:26)
 

Я тут нашел еще один способ постраничного вывода информации.
Там ошибок не возникает ни каких, только проблема с переходом по страницам.

<?php 
function yandex_link_bar($page$count$pages_count$show_link

// $show_link - это количество отображаемых ссылок; 
// нагляднее будет, когда это число будет парное 
// Если страница всего одна, то вообще ничего не выводим 
if ($pages_count == 1) return false
$sperator ' '// Разделитель ссылок; например, вставить "|" между ссылками 
// Для придания ссылкам стиля 
$style 'style="color: #808000; text-decoration: none;"'
$begin $page intval($show_link 2); 
unset(
$show_dots); // На всякий случай :) 
// Сам постраничный вывод 
// Если количество отображ. ссылок больше кол. страниц 
if ($pages_count <= $show_link 1$show_dots 'no'
// Вывод ссылки на первую страницу 
if (($begin 2) && ($pages_count $show_link 2)) { 
echo 
'<a '.$style.' href='.$_server['php_self'].'?page=1> |< </a> '

for (
$j 0$j <= $show_link$j++) // Основный цикл вывода ссылок 

$i $begin $j// Номер ссылки 
// Если страница рядом с началом, то увеличить цикл для того, 
// чтобы количество ссылок было постоянным 
if ($i 1) continue; 
// Подобное находится в верхнем цикле 
if (!isset($show_dots) && $begin 1) { 
echo 
' <a '.$style.' href='.$_server['php_self'].'?page='.($i-1).'><b>...</b></a> '
$show_dots "no"

// Номер ссылки перевалил за возможное количество страниц 
if ($i $pages_count) break; 
if (
$i == $page) { 
echo 
' <a '.$style.' ><b>'.$i.'</b></a> '
} else { 
echo 
' <a '.$style.' href='.$_server['php_self'].'?page='.$i.'>'.$i.'</a> '

// Если номер ссылки не равен кол. страниц и это не последняя ссылка 
if (($i != $pages_count) && ($j != $show_link)) echo $sperator
// Вывод "..." в конце 
if (($j == $show_link) && ($i $pages_count)) { 
echo 
' <a '.$style.' href='.$_server['php_self'].'?page='.($i+1).'><b>...</b></a> '


// Вывод ссылки на последнюю страницу 
if ($begin $show_link $pages_count) { 
echo 
' <a '.$style.' href='.$_server['php_self'].'?page='.$pages_count.'> >| </a>'

return 
true
// Конец функции 

// Подключение к базе данных 
mysql_connect('localhost''root''') or die('error! Нет соединения с сервером mysql!'); 
mysql_select_db('baza') or die('error! Нет соединения с базой данных!'); 

// Подготовка к постраничному выводу 
$perpage 1// Количество отображаемых данных из БД 
if (empty($_get['page']) || ($_get['page'] <= 0)) { 
$page 1
} else { 
$page = (int) $_get['page']; // Считывание текущей страницы 

// Общее количество информации 
$count mysql_numrows(mysql_query('select * from news')) or die('error! Записей не найдено!'); 
$pages_count ceil($count $perpage); // Количество страниц 
// Если номер страницы оказался больше количества страниц 
if ($page $pages_count$page $pages_count
$start_pos = ($page 1) * $perpage// Начальная позиция, для запроса к БД 
// Вызов функции, для вывода ссылок на экран 

yandex_link_bar($page$count$pages_count10); 

// Вывод информации из базы данных 
echo '<p><b>Постраничный вывод информации</b></p>'
$result mysql_query('select * from news limit '.$start_pos.', '.$perpage) or die('error!'); 
while (
$row mysql_fetch_array($result)) { 
echo 
'<p>'.$row['polnay'].'</p>'

?>


Помогите пожалуйста.

   
 
 автор: Usta   (04.05.2008 в 21:33)   письмо автору
 
   для: Makroris   (04.05.2008 в 19:08)
 

Уберите "0" mysql_result($result);

$posts = mysql_result($result, 0); 

   
 
 автор: devil943   (04.05.2008 в 21:36)   письмо автору
 
   для: Usta   (04.05.2008 в 21:33)
 

Да, лучше писать
$posts = mysql_result($result, '*'); т.к по идеи это строка, а ставя * вы смотрим все строки.

   
 
 автор: Makroris   (05.05.2008 в 11:08)   письмо автору
 
   для: devil943   (04.05.2008 в 21:36)
 

Да все равно не получается, я уже пробовал и с нулем и без него, и с * все равно ошибки выводит.
Может со вторум скриптом мне кто поможет разобраться. Там вроде все нормально, только по страницам не переход. (

   
 
 автор: sim5   (05.05.2008 в 11:16)   письмо автору
 
   для: Makroris   (05.05.2008 в 11:08)
 

Что значит "не переход", запрос происходит к несуществующим страницам или в чем проблемы? Взятый вами скрипт ведь не обязательно должен на все 100% подходить вам, что-то все равно вам придется править, а вы видимо этого не сделали, или я не прав?

   
 
 автор: Makroris   (05.05.2008 в 11:36)   письмо автору
 
   для: sim5   (05.05.2008 в 11:16)
 

Отображает записи только первой страницы, на остальные жмешь ни чего не происходит.
А что еще переделать надо. Подключение к базе переделал, название таблици и поля тоже.
Что еще надо? Подскажите, пожалуйста.

   
 
 автор: sim5   (05.05.2008 в 12:06)   письмо автору
 
   для: Makroris   (05.05.2008 в 11:36)
 

Самое главное, что надо, это уяснить принцип работы этого скрипта. Будете понимать - проблемы разрешите, нет - будете постоянно здавать вопросы. Ну самое простое, что вам можно сделать, это в браузере выбрать "Вид -> Просмотр HTML-кода" (или правый щелчек по странице и выбрать "Просмотр HTML-кода"), и просмотреть результат работы этого скрипта. Смотрим все записи в навигаторе (верны ли запросы атрибута href, параметры запроса), анализируем какие запросы будет получать скрипт, смотрим свою базу - а есть ли там в ней то, что запрашиваем... Если вообще ничего не происходит, то у вас либо в базе одна запись, либо вторая (и т.д.) страница в навигаторе это не ссылка, либо... Далее только гадать можно, а нужен анализ происходящего.

   
 
 автор: Makroris   (05.05.2008 в 21:49)   письмо автору
 
   для: Makroris   (04.05.2008 в 19:08)
 

Со страницами я разобрался.
Теперь не могу сделать нормально вывод из базы данных.
Мне надо что бы информация выводилась в таблице.

<table width="100%" height="100%" border="1">
        <tr> 
          <td>Дата публикации:<?php echo date ("d.m.y" strtotime$row['date']));?></td>
        </tr>
        <tr> 
          <td><?php echo $row_Recordset1['ne_polnay']; ?></td>
        </tr>
        <tr> 
          <td><a href="news_polnay.php?id=<?php echo $row['id']; ?>">Читать 
            всю...</a></td>
        </tr>
      </table> 

Какими это тегами обводит?
что то не получаеться ни чего постоянно ошибки выдает! :(

   
 
 автор: AcidTrash   (05.05.2008 в 22:10)   письмо автору
 
   для: Makroris   (05.05.2008 в 21:49)
 

Какие ошибки выдает?
И полностью привести пример того, что делаете.

   
 
 автор: Makroris   (05.05.2008 в 22:34)   письмо автору
 
   для: Makroris   (04.05.2008 в 19:08)
 

Ошибки самые разнообразные )
Ну пример выше,скрип который. мне за место записи
echo '<p>'.$row['polnay'].'</p>';  


нужно что бы таблица выводилась

<table width="100%" height="100%" border="1"> 
        <tr>  
          <td>Дата публикации:<?php echo date ("d.m.y" strtotime$row['date']));?></td> 
        </tr> 
        <tr>  
          <td><?php echo $row_Recordset1['ne_polnay']; ?></td> 
        </tr> 
        <tr>  
          <td><a href="news_polnay.php?id=<?php echo $row['id']; ?>">Читать  
            всю...</a></td> 
        </tr> 
      </table>  

как её туда вставить правильно

   
 
 автор: Maya   (06.05.2008 в 03:50)   письмо автору
 
   для: Makroris   (05.05.2008 в 22:34)
 

     <table width="100%" height="100%" border="1"> 
<?php
// здесь коннект к базе
$num 25
$page $_GET['page'];

$r="SELECT COUNT(*) FROM  news";   
$res mysql_query($r);
if(!
$res

  echo 
"Такая ошибка: ".mysql_error()."<br>"
  echo 
$r
  exit(); 
}

$posts mysql_result($res0); 
$total intval(($posts 1) / $num) + 1;  
$page intval($page); 
if(empty(
$page) or $page 0$page 1;   
if(
$page $total$page $total;  
$start $page $num $num;  

$result mysql_query("SELECT * FROM news LIMIT $start$num");
  if(
$res)
{
  while(
$news mysql_fetch_array($res))
    { 
              echo 
"<tr><td>".$news['date']."</td><td>".$news['ne_polnay']."</td><td><a href='news_polnay.php?id=".$news['id']."'>Читать   
            всю...</a></td></tr>"
// или выводить, как вам нужно
    
}

else 
{  
  echo 
"Такая ошибка: ".mysql_error()."<br>"
}
?>
     </table> 


Вывод составляющих навигации тоже есть здесь

   
 
 автор: mihdan   (07.05.2008 в 14:20)   письмо автору
 
   для: Makroris   (04.05.2008 в 16:03)
 


<?
$posts 
mysql_fetch_row($result);

// Замените на 

list($posts) = mysql_fetch_row($result);
?>

   
 
 автор: Makroris   (07.05.2008 в 14:37)   письмо автору
 
   для: mihdan   (07.05.2008 в 14:20)
 

Да все с этим я разобрался.)
Всем спасибо!

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования