Promo Lebaran, Kelas Online CODEPOLITAN Cukup Bayar Setengah Harga KLAIM PROMO

Status Tidak Bisa Terupdate

Ditanyakan pada tanggal 21 May 2020 oleh Hafidz Cahyo Nugroho Edit  Hapus  Tandai Selesai  Tandai 
<?php
//total array yang disiapkan untuk disimpan
$todos = [];
if(file_exists("todo.txt")){ //if file todo.txt ada , maka get content atau baca file
$file = file_get_contents("todo.txt"); //membaca file todo.txt
$todos = unserialize($file); //mengubah format serialize menjadi array
}

//Jika ditemukan todo yang dikirim melalui methode POST
if(isset($_POST["todo"])){
    $data = $_POST["todo"]; // mengambil data yang di input pada form
    $todos[]=[
        "todo" => $data,
        "status" => 0
    ];
    file_put_contents("todo.txt", serialize($todos));
    header("Location:index.php"); //redirect ke halaman baru, agar data post dalam form tidak tersimpan ulang
}
if(isset($_GET["status"])){
    $todos[$_GET["key"]]["status"] = $_GET["status"];
}

print_r($todos); //tampilkan data array dan status

?>
<h1>Todo App</h1>
<form action="" method="POST">
<label>Daftar Belanja Hari ini<label><br>
<input type="text" name="todo">
<button type="submit">Simpan</button>
</form>
<ul>
    <?php foreach ($todos as $key => $value): ?>
    <li>
        <input type="checkbox" name="todo" onclick="window.location.href="index.php?status=1&key=<?php echo $key;?>""> 
        <label>
        <?php echo $value["todo"]; ?>
        </label>
        <a href='#'>delete</a>
    </li>
    <?php endforeach; ?>
</ul>

Dengan kode diatas saya sudah ikuti seperti dalam video tapi status tidak bisa terupdate juga. Apa karena file index.php saya ada di dalam folder? index.php dan todo.txt ada di folder "Latihan_PhpaplikasiTodo"

BUAT KOMENTAR

1 JAWABAN / 0 KOMENTAR

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

Tutorial kakak belum selesaikan semua itu kak. Banyak kesalahan pada program seperti :

  1. Tidak menambahkan logika coret.
  2. Salah penulisan kutip dan petik sehingga onclick tidak berjalan
  3. Tidak ada kode deteksi GET STATUS, sehingga data tidak terupdate.

Berikut kode sudah disermpurnakan :

<?php
//total array yang disiapkan untuk disimpan
$todos = [];
if(file_exists("todo.txt")){ //if file todo.txt ada , maka get content atau baca file
$file = file_get_contents("todo.txt"); //membaca file todo.txt
$todos = unserialize($file); //mengubah format serialize menjadi array
}

//Jika ditemukan todo yang dikirim melalui methode POST
if(isset($_POST["todo"])){
    $data = $_POST["todo"]; // mengambil data yang di input pada form
    $todos[]=[
        "todo" => $data,
        "status" => 0
    ];
    file_put_contents("todo.txt", serialize($todos));
    header("Location:index.php"); //redirect ke halaman baru, agar data post dalam form tidak tersimpan ulang
}
if(isset($_GET['status']))
{
   //ubah status
    $todos[$_GET['key']]['status']=$_GET['status'];
    $daftar_belanja=serialize($todos);
    file_put_contents('todo.txt',$daftar_belanja);
    //redirect halaman
    header('location:index.php');
}

print_r($todos); //tampilkan data array dan status

?>
<h1>Todo App</h1>
<form action="" method="POST">
<label>Daftar Belanja Hari ini<label><br>
<input type="text" name="todo">
<button type="submit">Simpan</button>
</form>
<ul>
    <?php foreach ($todos as $key => $value): ?>
    <li>
        <input type="checkbox" name="todo" onclick="window.location.href='index.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='#'>delete</a>
    </li>
    <?php endforeach; ?>
</ul>
BUAT KOMENTAR