在MySQL编写之前进行PHP数学验证

时间:2011-12-31 16:57:58

标签: php mysql foreach

我有一个PHP表单,可以发布以下任意数量的记录:

'asset_ID', 'percent_owner_<?=$members['member_ID']?>'

接收帖子的PHP页面使用以下内容分隔percent_owner和member_ID:

foreach ($_POST AS $input => $value) {
    if (stristr($input, 'percent_owner_')) {
    $memberID = str_replace('percent_owner_', '', $input);

    $data[$memberID] = array(
    'memberID' => $memberID,
    'percentOwner' => $value
       );
      }
     }

脚本的下一部分使用以下内容将任意数量的记录输入MySQL:

foreach ($data AS $share) {
    $asset_ID = $_GET['asset_ID'];
    $query = "INSERT INTO shares (asset_ID, member_ID, percent_owner) 
            VALUES ('$asset_ID', '{$share['memberID']}', '{$share['percentOwner']}')";
    $add_shares = $db->exec($query);
    }

所有这一切都很好。我现在遇到的麻烦是在上面的MySQL插入之前,我想验证所有百分比总计高达100%。例如,如果有3个成员具有25%,25%和25%,我想生成错误消息而不执行插入。现在,您必须手动输入百分比并将它们总计为100。数据库将接受少于或超过100%的数据。

在插入之前,我正在使用以下命令无效:

foreach ($data AS $share => $value) {
    $total = array_sum($value);
    }
    include('./view/temp.php');

我是PHP的新手,所以请忍受我的无知。

谢谢!

2 个答案:

答案 0 :(得分:0)

foreach ($data AS $share => $value) {
    if (array_sum($value) == 100) {
       // insert record
    }
    else {
       echo 'You borked it.'
    }
}

答案 1 :(得分:0)

以下流程中的内容足以满足您的需求。

foreach ($_POST AS $input => $value) {
    if (stristr($input, 'percent_owner_')) {
    $memberID = str_replace('percent_owner_', '', $input);

    $data['memberID'][] = $memberID;
    $data['percentOwner'][] = $value;
      }
     }

if(array_sum($data['percentOwner'] != 100)){
//generate Error
}

$c = count($data['memberID']);
for ($i=0;$i<$c;$i++) {

    $asset_ID = $_GET['asset_ID'];
    $query = "INSERT INTO shares (asset_ID, member_ID, percent_owner) 
            VALUES ('$asset_ID', '{$data['memberID'][$i]}', '{$data['percentOwner'][$i]}')";
    $add_shares = $db->exec($query);
    }