workshop php ป้องกันการบันทึกข้อมูลซ้ำที่ใช้สำหรับระบบต่างๆ เช่น ระบบสมัครสมาชิก ระบบลงทะเบียนต่างๆ ฯลฯ ซึ่ง workshop นี้น่าจะช่วยแก้ปัญหาข้อมูลซ้ำซ้อนในการบันทึกข้อมูลลงระบบได้เป็นอย่างดี ด้วยวิธีง่ายๆ by devbanban ใน workshop นี้จะแนะนำการสร้างระบบสมัครสมาชิกโดยห้ามมี username ซ้ำกัน
ฐานข้อมูลใช้แบบง่ายๆ แค่ 3 ฟิลด์ที่เหลือค่อยไปประยุกต์ใช้นะครับ
1 member_no = pk
2 username
3 password
ไฟล์เชื่อมต่อกับฐานข้อมูล
1 2 3 4 5 6 7 8 |
<?php $hostname_dbconnect = "localhost"; $database_dbconnect = "my_db"; $username_dbconnect = "root"; $password_dbconnect = "password"; $dbconnect = mysql_pconnect($hostname_dbconnect, $username_dbconnect, $password_dbconnect) or trigger_error(mysql_error(),E_USER_ERROR); mysql_query("SET NAMES UTF8"); ?> |
ฟอร์มสำหรับสมัครสมาชิก
กำหนดให้ใช้ E-mail เป็น Username
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<html> <head> <charset="utf-8" /> <title>สมัครสมาชิก</title> </head> <body> <form id="register" name="register" method="post" action="save.php"> username <label for="username"></label> <input type="email" name="username" id="username" /> <br /> password <label for="password"></label> <input type="password" name="password" id="password" /> <br /> <input type="submit" name="สมัครสมาชิก" id="regis" value="สมัครสมาชิก" /> </form> </body> </html> |
ไฟล์ save.php สำหรับตรวจสอบการบันทึกข้อมูลซ้ำและบันทึกข้อมูลลงในฐานข้อมูล
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
<meta charset="utf-8" /> <?php require_once('dbconnect.php'); $username = $_POST["username"]; $password = $_POST["password"]; // เช็คว่ามีข้อมูลนี้อยู่หรือไม่ $check = "select * from tb_member where username = '$username' "; $result1 = mysql_query($check) or die(mysql_error()); $num=mysql_num_rows($result1); if($num > 0) { //ถ้ามี username นี้อยู่ในระบบแล้วให้แจ้งเตือน echo "<script>"; echo "alert(' มีผู้ใช้ username นี้แล้ว กรุณาสมัครใหม่อีกครั้ง !');"; echo "window.location='form.php';"; echo "</script>"; }else{ //ถ้าไม่มีก็บันทึกลงฐานข้อมูล $sql = "INSERT INTO tb_member (username, password) VALUES ('$username', '$password') "; $result = mysql_db_query($database_dbconnect, $sql) or die ("Error in query: $sql". mysql_error()); } //ปิดการเชื่อมต่อกับฐานข้อมูล mysql_close($dbconnect); //บันทึกสำเร็จแจ้งเตือนและกระโดดกลับไปหน้าฟอร์ม ปล.การทำระบบจริงๆ อาจกระโดดไปหน้าอื่นที่เรากำหนด if($result){ echo "<script type='text/javascript'>"; echo "alert('SUCCESSFULLY');"; echo "window.location='form.php';"; echo "</script>"; } else{ //ถ้าบันทึกไม่สำเร็จแสดงข้อความ Error และกระโดดกลับไปหน้าฟอร์ม echo "<script type='text/javascript'>"; echo "alert('Error!');"; echo "window.location='form.php';"; echo "</script>"; } ?> |
ทดลองนำ workshop นี้ไป run และประยุกต์ใช้ดูนะครับ เกิดประโยชน์มากๆ