0

こんにちはみんな私はcakephpのページ付けと並べ替えに関して問題があります

ページ化されたビューをフローとして設定しました

SR.NO | 名前| 住所| 電話|..。

SR.NOは、データベースIDの代わりにデータを表示するためのforeachループ内の単純なカウンターです。

以下のリンクは、私のSR.NOがどのように作成されるかを示しています

CakePHP:番号付きのページ付けされた結果

今までは大丈夫です...

SR.NOに基づいて結果を並べ替える必要がありますが、これを実現する方法がわかりません...

頭に光を当ててくれてありがとう...

4

1 に答える 1

0

私の理解が正しければ、S.NO は結果の行番号にすぎず、PHP で追加されています。

クエリで結果が並べ替えられず、S.NO がデータベースのデータと関係がない場合、この列で並べ替えを行うことはできず、並べ替えを行う意味がありません。

説明

「ORDER BY xxx」のない SQL クエリは、ランダムな順序で結果を返します。SQL Server UNION - デフォルトの ORDER BY 動作とは

基本的に、これは、クエリを実行するたびに、結果が異なる順序で返される可能性があることを意味します。

追加している S.NO は、クエリから返された結果の順序に基づいていますが、この順序はランダムであるため、同じページを表示するたびに、同じレコードが別の位置、つまり別の S.いいえ

オプション

結果の順序が毎回一貫するように、結果を並べ替える列を指定します。必要に応じて、並べ替え順序をにすることもできます。S.NO は引き続き使用できますが、純粋にプレゼンテーション用です

または、SQL を使用して行の位置を計算します ( MYSQL クエリで行の位置を取得します)。ただし、この場合でも、行番号は結果の各行の位置に基づいています。no が存在する場合ORDER BY、行番号は依然として「ランダム」であり、クエリが実行されるたびに同じ行が異なる S.NO / 行番号を取得する場合があります。

最後のオプションは、JavaScript を使用してソートすることです (他の人が提案したように)。ただし、「ランダム」な順序であるため、これはページに表示されているレコードに対してのみ実行できます。ページネーション (ページ x の y) を使用している場合、データベース テーブル全体を並べ替えるには、データベースに対する新しいクエリが必要になります (全体の「ランダム」の問題のために並べ替えることができません)。

于 2013-03-14T22:43:44.670 に答える