2016-05-11 3 views
0

Как ограничить строки mysql, чтобы выбрать самые новые 50 строк и создать следующую кнопку, чтобы были выбраны следующие 50 строк, не зная точного количества строк?Как ограничить строки mysql, чтобы выбрать самые новые 50 строк

Я имею в виду, что в таблице может быть увеличение количества строк. Я объясню это четко: я разрабатывал веб-приложение в качестве своего проекта в системе управления документами, используя php mysql html. Все сделано, но при получении документов я имею в виду, что могут быть тысячи документов.

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

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

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

+0

показать, что вы сделали? – urfusion

+0

Отправьте свою структуру таблицы здесь. –

+0

Есть куча помогающих статей об этом. например http://code.tutsplus.com/tutorials/how-to-paginate-data-with-php--net-2928 – KiwiJuicer

ответ

0

То, что вы ищете, называется разбиением на страницы, а самый простой способ реализовать простую разбивку на страницы - это использовать LIMIT x , y в ваших SQL-запросах.

Вам не нужно общее сумма строк у вас есть, вам просто нужны два число:

  • сумма в elemments вы уже опрошены, так что вы знаете, где вы должны продолжить следующий запрос ,
  • Количество элементов, которые вы хотите перечислить каждый запрос (например, 50, как вы предложили).

Допустим, вы хотите запросить первые 50 элементов, вы должны вставить в конце запроса LIMIT 0,50, после того, что вам нужно хранить где-то тот факт, что вы уже опрашивается 50 элементов, так что следующий время, когда вы меняете предел на LIMIT 50,50 (начиная с элемента № 50 и запрашивая 50 следующих элементов).

Порядок зависит от полей, которые вы создаете при вставке записей. Обычно вы можете обновить таблицу и добавить поле created TIMESTAMP DEFAULT CURRENT_TIMESTAMP, а затем просто использовать ORDER BY created, так как теперь ваши записи будут хранить точное время, когда они были созданы, чтобы искать самые последние (если у вас есть AUTO_INCREMENT id, вы можете найти более высокие значения также).

Это может быть примером этой системы с помощью PHP и MySQL:

$page = 1; 
if(!empty($_GET['page'])) { 
    $page = filter_input(INPUT_GET, 'page', FILTER_VALIDATE_INT); 
    if(false === $page) { 
     $page = 1; 
    } 
} 

// set the number of items to display per page 
$items_per_page = 50; 

// build query 
$offset = ($page - 1) * $items_per_page; 
$sql = "SELECT * FROM your_table LIMIT " . $offset . "," . $items_per_page; 

Я нашел это post очень полезно, когда я первый попытаться сделать эту систему постраничной, поэтому я рекомендую вам, чтобы проверить его (это источник примера также).

Надеюсь, это помогло вам, и я сожалею, что не даю вам лучшего примера, так как у меня нет вашего кода.

+0

спасибо ... это было бы полезно ... но в таблице mysql .. информация о документе добавлено, и строки обновляются каждый раз, когда добавляется новый документ, и я хотел бы сначала отображать новейшие 50, но последний номер в таблице mysql изменяется каждый раз, когда добавляется новый документ ... поэтому я не могу каждый раз менять mysql-запрос в своем коде – ram

+0

@ram Если вы говорите о временной отметке, вам не нужно добавлять ее или изменять ее каждый раз при обновлении, просто измените структуру таблиц и добавьте это поле, чтобы у вас была ссылка, когда элемент был создан изначально. – asurbernardo

0

Поиск разбивки на страницы с использованием php & mysql. Это может стать полезным для вашей проблемы.

Чтобы ограничить запрос mysql для извлечения 50 строк, используйте ключевое слово LIMIT. Возможно, вам нужно найти & сохранить последний идентификатор строки (50-я строка), чтобы вы могли продолжить с 51-й по 100-ю строки на следующей странице.

Опубликовать то, что вы сделали с кодом. Пожалуйста, обратитесь к whathaveyoutried [dot] com

0

проверить этот пример из другого поста https://stackoverflow.com/a/2616715/6257039, вы могли бы сделать и Orber по идентификатору или CREATION_DATE по алфавиту в запросе

+0

фактически мой проект извлекает все строки в таблице, упорядоченной по времени загрузки ... – ram

Смежные вопросы