Php 我有一个复选框,有点像sql 2008 server;当它';s已选中,它将运行存储过程

Php 我有一个复选框,有点像sql 2008 server;当它';s已选中,它将运行存储过程,php,sql,Php,Sql,像这样: if (post('tranfer') == 1 && $patient->exists) { sql::query("exec event.dbo.sp_tran " . $patient->hex); } 当它被取消选中时,它应该运行一个反向存储过程 因为它是表中的一个新复选框。所有成员都不会被自动选中,它们都将具有0。 所以我恐怕不能用简单的else语句 else (post('tranfer') == 0 &&a

像这样:

if (post('tranfer') == 1 && $patient->exists)
    {
    sql::query("exec event.dbo.sp_tran " . $patient->hex);  
    }
当它被取消选中时,它应该运行一个反向存储过程

因为它是表中的一个新复选框。所有成员都不会被自动选中,它们都将具有0。 所以我恐怕不能用简单的else语句

else (post('tranfer') == 0 && $patient->exists)
        {
        sql::query("exec event.dbo.sp_reverse " . $patient->hex);   
        }
这会起作用吗?还是我遗漏了一些对这件作品有害的东西

if ($patient->exists) {
  if (post('tranfer') == 1) {
    sql::query("exec event.dbo.sp_tran " . $patient->hex);
  } else {
    sql::query("exec event.dbo.sp_reverse " . $patient->hex);
  }
}
更新:

要检测何时有人更改了复选框的值,请在包含列的旧值的表单中放置一个隐藏字段:

echo '<input name="old_tranfer" type="hidden" value="' . $patient->tranfer .'">';

什么是
post('transfer')
?你的意思是
$\u POST['transfer']
?这与我上面写的不一样吗?这取决于
POST('transfer')
返回的内容,如果该字段根本不在POST数据中。浏览器不会为未选中的框发送任何内容。在我选中并保存它之后。。。我和它返回了一个空的。。数组()表单是否使用
method='get'
?复选框是否具有
属性?好的,我想我理解您的问题。您需要一种方法来区分已设置方框的患者主动取消勾选方框与未设置此新字段的患者不勾选方框之间的区别。
if (post('transfer') != post('old_transfer') && $patient->hex) {
  if (post('tranfer') == 1) {
    sql::query("exec event.dbo.sp_tran " . $patient->hex);
  } else {
    sql::query("exec event.dbo.sp_reverse " . $patient->hex);
  }
}