把添加记录和修改记录区别开。 if(add)-->$sql = select name from table if(edit)-->$sql = select name freom table where id !=此记录的id
pg_query($conn,"BEGIN WORK;LOCK TABLE tbc_student IN EXCLUSIVE MODE;"); $res=pg_query($conn,"select name,birthday,age,class from tbc_student where name='".${name.($i+1)}."' and birthday='".${birthday.($i+1)}."' and age='". ${age.($i+1)}."' and class='".${class.($i+1)}."' for update"); pg_query($conn,"COMMIT WORK;"); $row=pg_fetch_row($res); if($row>1) { alert_goback_script('记录重複,请重新输入!'); exit; } 当我保存修改状态的记录时(并没有修改该条记录),就执行了if语句
PostgreSQL不熟悉。id name ============= 1 a 2 b 3 c ============= 你要修改第二条数据,应该select name where name=... and id !=2;你上面的语句似乎整个表格搜了一遍.
难道是select name,birthday,age,class from tbc_student where name='".${name.($i+1)}."' and birthday='".${birthday.($i+1)}."' and age='". ${age.($i+1)}."' and class='".${class.($i+1)}."' and id!='$id' 数据库里面是有个id号 但是好像这样不行哟
主要是逻辑得明了 处理页面: ============ if(empty($_POST['id'])) {//判断id是否为空,区别开添加和编辑操作 //空则做添加操作 $sql = "select ... from table"; } else { //有值则做编辑操作 $sql = "select ... from table where id !=".$_POST['id']; }
不明白你的需求????? if(empty($_POST['id'])) {//判断id是否为空,区别开添加和编辑操作 //空则做添加操作 $sql = "select ... from table"; if(没有相同数据) {$sql = "insert into ...."} } else { //有值则做编辑操作 $sql = "select ... from table where id !=".$_POST['id']; if(没有相同数据) {$sql = "update ...."} }
你看看,这就是我写的code pg_query($conn,"BEGIN WORK;LOCK TABLE tbc_student IN EXCLUSIVE MODE;"); $res=pg_query($conn,"select name,birthday,age,class from tbc_student where name='".${name.($i+1)}."' and birthday='".${birthday.($i+1)}."' and age='". ${age.($i+1)}."' and class='".${class.($i+1)}."' for update"); pg_query($conn,"COMMIT WORK;"); $row=pg_fetch_row($res); if($row>1) { alert_goback_script('记录重複,请重新输入!'); exit; } 当我保存修改状态的记录时(并没有修改该条记录),就执行了if语句
现我把语句改成下面的,还是不行! pg_query($conn,"BEGIN WORK;LOCK TABLE tbc_student IN EXCLUSIVE MODE;"); $res=pg_query($conn,"select name,birthday,age,class from tbc_student where id!='".${id.($i+1)}."' for update"); pg_query($conn,"COMMIT WORK;"); $row=pg_fetch_row($res); if($row>1) { alert_goback_script('记录重複,请重新输入!'); exit; }
$res=pg_query($conn,"select name,birthday,age,class from tbc_student where name='".${name.($i+1)}."' and birthday='".${birthday.($i+1)}."' and age='". ${age.($i+1)}."' and class='".${class.($i+1)}."'and id!='".${id.($i+1)}."' for update");
四个条件同时满足!***************楼主自己不是已经写出来了吗?
我们一起创业,我们一起发财,我们一起快乐,我们一起努力!
if(add)-->$sql = select name from table
if(edit)-->$sql = select name freom table where id !=此记录的id
$res=pg_query($conn,"select name,birthday,age,class from tbc_student where name='".${name.($i+1)}."' and birthday='".${birthday.($i+1)}."' and age='". ${age.($i+1)}."' and class='".${class.($i+1)}."' for update");
pg_query($conn,"COMMIT WORK;");
$row=pg_fetch_row($res);
if($row>1)
{ alert_goback_script('记录重複,请重新输入!');
exit;
}
当我保存修改状态的记录时(并没有修改该条记录),就执行了if语句
=============
1 a
2 b
3 c
=============
你要修改第二条数据,应该select name where name=... and id !=2;你上面的语句似乎整个表格搜了一遍.
数据库里面是有个id号
但是好像这样不行哟
这四个字段的不能有重复记录
1 张三 1982.2.21 25 2610
2 张三 1982.2.21 25 2610
3 张三 1982.2.21 25 2611
4 张三 1983.2.21 24 2610
5 李四 1982.2.21 25 2610
第1条记录和第2条记录是不能出现的,在表单中id是隐藏。当修改状态时-----
2 张三 1982.2.21 25 2612
3 张三 1982.2.21 25 2613
4 张三 1983.2.21 24 2614
==============================
比如你要修改id=1的数据,就应该把id=1(修改过或未修改)的数据和id为2,3,4的数据比较。把它当成一条新插入的数据来做。
foolbirdflyfirst(湖水清澈)能点代码出来
谢谢了!!!!!!!!!!!!
处理页面:
============
if(empty($_POST['id']))
{//判断id是否为空,区别开添加和编辑操作
//空则做添加操作
$sql = "select ... from table";
}
else
{
//有值则做编辑操作
$sql = "select ... from table where id !=".$_POST['id'];
}
if(empty($_POST['id']))
{//判断id是否为空,区别开添加和编辑操作
//空则做添加操作
$sql = "select ... from table";
if(没有相同数据) {$sql = "insert into ...."}
}
else
{
//有值则做编辑操作
$sql = "select ... from table where id !=".$_POST['id'];
if(没有相同数据) {$sql = "update ...."}
}
pg_query($conn,"BEGIN WORK;LOCK TABLE tbc_student IN EXCLUSIVE MODE;");
$res=pg_query($conn,"select name,birthday,age,class from tbc_student where name='".${name.($i+1)}."' and birthday='".${birthday.($i+1)}."' and age='". ${age.($i+1)}."' and class='".${class.($i+1)}."' for update");
pg_query($conn,"COMMIT WORK;");
$row=pg_fetch_row($res);
if($row>1)
{ alert_goback_script('记录重複,请重新输入!');
exit;
}
当我保存修改状态的记录时(并没有修改该条记录),就执行了if语句
pg_query($conn,"BEGIN WORK;LOCK TABLE tbc_student IN EXCLUSIVE MODE;");
$res=pg_query($conn,"select name,birthday,age,class from tbc_student where id!='".${id.($i+1)}."' for update");
pg_query($conn,"COMMIT WORK;");
$row=pg_fetch_row($res);
if($row>1)
{ alert_goback_script('记录重複,请重新输入!');
exit;
}
pg_fetch_row改成pg_num_rows也不行
然后有四个显示的INPUT分分别是name,birthday,age,class然后在提交以后判断
if (name1!=name2 && birthday1!=birthday2 && age1!=age2 && class1!=class2)
执行插入
不知怎么解决
不知是不是有甚么for循环语句?