За последние 24 часа нас посетили 17552 программиста и 1977 роботов. Сейчас ищут 1159 программистов ...

Ошибка в постраничной навигации

Тема в разделе "PHP для новичков", создана пользователем tok-80, 7 май 2010.

  1. tok-80

    tok-80 Активный пользователь

    С нами с:
    1 май 2010
    Сообщения:
    14
    Симпатии:
    0
    Всем привет! Я вот новичок и в рядли пока сделаю с нуля постраничную навигацию,взял готовую.
    Но вот блин выдает ошибку на это $total = intval(($posts - 1) / $num) + 1;
    Пишет Fatal error: Unsupported operand types in
    Ниже часть кода
    PHP:
    1.  
    2. <?php
    3. $num = 4;  
    4. // Извлекаем из URL текущую страницу  
    5. @$page = $_GET['page'];  
    6. // Определяем общее число сообщений в базе данных  
    7. $result = mysql_query("SELECT COUNT(*) FROM schariki");  
    8. $posts = mysql_fetch_row($result);  
    9. // Находим общее число страниц  
    10. $total = intval(($posts - 1) / $num) + 1;     [b]НА ЭТУ СТРОКУ РУГАЕТСЯ[/b]
    11. // Определяем начало сообщений для текущей страницы  
    12. $page = intval($page);  
    13. // Если значение $page меньше единицы или отрицательно  
    14. // переходим на первую страницу  
    15. // А если слишком большое, то переходим на последнюю  
    16. if(empty($page) or $page < 0) $page = 1;  
    17.   if($page > $total) $page = $total;  
    18. // Вычисляем начиная к какого номера  
    19. // следует выводить сообщения  
    20. $start = $page * $num - $num;  
    21. // Выбираем $num сообщений начиная с номера $start  
    22. $result = mysql_query("SELECT * FROM post LIMIT $start, $num");  
    23. // В цикле переносим результаты запроса в массив $postrow  
    24. while ( $postrow[] = mysql_fetch_array($result))  
    25.  
    Помогите люди добрые объясните что я не так делаю
     
  2. iliavlad

    iliavlad Активный пользователь

    С нами с:
    24 янв 2009
    Сообщения:
    1.689
    Симпатии:
    4
    $total = intval(($posts[0] - 1) / $num) + 1;    НА ЭТУ СТРОКУ РУГАЕТСЯ
     
  3. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    $posts = mysql_fetch_row($result);
    меняем на
    $posts = mysql_num_rows($result);
     
  4. tok-80

    tok-80 Активный пользователь

    С нами с:
    1 май 2010
    Сообщения:
    14
    Симпатии:
    0
    О класс прошло! :D СПАСИБО1 Тока теперь на это ругается while ( $postrow[] = mysql_fetch_array($result))

    таким образом mysql_fetch_array(): supplied argument is not a valid MySQL result resource in

    это как понял в таблице чего нет что ли ? Или цикл сюда вставить надо?
     
  5. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    tok-80
    Блин, да не слушай ты Апельсин, он бред несет.

    Читай, то что написал iliavlad.
     
  6. tok-80

    tok-80 Активный пользователь

    С нами с:
    1 май 2010
    Сообщения:
    14
    Симпатии:
    0
    :D дА.Точно так привильнее.Спасибо
     
  7. tok-80

    tok-80 Активный пользователь

    С нами с:
    1 май 2010
    Сообщения:
    14
    Симпатии:
    0
    Все вроде получилось тока где число сообщений меняю на 2 он как был 4 так и остается 4 .Может все таки что не так в коде
     
  8. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
  9. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Омг. Дауны еще число строк не считали путем получения всех данных из базы.


    Что меняешь и где кто остается?
     
  10. tok-80

    tok-80 Активный пользователь

    С нами с:
    1 май 2010
    Сообщения:
    14
    Симпатии:
    0
    У меня цикл по выводу данных,мне надо выводить по два на каждую страницу.
    Я как понимаю это количество меняется тут $num = 2;
    Но цикл все равно выводит все н е по 2 как надо
     
  11. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    И по сколько же он выводит?

    Вот это
    еще в коде осталось?
     
  12. tok-80

    tok-80 Активный пользователь

    С нами с:
    1 май 2010
    Сообщения:
    14
    Симпатии:
    0
    В таблице пока 4 он и выводит 4 я пробовал поставить 2 не выходит


    $result = mysql_query("SELECT * FROM post LIMIT $start, $num"); да это в коде
     
  13. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Так не бывает.

    Берем запрос отдельно выводим на экран
    Код (Text):
    1. echo "SELECT * FROM post LIMIT $start, $num"
    и смотрим что оно выводит.