私は、この問題に対する適切な解決策を自分で考え出すのに非常に長い時間を費やしました。運が悪くても、さまざまな回答からソリューションをメッシュ化しようとしましたが、役立つ良い回答は見つかりませんでした。
目標: 複数のテーブルからのデータを含む、ページ分割されたプロジェクト ページを表示します。
PHP ループでクエリを実行することを避けたかったので、1 つの MYSQL クエリで複数の結合を使用しています。それだけで fetch_assoc の問題がwhile(fetch_assoc)
発生し、クエリによって行が繰り返されるため、ループから独自の結果配列を作成する必要がありました。ただし、次の問題は、クエリが、ページネーション リンクを生成し、num_rows などのクエリ データを取得するために使用するページネーション クラスを介して実行されることです。
現在、必要なデータを表示するページがありますが、ページネーション クラスが間違った量の行とページネーション リンクを表示しています。この問題を回避する最善の方法がわからない。優秀な専門家の 1 人からアイデアを得ることができれば幸いです。
コードは基本的に次のとおりです。
$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 つのプロジェクトのみであることに注意してください。そのため、ページネーション クラスは 7 つの num_rows を示していますが (当然のことながら)、プロジェクトは 4 つしかありません。
どんなアイデアでも大歓迎です!
他のテーブルからのサブクエリの結果を独自の列の文字列値に連結し、それをphpexplode()
などで解析すると、すべてのデータを含む単一のプロジェクト行が生成される可能性がありますが、まだ達成できていません。
よろしくお願いします。