[請益] 請問如何插入新行或刪除新行卻不影響資料順序的問題呢

看板PHP作者 (Daniel)時間16年前 (2009/06/26 09:13), 編輯推噓4(4021)
留言25則, 6人參與, 最新討論串1/1
資料表a與資料表b互相連結, a中有編號1與編號2的兩筆記錄分別各自連結b中的10筆記錄, 示意圖如下: 資料表a: ------------------------------------------------------------------ aid name data date 1 xxxx xxxx xxxx 2 xxxx xxxx xxxx ------------------------------------------------------------------ 資料表b ------------------------------------------------------------------ bid type content date aid 1 xxxx xxxx xxxx 1 2 xxxx xxxx xxxx 1 3 xxxx xxxx xxxx 1 4 xxxx xxxx xxxx 1 5 xxxx xxxx xxxx 1 6 xxxx xxxx xxxx 1 7 xxxx xxxx xxxx 1 8 xxxx xxxx xxxx 1 9 xxxx xxxx xxxx 1 10 xxxx xxxx xxxx 1 11 xxxx xxxx xxxx 2 12 xxxx xxxx xxxx 2 13 xxxx xxxx xxxx 2 14 xxxx xxxx xxxx 2 15 xxxx xxxx xxxx 2 16 xxxx xxxx xxxx 2 17 xxxx xxxx xxxx 2 18 xxxx xxxx xxxx 2 19 xxxx xxxx xxxx 2 20 xxxx xxxx xxxx 2 ------------------------------------------------------------------ 在網頁上列出資料表a的紀錄,當使用者點集連結之後,會秀出資料表b的資料(根據bid排序) 如果秀出資料表b的網頁的每一行我都加入兩個按鈕(刪除此行.插入行) 這樣就有可能會破壞原來資料表b中的資料順序關係(因為資料表中bid1~10的資料有先後續順的關係) 請問這樣要怎樣做呢? 謝謝!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.109.21.90

06/26 09:56, , 1F
照 bid 排序 show 出不行嗎?
06/26 09:56, 1F

06/26 09:58, , 2F
但你不知道使用者會在哪邊插入新行
06/26 09:58, 2F

06/26 09:58, , 3F
插入新行的id一定是在最後面
06/26 09:58, 3F

06/26 09:59, , 4F
這樣順序就亂掉了阿
06/26 09:59, 4F

06/26 09:59, , 5F
SELECT * FROM `b` WHERE `aid` = $aid ORDER BY
06/26 09:59, 5F

06/26 09:59, , 6F
`bid`
06/26 09:59, 6F

06/26 09:59, , 7F
比如說使用者在網頁上bid4與bid5中間插入一行
06/26 09:59, 7F

06/26 10:00, , 8F
但實際在資料庫卻是新增b21那一列
06/26 10:00, 8F

06/26 10:00, , 9F
那之後如果要把bid秀出來,b21這一行應該是要在b4之後
06/26 10:00, 9F

06/26 10:01, , 10F
b5之前,但是沒辦法阿...因為show資料我是用
06/26 10:01, 10F

06/26 10:01, , 11F
mysql_fetch_array搭配while去跑得
06/26 10:01, 11F

06/26 10:01, , 12F
所以一定是按bid去秀資料
06/26 10:01, 12F

06/26 10:02, , 13F
所以不管怎麼秀b21都不會排在b4後b5之前
06/26 10:02, 13F

06/26 10:05, , 14F
06/26 10:05, 14F

06/26 10:05, , 15F
似乎是只能重新規劃資料庫了XD"
06/26 10:05, 15F

06/26 10:13, , 16F
需要新增一個排序的欄位 而且是有間隔的跳號方式
06/26 10:13, 16F

06/26 10:14, , 17F
但是跳號 還是會有插入數目的限制~
06/26 10:14, 17F

06/26 10:17, , 18F
如果不用整數欄位 排序欄就要用數字運算 插入中間數
06/26 10:17, 18F

06/26 10:18, , 19F
但是要小心 除以2會變成0.5 位數不能無限制
06/26 10:18, 19F

06/26 10:20, , 20F
總之 都是麻煩呀.....
06/26 10:20, 20F

06/26 11:38, , 21F
可以把'資料結構'裏'鏈結串列'的概念應用進來.
06/26 11:38, 21F

06/26 11:46, , 22F
樓上,這樣還要去學鏈結串列耶XDD
06/26 11:46, 22F

06/26 19:27, , 23F
aid和bid合成一個key 然後每個aid的bid都從1開始排
06/26 19:27, 23F

06/26 19:27, , 24F
這樣如何@@?
06/26 19:27, 24F

06/29 09:19, , 25F
鏈結串列 好像實做上會很麻煩...要串連的效率不佳
06/29 09:19, 25F
文章代碼(AID): #1AH22lwK (PHP)
文章代碼(AID): #1AH22lwK (PHP)