Проверка математики PHP перед записью в MySQL - PullRequest
0 голосов
/ 31 декабря 2011

У меня есть форма PHP, которая публикует любое количество записей для следующего:

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

Страница PHP, получающая сообщение, разделяет процент_обладателя и 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 голосов
/ 31 декабря 2011

Мне кажется, что вам понадобится что-то со следующим потоком.

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);
    }
0 голосов
/ 31 декабря 2011
foreach ($data AS $share => $value) {
    if (array_sum($value) == 100) {
       // insert record
    }
    else {
       echo 'You borked it.'
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...