我有一个PHP表单张贴任意数量的记录以下:
'asset_ID', 'percent_owner_<?=$members['member_ID']?>'
接收post的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新手,所以请原谅我的无知。
谢谢!
我认为以下流程可以满足您的需求。
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);
}
foreach ($data AS $share => $value) {
if (array_sum($value) == 100) {
// insert record
}
else {
echo 'You borked it.'
}
}