Menyimpan Data File Txt Menggunakan PHP

Bagaimana cara menyimpan data selain menyimpan ke dalam database?

Yups, tutorial kali ini saya akan membagikan tutorial tentang bagaimana menyimpan data selain menyimpan ke dalam database. Kali ini saya tidak menggunakan database seperti MySQL, PostgreSQL maupun yang lainnya, melainkan menggunakan file txt.

Menggunakan file sebagai media penyimpanan menurut saya sebenarnya kurang efektif dan kurang aman. Dikarenakan data yang tersimpan jadi satu di dalam file, maka orang lain atau pihak yang tidak bertanggung jawab pun bisa mengakses file tersebut jika kita tidak menyimpannya di tempat yang aman.

Ada beberapa kelebihan dan kekurangan ketika kita menyimpan data di dalam file txt :

Kelebihan :
  • lebih simple
  • tidak perlu setting tipe data
Kekurangan
  • rawan terkena serangan hacker
  • tidak efektif
  • untuk projek jangka panjang dan data yang kompleks akan susah
  • penerapan CRUD sulit walaupun memungkinkan

Oke! Lanjut ke tutorial. Silahkan kalian ikuti petunjuk berikut :

1. Buat tampilan form dan file form.html
<!DOCTYPE html>
<html>
<head>
	<title>Form</title>
	<style type="text/css">
		*{
			box-sizing: border-box;
		}
		body{
			background-color: #dddddd;
			margin: 0;
			font-family: "Calibri", sans-serif;
    		font-size: 11pt;
		}
		.form-control{
			width: 100%;
			padding: 8px;
			float: left;
			margin-bottom: 15px;
			margin-top: 10px;
		}
		.panel{
			width: 50%;
			background-color: #ffffff;
			margin: 0 auto;
			margin-top: 50px;
			border-radius: 4px;
		}
		.panel .panel-heading{
			padding: 5px 20px;
			border-bottom: 1px solid #dddddd;
			text-align: center;
		}
		.panel .panel-body{
			padding: 20px;
		}

		.button-biru{
			padding: 10px 20px;
			background-color: blue;
			color: #ffffff;
			border: none;
			border-radius: 4px;
			cursor: pointer;
		}
		.button-merah{
			padding: 10px 20px;
			background-color: red;
			color: #ffffff;
			border: none;
			border-radius: 4px;
			cursor: pointer;
		}
	</style>
</head>
<body>
<div class="panel">
	<div class="panel-heading">
		<h1>Form Registrasi Penduduk</h1>
	</div>
	<div class="panel-body">
		<form method="post" id="form" action="form.php">
			<label>Nama:</label>
			<input type="text" class="form-control" id="nama" name="nama" width="100">
			<br><br>

			<label>Email:</label>
			<input type="text" class="form-control" name="email" id="email" width="100">
			<br><br>

			<label>Jenis Kelamin:</label>
			<input type="radio" name="kelamin" class="kelamin" value="L"> Pria
			<input type="radio" name="kelamin" class="kelamin" value="P"> Wanita
			<br><br>

			<label>Agama:</label>
			<select name="agama" class="form-control agama" id="agama">
				<option value="">Pilih Agama</option>
				<option value="Islam">Islam</option>
				<option value="Katolik">Katolik</option>
				<option value="Kristen">Kristen</option>
				<option value="Hindu">Hindu</option>
				<option value="Budha">Budha</option>
			</select>
			<br><br>

			<label>Kesukaan:</label>
			<input type="radio" name="suka" class="suka" value="Roti"> Roti
			<input type="radio" name="suka" class="suka" value="Sayur"> Sayur
			<input type="radio" name="suka" class="suka" value="Kamu"> Kamu
			<br><br>

			<label>Hobi:</label><br>
			<textarea name="hobi" class="form-control hobi" id="hobi" rows="5" cols="50"></textarea>
			<br><br>

			<button type="submit" class="button-biru">Simpan</button>
			<button type="reset" class="button-merah">Reset</button>
		</form>
	</div>
</div>

<script>
	document.querySelector('form').addEventListener('submit', function(e) {

		e.preventDefault();
		var nama = document.getElementById('nama');
		var email = document.getElementById('email');
		var kelamin = document.getElementsByClassName('kelamin');
		var agama = document.getElementById('agama');
		var suka = document.getElementsByClassName('suka');
		var hobi = document.getElementById('hobi');

		if(nama.value.trim() === ''){
			alert("Nama tidak boleh kosong!"); return false;
		}

		if(email.value.trim() === ''){
			alert("Email tidak boleh kosong!"); return false;
		}

		if(!kelamin[0].checked && !kelamin[1].checked){
			alert("Jenis Kelamin tidak boleh kosong!"); return false;
		
		}


		if(agama.value === ''){
			alert("Agama tidak boleh kosong!"); return false;
		}

		if(!suka[0].checked && !suka[1].checked && !suka[2].checked){
			alert("Kesukaan Kelamin tidak boleh kosong!"); return false;
		}

		if(hobi.value.trim() === ''){
			alert("Hobi tidak boleh kosong!"); return false;
		}

		this.submit()

	})
</script>
</body>
</html>
2. Buat file form.php yang akan digunakan untuk eksekusi data
<?php

if ($_SERVER['REQUEST_METHOD'] === 'POST') {

	$error = false;

	if (empty($_POST['nama'])) {
		echo "- Nama tidak boleh kosong!\n";
		$error = true;
	}

	if (empty($_POST['email'])) {
		echo "- Email tidak boleh kosong\n";
		$error = true;
	}

	if (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
		echo "- Email Anda tidak valid!\n";	
		$error = true;
	}

	if (!isset($_POST['kelamin'])) {
		echo "- Jenis kelamin tidak boleh kosong!\n";
		$error = true;
	}

	if (empty($_POST['suka'])) {
		echo "- Kesukaan tidak boleh kosong!\n";
		$error = true;
	}

	if (empty($_POST['agama'])) {
		echo "- Agama tidak boleh kosong!\n";
		$error = true;
	}

	if (empty(trim($_POST['hobi']))) {
		echo "- Hobi tidak boleh kosong!\n";
		$error = true;
	}

	echo "\n";
	if(true == $error) echo '<a href="form.html">Kembali</a>';

	$data = "";
	foreach ($_POST as $value) {
		$data .= $value . "|";
	}
	$data = trim($data, "|");

	if (false == $error) {
		$file = __DIR__ . '/file.txt'; 

		$open = fopen($file, "a+");
		@fwrite($open, $data . "\r\n");
		@fclose($open);

		header("location:table.php");
	}
	
}
3. Buat tampilan untuk menampilkan data dari file.txt
<!DOCTYPE html>
<html>

<head>
    <title>Tabel</title>
    <style type="text/css">
    	*{
    		box-sizing: border-box;
    	}
    	body{
    		font-family: "Calibri", sans-serif;
    		font-size: 11pt;
    	}
    	table{
    		width: 100%;
    		border-collapse: collapse;
    	}
    	table thead tr th{
    		font-weight: bold;
    		text-align: center;
    		padding: 10px;
    		border: 1px solid #222;
    		background-color: orange;
    		color: #ffffff;
    	}
    	table tbody tr td{
    		padding: 8px;
    		border: 1px solid #222;
    	}
    	.text-center{
    		text-align: center;
    	}
    </style>
</head>
<body>
    <h1>Tabel Penduduk</h1>
    <a href="form.html">Tambah Data</a><br/><br/>
    <table>
        <thead>
            <tr>
            	<th style="width: 3%">No</th>
                <th>Nama</th>
                <th>Email</th>
                <th>Jenis Kelamin</th>
                <th>Agama</th>
                <th>Kesukaan</th>
                <th>Hobi</th>
            </tr>
        </thead>
        <tbody>
            <?php
			$file = __DIR__ . '/file.txt';
			if(file_exists($file)){
				$lines = file($file); 
				$size = sizeof($lines); 
		  		$data = [];
		  		for($i = 0; $i < $size; $i++):
		  			$pecah = (explode("|", $lines[$i]));

			?>
			<tr>
				<td class="text-center"><?= ($i+1); ?></td>
				<td><?= $pecah[0]; ?></td>
				<td><?= $pecah[1]; ?></td>
				<td><?= $pecah[2]; ?></td>
				<td><?= $pecah[3]; ?></td>
				<td><?= $pecah[4]; ?></td>
				<td><?= $pecah[5]; ?></td>
            </tr>
			<?php
				endfor;
			}
			?>
            
        </tbody>
    </table>
</body>

</html>

Sekian tutorial tentang bagaimana Menyimpan Data File Txt Menggunakan PHP. Sekedar saran saja, lebih baik gunakan database yang sudah ada saja.

Terima kasih sudah berkunjung…

Berikan pendapatmu