Я слишком долго пытался найти подходящее решение этой проблемы самостоятельно. Не нашли никаких хороших ответов, чтобы помочь, хотя я и попытался объединить решения из разных ответов без везения.Boggled ... MYSQL + JOIN + PAGINATION
Цель: представить страницу с разбивкой по страницам, содержащую данные из нескольких таблиц .
Я использую несколько объединений в одном запросе MYSQL, потому что я хотел избежать выполнения запросов в петле PHP. Это само по себе ввело проблему fetch_assoc, где мне пришлось создать собственный массив результатов из цикла while(fetch_assoc)
из-за повторяющихся строк, полученных в результате запроса. Однако следующая проблема заключается в том, что запрос выполняется через класс pagination, который я использую для создания ссылок на страницы и получения данных запроса, таких как num_rows и т. Д.
Так что прямо сейчас у меня есть страница, показывающая данные, которые я хочу, но класс разбиения на страницы показывает мне неправильное количество строк и ссылок на страницы. Не уверен, что лучший способ решения этой проблемы. Надеюсь получить некоторые идеи от одного из вас блестящих экспертов!
код в основном:
$sql = "...."
$projects = new pager($sql)
echo $projects->num_rows
while($projects->fetch_assoc){
build new array from data
$project_array[][][]
}
foreach($project_array){
display data from all tables...
}
$projects->showPageLinks
Этот SQLFiddle приведен пример данных, я получаю:
Обратите внимание, что существует 7 строк результата, но только для 4 проектов. Таким образом, класс pagination показывает 7 num_rows (по праву), но есть только 4 проекта.
Любые идеи приветствуются!
44 Хотя я мог бы объединить результаты подзапроса из других таблиц в строковое значение в собственных столбцах и разобрать это с помощью php explode()
и таким образом, чтобы затем создавать отдельные строки проекта со всеми данными, но я не смог выполнить это еще.
Заранее благодарю вас за помощь!
Как ваш класс пейджера извлекает количество строк? Не считал бы (отличная project_id) помощь? – pvytykac
Он использует '$ res = $ conn-> query ($ sql)' и '$ res-> num_rows;', и класс обычно используется во всем проекте. Именно на этой странице проектов это мешает. – Chris