0

州税と地方税の入力フィールドがあります。

各フィールド データが入力され、両方を加算して totaltax を取得します。

number_format と round と print_f を試しましたが、必要に応じて機能していません。私は preg_match の可能性を見つけようとしていました。

私が必要とするのは、入力フィールドが次のようなものを取ることです:

10.2
10.33
10.301
3.275
2.90

誰かが .10 を入力すると、0.10 に変換されます。0.10 を入力すると、そのままにしておく必要があります。.125 の場合も同じ 0.125 と入力する必要があります

数値または小数でない場合は、削除する必要があります。

$statetax = $_POST['statetax']; 
$localtax = $_POST['localtax'];
$totaltax = $statetax+$localtax;

insert into tax (state, local, total) values($state, $local, $total)

ありがとう!

4

3 に答える 3

1

is_numeric()入力が数値であることを確認するために使用する必要があります。次に、float に変換して文字列に0戻し、必要に応じて a がプリペンドされるようにします。これはfloatval()strval()

次の例が役立つことを願っています。

$tests = array(
    '10.2',
    '10.33',
    '.301',
    'bar',
    '3.275',
    '2.90',
    '.1',
    'foo'
);

foreach($tests as $input) {
    // check if the value is number using `is_numeric`
    if(!is_numeric($input)) {
        echo "Error: Not a number: $input\n";
        continue;
    }   

    // convert to float and back to string ( in the echo ) will 
    // automatically prepend a 0 if required
    $sanitizedInput = strval(floatval($input));
    echo "Sanitized input: $sanitizedInput\n";
}
于 2013-04-23T23:20:01.893 に答える
0

試す:

$statetax = (float) is_numeric($_POST['statetax']) ? $_POST['statetax'] : 0;
$localtax = (float) is_numeric($_POST['localtax']) ? $_POST['localtax'] : 0;
$totaltax = $statetax + $localtax;

mysql_query(
    "insert into tax ('state', 'local', 'total') values($statetax, $localtax, $totaltax)"
);

一般に、SQL 文字列を作成するときは、ユーザー入力 ($_POST など) をエスケープすることをお勧めします。そうしないと、SQL インジェクションの準備をすることになります。ここを読んでください。この場合、float 型キャストによって POST 値が「エスケープ」されることが保証されるため、その必要はありません。

于 2013-04-23T23:17:44.747 に答える