问题描述
我有一种将多行输入数据更新到我的sql中的表单。每行在表单中都有3个输入字段。我试图计算每个for循环中每一行中的空数据数量,并通过计算百分比将其更新为sql。例如,在3个输入字段中的一行中,只有2个输入字段被填充,因此百分比应为(2/3)* 100 = 67(向上舍入)。我怎么做?下面是我的代码。请检查是否对您有意义。
<?PHP
$execute = false;
$pr = 0;
$userid_array = $_POST['userid_array'];
$access_array = $_POST['access_array'];
$ic_array = $_POST['ic_array'];
$email_array = $_POST['email_array'];
foreach($userid_array as $key => $userid)
{
$array_count = 0;
$access = $access_array[$key];
$ic = $ic_array[$key];
$email = $email_array[$key];
$array_count = count(array_filter($access,$ic,$email)); //Count number of non-empty array elements
$pr_percent = round(($array_count/3)*100,0); //number of non-empty array elements divided by total number of input field multiply by 100
$tsql = "UPDATE MASTER SET [Access] = ?,[IC] = ?,[Email] = ?,[pr_percent] = ? WHERE user_id = ?";
$params_tsql = array($access,$email,$pr_percent,$userid);
$stmt = sqlsrv_query( $conn,$tsql,$params_tsql);
if($stmt)
{
$execute = true;
}
else
{
$execute = false;
die( print_r( sqlsrv_errors(),true));
}
}
if($execute){
echo "success";
}else{
echo "Failed";
}
?>
解决方法
@Nick非常感谢。我怎么会这么粗心。
下面是我的答案
$array_count = count(array_filter(array($access,$ic,$email)));