1

我试图让我的文本框输入货币格式。我做到了,但是当我将值插入到我的数据库中时,值会发生变化。当我输入 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'); ?>
4

3 回答 3

0

我不认为 javascript 不是这里的罪魁祸首。上面显示的代码只是为数字插入逗号。当插入到数据库中时,该字段将为浮点数,将自动将值转换为浮点数或整数并删除剩余的值。如果您可以发布 DB 的插入代码,问题也可以很容易地解决。

于 2012-06-15T06:31:30.607 回答
0

只是一个提示。

不要将货币格式保存在数据库中,始终只保存数字(int,float),以便您可以在需要时轻松进行一些数学处理。

对于货币格式,仅将其用于显示目的。

于 2012-06-15T06:35:51.347 回答
0

如果您必须在文本框中设置会计样式格式,我建议您在每个文本框旁边设置一个带有原始数值的隐藏字段。您可以在“nr = nr.replace(regex,'');”之后轻松地在 js 函数中添加几行 部分将现在剥离的值复制到隐藏字段。为此,您必须命名每个文本框并将名称传递给 numberFormat 函数,以便将其保存到正确的隐藏输入中。然后,当提交表单时,保存隐藏字段中的值,而不是打开的文本框。

或者,让您的提交按钮触发一个函数来扫描所有文本字段并删除任何格式,然后将表单作为函数的一部分提交。

顺便说一句,将 10,000 作为一万插入浮点字段会将其修剪为 10。除非您使用逗号作为小数点(我认为法国人会这样做?),否则您保存的数据不正确。

于 2012-06-15T07:49:26.363 回答