Re: [請益] 請問如何插入新行或刪除新行卻不影響資 …
提供一個概念, 僅供參考.
資料表 `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
PHP 近期熱門文章
PTT數位生活區 即時熱門文章