数据库结构与数据,先新建一个nisshope数据库,后可以直接导入:-- phpMyAdmin SQL Dump
-- version 3.3.9
-- http://www.phpmyadmin.net
--
-- 主机: localhost
-- 生成日期: 2011 年 11 月 10 日 03:16
-- 服务器版本: 5.5.8
-- PHP 版本: 5.3.5SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;--
-- 数据库: `nisshope`
---- ----------------------------------------------------------
-- 表的结构 `tg_pe_user`
--CREATE TABLE IF NOT EXISTS `tg_pe_user` (
  `tg_id` smallint(4) unsigned NOT NULL AUTO_INCREMENT COMMENT '//自动编号',
  `tg_sid` smallint(4) unsigned NOT NULL DEFAULT '0' COMMENT '//排序ID',
  `tg_usernumber` varchar(10) NOT NULL COMMENT '//员工工号',
  `tg_username` varchar(20) NOT NULL COMMENT '//员工姓名',
  `tg_txtday` char(2) NOT NULL COMMENT '//班别',
  `tg_addname` varchar(20) NOT NULL COMMENT '//添加人',
  `tg_date` datetime NOT NULL COMMENT '//日期',
  PRIMARY KEY (`tg_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=20 ;--
-- 转存表中的数据 `tg_pe_user`
--INSERT INTO `tg_pe_user` (`tg_id`, `tg_sid`, `tg_usernumber`, `tg_username`, `tg_txtday`, `tg_addname`, `tg_date`) VALUES
(1, 1, 'C060403', '劉小軍', '', '', '2011-10-21 15:07:22'),
(2, 2, 'C080502', '帥曉霞', '', '', '2011-10-21 15:07:31'),
(3, 3, 'C050702', '張莉', '', '', '2011-10-21 15:08:11'),
(4, 4, 'S1102495', '席容芳', '', '', '2011-10-21 15:08:40'),
(5, 5, 'C060902', '李雲峰', '', '', '2011-10-21 15:09:24'),
(6, 6, 'F1007006', '胡國清', '', '', '2011-10-21 15:09:49'),
(7, 7, 'F1007010', '司志強', '', '', '2011-10-21 15:10:11'),
(8, 8, 'C050907', '王文俊', '', '', '2011-10-21 15:10:31'),
(9, 9, 'F1009122', '周林縣', '', '', '2011-10-21 15:13:14'),
(10, 10, 'F1003018', '范超', '', '', '2011-10-21 15:13:30'),
(11, 11, 'F1106068', '韋獻文', '', '', '2011-10-21 15:14:14'),
(12, 12, 'S1103022', '陳國國', '', '', '2011-10-21 15:14:37'),
(13, 13, 'F1103011', '鄒仕平', '', '', '2011-10-21 15:16:19'),
(14, 14, 'F1103018', '耿磊', '', '', '2011-10-21 15:16:43'),
(15, 15, 'F1105038', '王小威', '', '', '2011-10-21 15:17:04'),
(16, 16, 'F1003180', '楊世偉', '', '', '2011-10-21 15:17:42'),
(17, 17, 'F1107002', '牛偉', '', '', '2011-10-21 15:18:02'),
(18, 18, 'H1108031', '王全良', '', '', '2011-10-21 15:18:33');test.php页面:<?php
mysql_connect("localhost","root","");
mysql_select_db("nisshope");
mysql_query("set names utf8");
//接收新的顺序
if ($_GET['action'] == 'upsort' && isset($_POST['sid'])) {
//接收数据
$_num = mysql_num_rows(mysql_query("SELECT tg_id FROM tg_pe_user"));
$_arr = $_POST['sid']; foreach ($_arr as $_order => $_item) {
$_id = $_order + 1;
mysql_query("UPDATE tg_pe_user SET tg_sid = $_item WHERE tg_id = $_id ");
}
}
//读取数据
$_result = mysql_query("SELECT 
  tg_id,
  tg_sid,
  tg_username,
  tg_usernumber,
  tg_date
     FROM
          tg_pe_user
 ORDER BY
          tg_sid ASC
");
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>设置</title>
</head>
<body>
<div id="content">
<h5>设置排序</h5>
<form method="post" action="?action=upsort">
<table>
<tbody>
<tr><th>工号</th><th>姓名</th><th>顺序</th></tr>
<?php 
while (!!$_rows = mysql_fetch_array($_result)) {  
echo '<tr><td>'.$_rows['tg_usernumber'].'</td><td>'.$_rows['tg_username'].'</td><td><input type="text" name="sid[]" maxlength="2" value="'.$_rows['tg_sid'].'"/></td></tr>';
}
?>
<tr><td colspan="3" class="modify"><input name="submit" type="submit" value="修改" /></td></tr>
</tbody>
</table>
</form>
</div>
</body>
</html>
如上为数据库与PHP页面
目的为修改先后顺序.
1.比如,将顺序那一栏中的顺序 1与2手动对调一下, test.php会更改对应的顺序显示;2.更改之后,我再次将1与2对调,此时就不行了,不能将数据库里面的tg_sid对调过来,该怎么办啊?困扰我很多天了~~ 谢谢

解决方案 »

  1.   

    你UPDATE 时没固定tg_id对应更新啊。怎能$_id = $_order + 1;这样。改
    <input type="text" name="sid[]" maxlength="2" value="'.$_rows['tg_sid'].'"/>

    <input type="text" name="sid['.$_rows['tg_id'].']" maxlength="2" value="'.$_rows['tg_sid'].'"/>改
     $_id = $_order + 1;

     $_id = $_order;试试
      

  2.   

    效果一样,我将$_order与$_intem对调过,也是一样,要不你将数据库导入到你的电脑帮我看看.谢谢
      

  3.   

    你试了么? 你先按我说的改试下吧。怎就没听人说呢 =_=
    很明显是
    $_id = $_order + 1;
    有问题
      

  4.   

    两个地方都改了吗? 改
    <input type="text" name="sid[]" maxlength="2" value="'.$_rows['tg_sid'].'"/>

    <input type="text" name="sid['.$_rows['tg_id'].']" maxlength="2" value="'.$_rows['tg_sid'].'"/>改
     $_id = $_order + 1;

     $_id = $_order;
      

  5.   


    这段代码解决了,呵~~ 谢谢了~~
    <input type="text" name="sid['.$_rows['tg_id'].']" maxlength="2" value="'.$_rows['tg_sid'].'"/>