Cara membuat validasi menghindari duplicate entry menggunakan php

Untuk mencegah terjadinya duplikasi data, tentunya didalam kode program PHP yang kita buat harus ada pengecekan terlebih dahulu, misalnyanya dengan melakukan pengecekan terhadap email yang digunakan saat user melakukan registrasi akun, apakah email tersebut sudah dipakai atau belum.

Kasus ini biasanya kita jumpai saat kita membuat akun baru, misalnya di Facebook atau akun-akun yang lain. Saat mendaftar kita tidak boleh menggunakan email yang sama, karena email disini sifatnya unik tidak boleh ada yang sama.

Untuk artikel kali ini kita akan mencoba membuat validasi email, untuk mencegah user melakukan registrasi dengan menggunakan email yang sama.

Pertama-tama silahkan buat databasennya

-- phpMyAdmin SQL Dump
-- version 4.5.2
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Generation Time: Jun 12, 2017 at 12:34 PM
-- Server version: 10.1.16-MariaDB
-- PHP Version: 5.6.24

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";


/*!40101 SET @[email protected]@CHARACTER_SET_CLIENT */;
/*!40101 SET @[email protected]@CHARACTER_SET_RESULTS */;
/*!40101 SET @[email protected]@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;

--
-- Database: `db_valid`
--

-- --------------------------------------------------------

--
-- Table structure for table `tbl_user`
--

CREATE TABLE `tbl_user` (
  `id` int(5) NOT NULL,
  `nama_lengkap` varchar(100) NOT NULL,
  `nama_email` varchar(100) NOT NULL,
  `status` enum('1','0') NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Dumping data for table `tbl_user`
--

INSERT INTO `tbl_user` (`id`, `nama_lengkap`, `nama_email`, `status`) VALUES
(1, 'Miftah Faroq', '[email protected]', '0'),
(2, 'Desy Amaliah', '[email protected]', '1'),
(3, 'Andi Garcia', '[email protected]', '1'),
(4, 'Tony Montana', '[email protected]', '1');

--
-- Indexes for dumped tables
--

--
-- Indexes for table `tbl_user`
--
ALTER TABLE `tbl_user`
  ADD PRIMARY KEY (`id`);

--
-- AUTO_INCREMENT for dumped tables
--

--
-- AUTO_INCREMENT for table `tbl_user`
--
ALTER TABLE `tbl_user`
  MODIFY `id` int(5) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=14;
/*!40101 SET [email protected]_CHARACTER_SET_CLIENT */;
/*!40101 SET [email protected]_CHARACTER_SET_RESULTS */;
/*!40101 SET [email protected]_COLLATION_CONNECTION */;

Selanjutnya koneksi ke database

<?php
	
	$server = "localhost";
	$user = "root";
	$pass = "";
	$dbase = "db_valid";

	$koneksi = mysql_connect($server, $user, $pass) or die (mysql_error());
	$pilih_db = mysql_select_db($dbase, $koneksi) or die (mysql_error());

	

Kemudian buat file untuk input saat melakukan registrasi

<!DOCTYPE html>
<html>
<head>
	<title>Form Registrasi</title>
</head>
<body>
	<?php


		if(isset($_GET["hasil"])){
			if($_GET["hasil"] == "gagal"){
				echo "Email sudah digunakan!";
			} else {
				echo "Data berhasil diinput";
			}
		}
	?>
	<form action="insert-proses.php" method="POST">
		<table>
			<tr>
				<td>Nama</td>
				<td>:</td>
				<td><input type="text" name="nm" placeholder="Masukkan Nama"></td>
			</tr>
			<tr>
				<td>Email</td>
				<td>:</td>
				<td><input type="text" name="em" placeholder="Masukkan Email"></td>
			</tr>
			<tr>
				<td></td>
				<td></td>
				<td>
					<input type="submit" name="submit" value="Simpan">
					<input type="reset" name="reset" value="Clear">
				</td>
			</tr>
		</table>
	</form>
</body>
</html>

Tahapan paling akhir, kita akan membuat file proses insert datanya

<?php
	include "koneksi.php";

	$nama = $_POST["nm"];
	$mail = $_POST["em"];

	$sql = "SELECT * FROM tbl_user WHERE nama_email='$mail'";
	$query = mysql_query($sql) or die (mysql_error());

	if(mysql_num_rows($query) > 0){
		
		header("location: form_registrasi.php?hasil=gagal");

	} else {

		$sql = "INSERT INTO tbl_user(nama_lengkap, nama_email, status) VALUES('$nama','$mail','0')";
		$query = mysql_query($sql) or die (mysql_error());

		header("location: form_registrasi.php?hasil=sukses");
	}

Teman-teman bisa melakukan modifikasi dari kodingan yang sudah saya buat.

Kesimpulannya dengan menggunakan validasi seperti ini, akan bisa meminimalisir data-data yang sengaja dibuat, dengan menggunakan email yang sama.

Untuk artikel berikutnya kita akan mencoba bagaimana melakukan verifikasi melalui email, bahwa email yang digunakan tersebut ada atau valid, dengan mengirimkan link pengaktifan akun.