3

データの表がユーザーに表示される小さなアプリを作成しました。データは、さまざまな列ヘッダーで並べ替えたり、入力を使用してフィルタリングしたりできます。

ユーザーが行をクリックすると、テーブルに表示されるのと同じ順序で、次のレコードと前のレコードに移動するための2つの矢印を含む小さなポップアップが開きます。

もともと私は持っていました(例えば「前」のために):

SELECT ed.id
FROM entity_details AS ed, users
WHERE ed.id > ?
AND ed.typeRef = ?
AND ed.ownerRef = users.id
$filter
$SQLOrder LIMIT 1

これは、テーブルがed.idで並べ替えられている場合は正常に機能しますが、ed.nameなどの別の列で並べ替えられている場合は正しく機能しません。これは、次のアルファベット名のidがはるかに高いまたは低い可能性があるためです。

参考までに、$filterは次のようになります。

AND branchRef = 2

$SQLOrderは次のようになります。

ORDER BY ed.name DESC

現在の順序とレコードの位置を尊重して、レコードを適切に循環させるにはどうすればよいですか?


すべての並べ替えとフィルタリングのパラメータは、AJAXを介して取得されます。例:

$JSON->selectedbranch ;

私が知る必要があるのは、値Yを含む列Xの行からクエリを開始する方法だけであるという結論に達しました。それは可能ですか?

4

3 に答える 3

0

PHPのmysql_data_seek機能が役立つかもしれません。

mysql_data_seek

于 2012-10-17T07:46:52.097 に答える
0

他の人の答えが私にアイデアを与えてくれたのを見て、私はそれを見つけましたが、彼の答えは消えました:(

私が持っている次のボタンについて:

$result = $dbh->prepare("SELECT ed.id
FROM entity_details AS ed, users
WHERE $WHERE < ?
AND ed.typeRef = ?
AND ed.ownerRef = users.id
$filter
ORDER BY ed.name DESC LIMIT 1") ;

$WHERE は単に列名「ed.name」です。

$where と ORDER BY 句のダイナミクスを整理するだけで済みます。

すべての入力に感謝します!

于 2012-10-17T09:10:10.157 に答える
0

ID ではなく、表示した行の番号を保存する必要があります。次に、アプリケーションの要件が示すように SQL で順序付けを行い、ここに含まれる知識を適用します。

最初の n 個の結果を MySQL でスキップする

仕事を簡素化し、この回答を将来の SO 居住者が使用できるようにするには:

SELECT ed.id 
FROM entity_details AS ed, users 
WHERE ed.typeRef = ? 
AND ed.ownerRef = users.id 
$filter 
$SQLOrder 
LIMIT $currentRowNum,1

ただし、このスキームはにおいがします。これを使用して行をナビゲートすることは、各ナビゲーション アクションの SQL クエリを意味します。それはあなたの応答時間に悪影響を与える可能性があります...

于 2012-10-17T07:24:56.947 に答える