我尝试以货币格式设置文本框类型。我做到了,但当我将值插入我的数据库时,值会发生变化。当我输入10000时,它会改变10,000。 (到目前为止一切都很好。)但是当我将该值插入数据库时,值变为10.我真的很困惑。
这是我的脚本。我使用php,mysql,字段类型为float
<?php include('header.php'); ?>
<?php
if(isset($_POST['simpan']))
{
$nama = htmlentities(addslashes($_POST['nama']));
$sim_wajib = $_POST['sim_wajib'];
$sim_pokok = $_POST['sim_pokok'];
$sim_sukarela = $_POST['sim_sukarela'];
$sim_wpinjam = $_POST['sim_wpinjam'];
$shu = $_POST['shu'];
$total = $sim_wpinjam + $shu;
if($nama != '' && $sim_wajib != '' && $sim_pokok != '' && $sim_sukarela != '' && $sim_wpinjam != '' && $shu != '' )
{
$sql = "INSERT INTO simpanan_tbl";
$sql .= "(nama, sim_wajib, sim_pokok, sim_sukarela, sim_wajibpinjam, shu, jumlah)";
$sql .= "VALUES('$nama','$sim_wajib','$sim_pokok','$sim_sukarela','$sim_wpinjam','$shu','$total')";
$query = mysql_query($sql) or die(mysql_error());
echo '<script type="text/javascript">alert("Data telah masuk!");document.location="manage_simpanan.php";</script>';
}
else
{
echo '<script type="text/javascript">alert("Kolom tidak boleh ada yang kosong!");</script>';
}
}
?>
<div id="rounded_add">
<script type="text/javascript">
function numberFormat(nr)
{
//remove the existing
var regex = /,/g;
nr = nr.replace(regex,'');
//split it into 2 parts
var x = nr.split(',');
var p1 = x[0];
var p2 = x.length > 1 ? ',' + x[1] : '';
//match group of 3 numbers (0-9) and add ',' between them
regex = /(\d+)(\d{3})/;
while(regex.test(p1))
{
p1 = p1.replace(regex, '$1' + ',' + '$2');
}
//join the 2 parts and return the formatted number
return p1 + p2;
}
</script>
<form method="post" name="form1">
<table id="add_simpan" class="add">
<tr>
<td>No Anggota</td>
</tr>
<tr>
<td><input type="text" id="" name="" class="textbox"></td>
</tr>
<tr>
<td>Nama</td>
</tr>
<tr>
<td><input type="text" id="nama" name="nama" class="textbox_left"></td>
</tr>
<tr>
<td>Simpanan Wajib</td>
</tr>
<tr>
<td><input type="text" id="sim_wajib" name="sim_wajib" class="textbox"></td>
</tr>
<tr>
<td>Simpanan Pokok</td>
</tr>
<tr>
<td><input type="text" id="sim_pokok" name="sim_pokok" class="textbox"></td>
</tr>
<tr>
<td>Simpanan Suka Rela</td>
</tr>
<tr>
<td><input type="text" id="sim_sukarela" name="sim_sukarela" class="textbox"></td>
</tr>
<tr>
<td>Simpanan Wajib Pinjam</td>
</tr>
<tr>
<td><input type="text" id="sim_wpinjam" name="sim_wpinjam" class="textbox" onkeyup="this.value = numberFormat(this.value);"></td>
</tr>
<tr>
<td>SHU</td>
</tr>
<tr>
<td><input type="text" id="shu" name="shu" class="textbox" onkeyup="this.value = numberFormat(this.value);"></td>
</tr>
<tr>
<td><input type="submit" value="Simpan" id="simpan" name="simpan" class="button blues"></td>
</tr>
</table>
</form>
</div><!-- END OF ROUNDED_ADD -->
<?php include('footer.php'); ?>
答案 0 :(得分:0)
我不认为javascript不是这里的罪魁祸首。上面显示的代码只是为数字插入逗号。当插入数据库时,字段将浮动,将自动将值转换为浮点数或整数并删除剩余值。如果你可以发布DB的插入代码,也可以很容易地解决问题。
答案 1 :(得分:0)
只是一个提示。
不要将货币格式保存在数据库中,只保存数字(int,float),以便在需要时可以轻松地进行一些数学处理。
对于货币格式,只需将其用于显示目的。
答案 2 :(得分:0)
如果你 在你的文本框中有会计风格格式,我建议在每个文本框旁边有一个带有原始数值的隐藏字段。您可以在&#34; nr = nr.replace(正则表达式,&#39;&#39;)之后轻松地向js函数添加几行;&#34;将现在剥离的值复制到隐藏字段的部分。为此,您必须为每个文本框命名并将名称传递给numberFormat函数,以便将其保存到正确的隐藏输入。然后,在提交表单时,保存隐藏字段中的值,而不是打开的文本框。
或者,让您的“提交”按钮触发一个功能,以扫描所有文本字段并删除任何格式,然后将该表单作为该功能的一部分提交。
顺便说一句,将10,000作为一万个插入浮点字段会将其修剪为10.除非你使用逗号作为小数点(我认为法国人这样做了吗?)你保存了不正确的数据。