"PHP" / Говнокод #20180 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
$number_of_posts = 1;
$page_id = $_GET['page'];
$all_posts_query = "SELECT * FROM `posts` WHERE status = 'publish'";
$all_posts_run = mysqli_query($con, $all_posts_query);
$all_posts = mysqli_num_rows($all_posts_run);
$total_pages = ceil($all_posts / $number_of_posts);
$posts_start_from = ($page_id - 1) * $number_of_posts;

$query = "SELECT * FROM `posts` WHERE `status` = 'publish' ORDER BY id DESC LIMIT $posts_start_from, $number_of_posts";

Задача: сделать паджинацию, выжрав максимум ресурсов сервера :))
Сверхзадача: реализовать выборку по id с помощью LIMIT'а

Запостил: DDDeeper DDDeeper, (Updated )

Комментарии (11) RSS

  • Пагинация с запросом всех постов? АХАХАХАХАХАХАХА ВОТ ЭТО ДОЛБОЕБ !!!!!
    Ответить
  • А как надо правильно сделать пагинацию-то?
    Ответить
    • Ну наверное как минимум в первом SQL-запросе получить кол-во записей, а не сами записи...
      Ответить
      • Кстати, сейчас во многих местах это количество даже не пытаются получать, чтобы сервер не дрочить зазря. Один хер почти все читают либо только первую/последнюю страничку либо по порядку...
        Ответить
    • SELECT COUNT(*) FROM [TABLE_NAME]


      а потом
      SELECT * FROM (
              SELECT ROW_NUMBER()OVER(ORDER BY ID)AS ID
                    ,ID
              FROM TABLE_NAME
      )AS tbl 
      WHERE ID > (index-1)*EntitiesOnPageCount AND ID <= index*EntitiesOnPageCount 
      ORDER BY tbl.ID
      Ответить
        • Нет (

          Даже SKIP не завезли

          Но в подавляющем большинстве случает пишешь запрос через LINQ. так что сей запрос превращается в милое
          _objectSet.Skip(n).Take(k);
          Ответить

Добавить комментарий

Переведи на "PHP", guest!

    А не использовать ли нам bbcode?


    8