waktu tersisa untuk klaim DISKON 40% dalam program Full Stack Membership. Klaim Promo!

Terjadi Error Saat Checklist

Ditanyakan pada tanggal 25 March 2020 oleh Fauzi Ramdhani Edit  Hapus  Tandai Selesai  Tandai 
<?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
        //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
    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 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">
    <label>Apa Kegiatanmu Hari ini</label> <br>
    <input type="text" name="todo">
    <button type="submit">Submit</button>
</form>

<!--List Todo-->
<!-- Foreach akan mengulang kode list agar setiap user input nilai todos maka akan masuk kedalam list -->
<?php foreach ($todos as $key => $value): ?>
<ul>
    <li>
        <input type="checkbox" name="todo" onclick="window.location.href ='Todo App.php?status=1&key<?php echo $key?>'"><!--url dr halaman yg kita tuju, pada saat checkbox d click-->
        <label><?php echo $value["todo"]?></label>
        <a href="#">Delete</a>
    </li>
</ul>
<?php endforeach; ?>

</body>
</html>

Notice: Undefined index: todo in C:\xampp\htdocs\codepolitan\application\Todo App.php on line 60

Kak Mohon bantuannya kira2 salah dimananya ya??

BUAT KOMENTAR

1 JAWABAN / 0 KOMENTAR

User avatar
Ahmad Oriza menjawab pada tanggal 25 March 2020 Jadikan Jawaban Terbaik  Edit  Hapus  Ubah ke Komentar 

Kaka lupa menaruh = pada input checkbox, sehingga indexnya menjadi ngaco. Coba ikut kode ini ya :

<?php
ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL);

    $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
        //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
    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 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">
    <label>Apa Kegiatanmu Hari ini</label> <br>
    <input type="text" name="todo">
    <button type="submit">Submit</button>
</form>

<!--List Todo-->
<!-- Foreach akan mengulang kode list agar setiap user input nilai todos maka akan masuk kedalam list -->
<ul>
    <ul>
    <?php foreach($todos as $key=>$value): ?>
    <li>
        <input type="checkbox" name="todo" onclick="window.location.href='Todo App.php?status=<?php echo($value['status']==1)? '0': '1'; ?>&key=<?php echo $key;?>'";
        <?php if($value['status']==1)echo 'checked' ?>>
        <label>
        <?php
            if($value['status']==1)
            {
               echo '<del>'.$value['todo'].'</del>'; 
            }
            else
            {
                echo $value['todo'];
            }
            ?>
        </label>
        <a href='#'>hapus</a>
    </li>
    <?php endforeach; ?>
</ul>

</body>
</html>
BUAT KOMENTAR