kenapa setiap mengisi form PHP ketika validasi salah halaman tersebut refresh/ngulang dari awal?

kalo di web2 kan kalo validasi form gagal apa yang kita inputkan sebelumnya tidak hilang cuma di suruh memperbaiki yg salah saja, nah cara supaya bisa seperti itu gimana ya, saya membuat form dengan PHP kok setiap mengisi kotak input dan ketika gagal validasi(salah isi) halaman tersebut malah refresh ulang, jadi apa yg tadi di inputkan tadi hiang dan harus ngisi dari awal lagi.

avatar iamfreestyler
@iamfreestyler

341 Kontribusi 57 Poin

Diperbarui 6 tahun yang lalu

8 Jawaban:

Ada beberapa cara yang bisa di gunain : 1. Masukkan value dari form tadi ke session. 2. Masukkan value dari form tadi ke database dll

avatar markeronly
@markeronly

378 Kontribusi 230 Poin

Dipost 6 tahun yang lalu

@markeronly yg biasanya sering di gunakan yg mana gan?

avatar iamfreestyler
@iamfreestyler

341 Kontribusi 57 Poin

Dipost 6 tahun yang lalu

Jawaban Terpilih

Saya bantu jelaskan dulu type2 validasi.. biar manfaat juga ke yg lain.. sambil menyelam minum air...hehe

Validasi ada 2 type :
1. client side

   > HTML 5 => required, maxlength, minlength, type =email, number dll)
   > Javacript => if(document.getElementByid('user') == '') alert('user tidak boleh kosong')
   > Jquery => if($("#user").val() == '') alert('user tidak boleh kosong');
   > Jquery + ajax (kalau emg validasi harus berhubungan dg database..contoh : cek_username dll..contoh banyak di sini..cari)

    KELEBIHAN : LIVE (tanpa reload / refresh page) UX keren
    KEKURANGAN : kurang aman KARENA bisa diobrak abrik pake inspect elemen.. kelar dah website wkwkwkw

2. server side

   > PHP (contoh dibawah )

   KELEBIHAN : aman asal bisa hehehe...dan pasti bisa kalau mau belajar dan bertanya...
   KEKURANGAN : tidak LIVE (harus reload halaman)

JADI SAYA PAKE SERVER SIDE AJA DEH BIAR AMAN.. ini juga kurang tepat..
pake dua duanya..AMAN + LIVE kan KEREN...hehe
tapi kalau ngk bisa..ya minimal server side..

Monggo gan.. coba tes salahkan salah satu inputan (tidak sesuai aturan)...

<?php

// variabel penampung
$error     = array(); // menyimpan error
$InputUser = array(); // menyimpan inputan user
$valid     = false; //nilai awal false.. belum valid

if(isset($_POST['submit'])) {

    $user = $_POST['username'];
    $nama = $_POST['nama'];

    // simpan inputan user ke variabel
    $userInput = array('user' => $user, 'nama' => $nama);

    // misal kita buat aturan kalau username TIDAK BOLEH > 5 KARAKTER dan nama TIDAK BOLEH "kang hilman"
    $maxLength  = 5;
    $exceptName = "kang hilman";

    if(strlen($user) > $maxLength) {
        //tambah kan error
        $error[] = "User tidak boleh lebih dari " . $maxLength . " karakter";

        // karena username tidak valid maka kosongkan
        $userInput['user'] = "";

    }elseif(strtolower($nama) == $exceptName) {
        //tambah kan error
        $error[] = "Nama Tidak boleh " . $exceptName;

        // karena nama tidak valid maka kosongkan
        $userInput['nama'] = "";
    }else{
        $valid = true; // ubah valid => true..
    }

    if($valid === false) {
        //jika tidak valid isi variabel $user dan $nama dengan data yg sebelumnya sudah diinputkan..
        $user = $userInput['user'];
        $nama = $userInput['nama'];
    }else{
       die("DATA VALID");
       // code ...
    }

}

?>

<form action="" method="POST">
    <input type="text" name="username" required autofocus value="<?php echo isset($user) ? $user : '' ?>">
    <input type="nama" name="nama" required value="<?php echo isset($nama) ? $nama : '' ?>">
    <input type="submit" name="submit">
</form>

<?php
// jika terdapat error
if(!empty($error)) {
    foreach ($error as $value) {
        echo $value . "<br>";
    }
}
?>

PENTING ... kode ini tidak bisa menampilkan error ganda. misal

output yg diminta :
username tidak boleh lebih dari 5 karakter
nama tidak boleh kang hilman

why ???? contoh script masih simple.. kalau contohnya OOP kan malah ribet.. capek juga nulis panjang hehehe...

kalau mau yg begitu.. pake ini..

 https://sekolahkoding.com/forum/askk-mastah-cara-buat-fungsi-buat-valdiasi-dari-ketentuan-yang-kita-bikin-sendiri

tapi belum mengembalikan value kayak yg ini...karena yg ditanyakan bukan mengembalikan value...(beda kasus)

NB: pertanyaan agan @irmanfreestyle ini bagus dan kritis... . bagi yg baru belajar.. belajar dari pertanyaan 2 agan ini..

Semoga Jelas dan Membantu (^_^)/ ...

avatar ciloxz
@ciloxz

284 Kontribusi 139 Poin

Dipost 6 tahun yang lalu

mastah @ciloxz berada dimana2... :D thanks mastah atas ilmunya semoga saya bisa seperti anda malah kalo bisa lebih dari anda hahaha

avatar iamfreestyler
@iamfreestyler

341 Kontribusi 57 Poin

Dipost 6 tahun yang lalu

tapi masih ilang juga gan username yg saya input sebelumnya pas karakter lebih dari batasnya

avatar iamfreestyler
@iamfreestyler

341 Kontribusi 57 Poin

Dipost 6 tahun yang lalu

 @irmanfreestyle...OK.. semangat terus belajarnya... saya juga masih belajar.. sama aj..
lah emg sengaja saya hilangkan waktu salah.. kalau bener baru gk dihilangin..

1. error user

"user : irmanfreestyle"
"nama : irman"

hasil nya
"user : "" => karena lebih dari 5 karakter"

2. error nama

"user : tes"
"nama : kang hilman"

hasil nya
"nama: "" => karena gk boleh "kang hilman" harus yg lain...

lebih teliti lagi gan..atau copas aja dulu..

Semoga membantu (^_^)

avatar ciloxz
@ciloxz

284 Kontribusi 139 Poin

Dipost 6 tahun yang lalu

iya gan saya maunya gak hilang tapi tinggal di kurangin aj karakternya, oke gan thanks nanti saya otak-atik sendiri

avatar iamfreestyler
@iamfreestyler

341 Kontribusi 57 Poin

Dipost 6 tahun yang lalu

klo mau pake server side kudu simpan data input lama di databasedatabase or session.. menurut ane sih klo kasus gini arus na pake jquery bero.. Tips algoritma simple nya. - pertama validasi input form nya tidak bole kosong atau gmn gtu.. - Kedua setelah validasi form nya di post mengunakan ajax or jquery, terserah situ aja yang nyaman coding nya. - ketiga buat callback ouput hasil post jquery ( buat cek username email or success simpan data dll.)

avatar budiliauw87
@budiliauw87

20 Kontribusi 12 Poin

Dipost 6 tahun yang lalu

Login untuk ikut Jawaban