привет добрый день, может кто-нибудь помочь мне в моем коде. Я создал поле ввода, которое было
автоматически ставить запятую, когда тысячи или миллионы. Но когда я вставляю его в базу данных mysql,
не будет вставлять целое число целиком. В моей базе данных я установил сумму как целое число. Например, я поместил 12 000 в поле ввода, но когда я просматриваю данные, они отображаются только 12
Вот мой код JavaScript в разделителе запятых:
<script>
$(document).ready(function(){
$('input.amount').keyup(function(event) {
var x = $(this).val();
$(this).val(x.toString().replace(/,/g, "").replace(/\B(?=(\d{3})+(?!\d))/g, ","));
});
});
Вот мой HTML-код:
<table>
<tr>
<td>Amount</td>
<td>
<div class="input-group">
<div class="input-group-addon">?</div>
<input type="text" class="form-control amount" placeholder="Amount" id="exampleInputAmount" size="16" name="amount" required="required" />
<div class="input-group-addon">.00</div>
</div>
</td>
</tr>
Вот мой код процесса в php
<?php
$transaction_id = $_POST['transid'];
$transaction_date = $_POST['dateOnlyPicker'];
$sender_id = $_POST['senderid'];
$sender_name = $_POST['sendername'];
$sender_department = $_POST['sender_department'];
$receiver_id = $_POST['receiverid'];
$receiver_name = $_POST['receivername'];
$receiver_department = $_POST['receiver_department'];
$vendor_class = $_POST['vendor_class'];
$vendor_name = $_POST['vendor_name'];
$doc_type = $_POST['doc_type'];
$doc_num = $_POST['doc_num'];
$amount = number_format($_POST['amount'], 2);
$remarks = $_POST['remarks'];
include ("dbconnection_set.inc.php");
include ("dbconnection_create.inc.php");
$sql = "INSERT INTO `tbl_encode_transmittal`(transid, transdate, sender_id, receiver_id,
vendor_id, doctype_id, document_number, total_amount, remarks, status_id)
VALUES ('" . $transaction_id . "', '" . $transaction_date . "', (SELECT userid FROM `tbl_userlist` WHERE username = '" . $sender_id . "' LIMIT 1),
(SELECT userid FROM `tbl_userlist` WHERE username = '" . $receiver_id . "' LIMIT 1),
(SELECT vendor_id FROM `tbl_vendor` WHERE vendor_name = '" . $vendor_name . "' LIMIT 1),
(SELECT doc_id FROM `tbl_doctype` WHERE document_type = '" . $doc_type . "' LIMIT 1), '" . $doc_num . "', '" . $amount . "', '" . $remarks . "',
(SELECT status_id FROM tbl_status WHERE status_id = '1'))";
if($conn->query($sql) === TRUE){
#echo "New Record created successfully";
header('refresh: 5; url=encode_transmittal.php');
echo "<div class=\"notification top-left\"></div>";
}
else{
echo "Error: " . $sql . "<br>" . $conn->error;
}
$conn->close();
?>
Удалите запятые перед сохранением в базу данных, потому что если вы этого не сделаете, значения будут выглядеть следующим образом (например, «12, 000»):
VALUES ('1', '01/21/2016', 12, 000)
Это означает, что единственным значением, вставленным для total_amount, является первое значение до запятой, равное 12.
Вы можете использовать это, которое использует простую обработку строк:
$amount = str_replace(',', '', $_POST['amount']);
Или то, что вы упомянули в своем комментарии, который использует регулярное выражение, а затем конвертирует строковый результат в float:
$amount = floatval(preg_replace("/[^-0-9\.]/","",$_POST['amount']));
Других решений пока нет …