数据表参考: 代码:-------------------------------------------------------------------------------- CREATE TABLE `mf_sort` ( `sortid` SMALLINT( 3 ) UNSIGNED NOT NULL AUTO_INCREMENT , `main` TINYINT( 2 ) UNSIGNED NOT NULL , `parentid` SMALLINT( 3 ) UNSIGNED NOT NULL , `layer` SMALLINT( 3 ) UNSIGNED NOT NULL , `orders` TINYINT( 2 ) UNSIGNED NOT NULL , `sort` VARCHAR( 100 ) NOT NULL , PRIMARY KEY ( `sortid` ) , INDEX ( `main` , `parentid` , `layer` , `orders` ) ); -------------------------------------------------------------------------------- 关键的函数 PHP代码:-------------------------------------------------------------------------------- function get_main_layer_orders($parentid) { global $x_db; $sql = "select `main`, `layer`, `orders` "; $sql .= "from `mf_sort` "; $sql .= "where `postid`='$parentid'"; $x_db->exec($sql); $data = $x_db->get_data(); $layer = $data[0]['layer']+1; $main = $data[0]['main']; $orders = $data[0]['orders']; $sql = "select `sortid` from `mf_sort` "; $sql .= "where `parentid`='$parentid'"; $x_db->exec($sql); $n = $x_db->n; if ($n>0) { $lastid = $parentid; get_lastid($lastid); $sql = "select `orders` from `mf_sort` "; $sql .= "where `sortid`='$lastid'"; $x_db->exec($sql); $data = $x_db->get_data(); $orders = $data[0][0]; $sql = "update `mf_sort` "; $sql .= "set `orders`=`orders`+1 "; $sql .= "where `orders`>$orders and `main`='$main'"; $x_db->exec($sql); $orders = $orders + 1; return array($main, $layer, $orders); } else { $sql = "update `mf_sort` "; $sql .= "set `orders`=`orders`+1 "; $sql .= "where `orders`>$orders and `main`='$main'"; $x_db->exec($sql); return array($main, $layer, $orders+1); } } //取得最后一个有效sortid function get_lastid(&$parentid) { global $x_db; $pre = $parentid; $sql = "select max(`sortid`) as `id` "; $sql .= "from `mf_sort` "; $sql .= "where `parentid` = '$parentid'"; $x_db->exec($sql); $data = $x_db->get_data(); $id = $data[0]['id']; if (empty($id)) { $parentid = $pre; } else { $parentid = $id; get_lastid($parentid); } } By phpfans.net收集整理 |