Re: [請益] 請問如何插入新行或刪除新行卻不影響資 …

看板PHP作者 (寶貝豬)時間16年前 (2009/06/26 12:44), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
提供一個概念, 僅供參考. 資料表 `b` 多兩個欄位: pre_id 及 next_id 分別用來代表一筆記錄的前一筆跟 後一筆的id. 依此形成'鏈結串列'. 舉例: bid pre_id next_id 1 0 2 2 1 3 3 2 4 4 3 0 當要設計一個函式用來處理以'插入'的方式新增一筆記錄於bid:3 與 bid:4之間 時: ($pre_id值為3, $next_id值為4) //1 新增一筆記錄,並取其id (假設`b`的bid是auto_increment的primary key) $sql="insert into `b` values(null,$pre_id,$next_id,...)"; mysql_query($sql); $newid=mysql_insert_id(); //2 更新 $pre_id 的記錄中的next_id值為$newid $sql="update `b` set next_id=$newid where id=$pre_id"; mysql_query($sql); //3 更新 $next_id 的記錄中的pre_id值為$new_id $sql="update `b` set pre_id=$newid where id=$next_id"; mysql_query($sql); 同理, 亦可再設計一個處理刪除的函式. 如此的話, 是可以保證在資料結構上, 這些記錄一定可以維持次序上 的關聯. 不過重點來了! 如何下SQL指令排序? 這個我在google上找了一些文章, 都沒有找到寫得比較清楚確定的解答. 這部份可能需要另寫一道專用 來為這種資料結構排序的procedure, 看來就算是比較進階的應用範圍了. ※ 引述《danielkimo (Daniel)》之銘言: : 資料表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: 203.67.139.64
文章代碼(AID): #1AH58d6A (PHP)
文章代碼(AID): #1AH58d6A (PHP)