Input hanya boleh 2 angka didepan dan 1 atau 2 dibelakang Decimal Point di PHP
ROOT93 - Dalam case kali ini kita akan mencoba bagaimana caranya supaya user hanya boleh atau hanya bisa menginputkan data berupa angka dan karakter titik saja atau Input hanya boleh 2 angka didepan dan 1 atau 2 dibelakang Decimal di PHP. Mungkin bahasa ingrisnya "How can i only allow numbers and decimal points" (kalau gak salah)
Baca juga :
- Mengatur Form Input Hanya Boleh Diisi Angka Saja (Javascript)
- Membatasi Input Hanya Boleh Diisi Angka Saja Menggunakan PHP
Berikut ini contohnya :
<?php
function cek_angka($angka){
if(!preg_match("/^.[0-9]/",$angka)){
$angka=true;
}else{
$angka=false;
}
return $angka;
}
//set var untuk mengetahui hasil test
$angka2="22.1";
if(cek_angka($angka2)){
echo "Angka tidak sesuai";
}else{
echo "angka sesuai ketentuan";
}
?>
#Test 1
Dalam case ini ketika di test, jika variabel mengandung nilai seperti $angka="aa.21"; mengembalikan nilai (false)
- a.21 (false)
- 2a.21 (false)
- 21.2a (false
- 2.1 (false)
- 2.a (false)
- 2222.a (false)
- 2a (false)
- 22.a (false)
- 2.21 (false)
- .aa (false)
- 22...2 (false)
- 2..1 (false)
- 22..22 (false)
#Test 2
Selanjutnya dilakukan test dengan variabel seperti
- 22.21 (true)
- 2222.21 (true)
- 22.1 (true)
- .2 (true)
- .22 (true)
- .222 (true)
Hasill test true false manual diatas yang disimpan di variabel akan jauh berbeda hasilnya jika ditest menggunakan variabel yang berubah - ubah atau dikirim melaluin formulir input
<?php
function cek_angka($angka){
if(!preg_match("/^.[0-9]/",$angka)){
$angka=true;
}else{
$angka=false;
}
return $angka;
}
if($_SERVER["REQUEST_METHOD"]=="POST"){
$angka2=$_POST["angka"];
if(cek_angka($angka2)){
echo "FALSE";
}else{
echo "TRUE";
}
}
?>
<html>
<head>
<title>Decimal Point test</title>
</head>
<body>
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">
<input type="text" name="angka" id="angka" size="25" />
<input type="submit" name="test" value="Kirim" />
</form>
</body>
</html>
Jadi dalam case ini saya sangat kesulitan untuk memenuhi kebutuhannya, karena masih ada beberapa kondisi yang mungkin tidak terpenuhi dan cara ini masih sangat tidak sempurn, masih banyak kondisi - kondisi yang tidak terpenuhi.
Cara termudah mungkin kita bisa gunakan fungsi iyang sudah tersedia di PHP, yaitu fungsi is_numeric()
Contoh :
<?php
if($_SERVER["REQUEST_METHOD"]=="POST"){
$angka2=$_POST["angka"];
if(is_numeric($angka2)){
echo "TRUE";
}else{
echo "FALSE";
}
}
?>
<html>
<head>
<title>Decimal Point test</title>
</head>
<body>
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">
<input type="text" name="angka" id="angka" size="25" />
<input type="submit" name="test" value="Kirim" />
</form>
</body>
</html>
Tapi menggunakan fungsi diatas ada beberapa kondisi yang masih tidak terpenuhi, disana kan sudah jelas fungsinya hanya mendeteksi jenis angka/number atau bukan, tidak ada validasi apakah didepannya harus dua angka didepan decimal point(2 angka didepan dan 1 atau 2 angka dibelakang Decimal Point).
Untuk itu kita perlu melakukan menggabungkan fungsi keduanya, fungsi cek_angka() dengan fungsi is_numeric() dan is_float() milik PHP, sisanya tinggal kita batasi karakternya, tidak boleh kurang dari 4 karakter dan lebih dari 5 karakter
Baca :
https://www.php.net/manual/en/function.is-float.php
https://www.php.net/manual/en/function.is-numeric.php
https://www.php.net/manual/en/function.is-float.php
https://www.php.net/manual/en/function.is-numeric.php
Contoh :
<?php
function cek_angka($angka){
//if(!preg_match("/^(?:[0-9]+)(?:|(?:|\.){1}(?:[0-9]+))$/",$angka)){
if(!preg_match("/^.[0-9]/",$angka)){
$angka=true;
}else{
$angka=false;
}
return $angka;
}
if($_SERVER["REQUEST_METHOD"]=="POST"){
$angka2=$_POST["angka"];
if(strlen($angka2)<4){
echo "FALSE";
}elseif(strlen($angka2)>5){
echo "FALSE";
}elseif(is_float($angka2)){
echo "FALSE";
}elseif(cek_angka($angka2)){
echo "FALSE";
}elseif(is_numeric($angka2)){
echo "TRUE";
}else{
echo "FALSE";
}
}
?>
<html>
<head>
<title>Decimal Point test</title>
</head>
<body>
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">
<input type="text" name="angka" id="angka" size="25" />
<input type="submit" name="test" value="Kirim" />
</form>
</body>
</html>
Sampai disini mungkin kondisi supaya input hanya boleh 2 angka didepan dan 1 atau 2 angka dibelakang Decimal Point di PHP
(Ahmad Zaelani / r93)
tinggi banget nih ilmu nya sobat soal php, yang penting nggak suka memberi harapan palsu ya sob :D
ReplyDeleteizin follow ya kak, agar mudah bersilaturrohim sesama blogger ;)