• 締切済み

SQLiteのデーターを独自に並び替え

PHPでSQLiteのデーターを独自に並び替えしようとしております。 データーベースkaiin id | name | email | sort_cd 1 | 名無し | aaa@bbb.jp | 2 2 | 名有り | bbb@ccc.jp | 1 フォーム <input type="submit" name="cmdUp" value="↑"> <input type="submit" name="cmdDw" value="↓">とし PHPソース require_once('dbcon.php'); if (isset($_POST["cmdUp"])) { $sort_fg='on'; $error = "メール会員の並び替えに失敗しました。"; cmdUp,cmdDwがクリックされたら該当レコードのsort_cdから1.5を減算または加算し表示順位を一つ上げたり下げたりしいのですがこの後のコードをどうすればいいのかどうしても分かりません。 また、順位を変えた後データーの値を振り直す必要があると思うのですが、そこもどういう風に行うかが皆目見当が付かず悩んでいます。 本を見て関係していそうな部分のコードを入れてみてテストしているのですが上手くゆきません。 今のところ解決の手がかりが見つからずここから前に進めない状態になってしまいました。 なにとぞ、お教え願えませんでしょうか?

みんなの回答

回答No.3

cmdUpすると、会員のRankのようなものが加算される、という意味だったのですね。 で、あれば、 Update table_name set sort_cd=sort_cd+1.5 WHERE id = 'ランクを上げたい会員のID'; とすれば良いのではないでしょうか。

回答No.2

似たような質問で、 http://okwave.jp/qa/q5111762.html といったものがあるのですが、こちらのベストアンサーの様に、別テーブルでソート順を保存するテーブルを持たせてはいかがですか。 HTML側では、各々の、IDを、 <input type="hidden" name="ids[]" value="1" /> などのように持たせて、やると、HTMLに記述されている順に、$_POST['ids']に配列としてIDが列挙されるはずなので、 PHP側で、それらのソート順を変更して、ソート順を保存するテーブルを全部消去して、全部書きなおす といった処理にし、保存するテーブルを元のkaiinテーブルにJOINさせてやれば、ソート順が確保出来ると思います。 ただ、今回のように無限に増えていくであろうメール会員に対して行うような処理方法ではないですが・・・

tinpu
質問者

お礼

hogehoge78さん、返信ありがとうございます。 http://okwave.jp/qa/q5111762.html を見てみました。 自分では元テーブルに順位を変えた物をそのまま残せる方法を考え中だったのですが、サイトの方法も参考にし考えてみたいと思います。 本を読みなおし色々ためしているのですがどうもうまくいきません。

回答No.1

SQLでのソートくらい学びましょうね。

tinpu
質問者

お礼

ここは勉強中または悩んでいる人たちが情報を分かち合うところだと認識しています。 >SQLでのソートくらい学びましょうね。 の様な返信はわざわざしていただかなくて結構。 (スルーしておいて頂きたい)

関連するQ&A