0

プログラムのタイトル (eventdesc) のメイン行を返し、プログラムの参加者と情報を複数のサブ行としてリストするこの基本的なクエリがあります。

プログラム 1
電子メール 1、電子メール 2、名前、ステータス (最初の参加者)
電子メール 1、電子メール 2、名前、ステータス (2 番目の参加者)
プログラム 2
電子メール 1、電子メール 2、名前、ステータス (最初の参加者)

等...

基本的なクエリ:

$query_perpage = "SELECT COUNT(*) FROM camps_events";
$result = mysql_query($query_perpage, $db) or die(mysql_error());
$r = mysql_fetch_row($result);
$numrows = $r[0];


$pages = new Paginator($query);
$pages->items_total = $numrows;
$pages->paginate();
$pages->mid_range = 7;


$query = mysql_query("SELECT ce.eventcode, ce.eventdesc, ce.date, r.participant_fname, r.participant_lname, 
r.position, r.dob, r.status, r.email_primary, r.order_number 
FROM camps_events ce 
RIGHT JOIN registrations r on r.eventcode = ce.eventcode 
WHERE ce.reg_status = 'Active' 
AND r.status NOT IN ('Incomplete','Canceled')".getAllowedPrograms()." 
ORDER BY ce.eventdesc, ce.eventcode, r.participant_lname ASC $pages->limit ") or die(mysql_error());

サブローの数に関係なく、プログラムごとにページ分割する方法を見つけようとしています。別のページにページ付けクラスを配置していますが、それは 1 つのテーブルからのみ取得します。

私は同じページネーションを実装しようとしましたが、最初のプログラムをプルすることしかできず、メインプログラム行ではなくサブ行に基づいてページを制限します。そして、ここに投稿した状態では、次の各ページには最初のプログラムのみが表示されます。表示されるサブ行はページごとに異なりますが、最初のプログラムにすべて含まれているかどうかはわかりません。

クエリはすべての結果を適切に取得するためには問題なく機能しますが、リストが巨大な場合は非常に非効率的であり、ブラウザがタイムアウトすることさえあります。

他に何か含めることができるかどうか教えてください。

私は同じページネーション クラスを使用することにあまり関心がないので、さまざまなアプローチに対して完全にオープンです。

前もって感謝します

4

1 に答える 1