2

こんにちは、フォーマットされた金額に問題があります。
私の入力フォームでは、ユーザーは書式設定された金額を追加および編集できます。これは多言語プログラムであるため、ユーザーは独自の形式を指定できるため、固定パターンはありません。
例:

250.000
250,000
250.000,00  
250,000.00

悲しいことに、データベースに保存する前に「フォーマットを解除」する必要があります。そうしないと、MySQL が私の番号を浮動小数点数として認識し、その逆になります。

どうすればこれを克服できますか?何か案は?

4

4 に答える 4

0
  1. クライアントのローカリゼーションを確認し、それに応じてデータをそのように解析する必要があります。coz 2,500.00=2.500,00。場所によって異なります。
  2. ユーザーに「、」を入力させないでください。
  3. ユーザーが小数点以下を入力できるように、別のボックスを用意します。
  4. ボックスに0.00を事前に入力します。これがフォーマットであることをユーザーに伝えます。
于 2012-05-21T17:07:31.313 に答える
0
  • 適切な形式でユーザーからの入力を取得するのは良い方法です。表示可能な形式のメッセージを入力領域の近くに表示します。
  • ユーザーが送信を実行するときに、入力データを検証する必要があります。
  • ユーザー入力をデータベースに直接格納する前に、JavaScript とサーバー側プログラミング言語の両方で正規表現を使用して検証できます。
于 2012-05-21T17:20:07.953 に答える
0

ここで推測するように、ユーザーが必要なものを入力できるようにする側に行くこともできます。または、入力内容を制限して、桁区切り記号を強制的に除外することもできます。

于 2012-05-21T16:59:17.133 に答える
0

わかりました、ようやく作成できたので、ソリューションを共有します。
まず、ユーザーが入力している間にMootoolsを使用して入力フィールドをフォーマットしました。
次に、サーバー側を移動しました。

形式オプションはアプリケーション内に保存されるため、これがコードです

//get decimal separator from saved params
$dec = $params->get('decimalSep', '.');
//remove any char that's not a number or decimal separator 
//(i don't care about thousands sep)
$regex = '#[^0-9-'.preg_quote($dec).']#';

$normalized = preg_replace($regex, '', $price);
$normalized = str_replace($dec, '.', $normalized);

基本的に、小数点記号以外はすべて削除してから、標準の記号 ( .) に置き換えます。

それは魅力のように機能します。

于 2012-05-22T10:52:01.770 に答える