Promo #CODINGDIRUMAH DISKON 55%, Termurah Sepanjang Sejarah CODEPOLITAN. Klaim Promo

Validasi Pada Submit 2

Ditanyakan 3 hari yang lalu oleh Fauzi Ramdhani

Kak Saya udah mencoba code seperti berikut :

<?php
    $todos = []; ////total array yang disiapkan untuk disimpan

    //Pengecekan File todo.txt
    if(file_exists('todo.txt')){
    $file =  file_get_contents('todo.txt'); //membaca file todo.txt
    $todos = unserialize($file); //mengubah format serialize menjadi array
    }

    //Jika ditemukan todo yang dikirim melalui form methode POST
    if(isset($_POST['todo']))
    {
        $data = $_POST['todo']; // mengabil data yang di input pada form
        //membuat validasi
        /*if(empty($data)){
            echo "Data Masih Kosong";
            exit;
        }*/
        //Jika todos tidak memakai [] maka data akan tertimpa terus 
        $todos[] = [
            'todo' => $data,
            'status' => 0
        ];
        file_put_contents('todo.txt', serialize($todos)); //membuat data ke dalam file txt
        //setiap kita menyimpan data ke file itu wajib di redirect halaman. untuk menghapus data post yg d tangkap post dr form
        header("location:Todo App.php");
    }

    //Pengecekan melalui Get merubah status dr 0 jadi 1 dr checkbox
    //diambil key dan value status dr foreach
    if(isset($_GET['status']))//hendak merubah data ceklis
    {
        $todos[$_GET['key']]['status'] = $_GET['status'];
        file_put_contents('todo.txt', serialize($todos)); //membuat data ke dalam file txt
        //setiap kita menyimpan data ke file itu wajib di redirect halaman. untuk menghapus data post yg d tangkap post dr form
        header("location:Todo App.php");
    }

    //untuk membuat penghapusan data menggunakan unset
    if(isset($_GET['hapus']))//mengambil dari key hapus yg url kita buat
    {
        unset($todos[$_GET['key']]);//menghapus key atau array yg sesuai kita inginkan
        file_put_contents('todo.txt', serialize($todos)); //membuat data ke dalam file txt
        //setiap kita menyimpan data ke file itu wajib di redirect halaman. untuk menghapus data post yg d tangkap post dr form
        header("location:Todo App.php");
    }
    //untuk pembacaan array yg kita buat  //untuk mengambil index key karena bersifat unique jd saat ceklis tidak salah membaca file
    print_r($todos);
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>My Todo App</title>
</head>
<body>
<!--TEMPLATE-->
<h3>To-Do Application</h3>
<form method="POST" id="todoid" onsubmit="validasi()">
    <label>Apa Kegiatanmu Hari ini</label> <br>
    <input type="text" name="todo" id="todox">
    <input type="submit" value="submit">
    <!--<button type="submit" value="Submit">Submit</button>-->
</form>

<!--List Todo-->
<!-- Foreach akan mengulang kode list agar setiap user input nilai todos maka akan masuk kedalam list -->
<!--Membuat checklis berubah status via onclick dan foreach-->
<?php foreach ($todos as $key => $value): ?>
<ul>
    <li>
        <!--url dr halaman yg kita tuju, pada saat checkbox d click-->
        <input type="checkbox" name="todo" onclick="window.location.href='Todo App.php?status=<?php if($value['status']==1)
            echo '0';
             else
                echo '1';
        ?>&key=<?php echo $key?>'"
        <?php if($value['status']==1){ //membuat jika statusnya 1 ceklinya tidak hilang
            echo 'checked';
        }?>
        >
        <label>
        <?php
        //membuat coretan jika statusnya d ceklis 

        if($value['status']){
            echo ucwords("<del>". $value["todo"]."</del>");
        } else {
            echo ucwords($value["todo"]);
        }
        ?>
        </label>
        <a href="Todo App.php?hapus=1&key=<?php echo $key;?>" onclick="return confirm('Apakah Anda Yakin Menghapus Ini?')">Delete</a>
    </li>
</ul>
<?php endforeach; ?>
</body>

<script>
    //
    function validasi(){
        var todo = document.getElementById("todox").value;
        //alert ("Data Masih Kosong");exit;
        if(todo != "") {
            return true;
        } else {
            alert ("Data Masih Kosong");
            return (false);
        }
    }
</script>

berhasil membuat pop up tp kenapa kolomnya masih bertambah ya ?? saat kita tidak ada datanya submit masih bertambah

BUAT KOMENTAR

1 JAWABAN / 1 KOMENTAR

User avatar
Ahmad Oriza menjawab 3 hari yang lalu

Oh iya pada kode tersebut harusnya kita redirect ke halaman utama lagi. Coba ubah kode jadi seperti ini :

if (empty($data)){
    echo "Data Masih Kosong";
    header("location:Todo App.php");
}
Comment ..

maaf kak kalau mungkin d luar materi cuman sy tdnya berencana mengeluarkan kaya notifikasi popup jika datanya kosong ,, jika dalam query penambahan js yg sy coba kak itu kenapa masih menginsert data yg kosong ya kak? jd datanya kosong keluar popup tp masih melakukan insert data

Dikomentari 3 hari yang lalu oleh Fauzi Ramdhani
BUAT KOMENTAR