สอบถามเกี่ยวกับการเช็คค่าซ้ำในฐานข้อมูล MySQL กรณีการเปลี่ยนแปลงข้อมูล
จาก Code ผมได้ทำการ action มาจากอีกไฟล์นึง
ในการแก้ไข Profile โดยมีการกำหนดข้อมูลห้ามซ้ำ
แต่ Code ที่ผมเขียนขึ้นมานั้น มันเช็คค่าซ้ำที่ ID ของตัวเองด้วย
เช่นจะแก้ไข เฉพาะรหัสผ่าน ก็แก้ไม่ได้ เพราะ เบอร์โทรศัพท์ เลขบัตร มีอยู่แล้ว ซึ่งก็เป็นของตัวมันเอง
พอจะมีวิธีอื่นไหมครับ
Code (PHP)
<?php
session_start();
include("connect.php");
$strSQL = "SELECT * FROM member WHERE PerId = '".trim($_POST['txtPerId'])."' ";
$objQuery = mysql_query($strSQL);
$objResult = mysql_fetch_array($objQuery);
if($objResult)
{
?>
<script type="text/javascript">
alert("เลขบัตรประจำตัวประชาชน ไม่สามารถใช้งานได้");
history.back();
</script>
<?php
}
elseif($objResult)
{
$strSQL = "SELECT * FROM member WHERE DriveId = '".trim($_POST['txtDriveId'])."' ";
$objQuery = mysql_query($strSQL);
$objResult = mysql_fetch_array($objQuery);
?>
<script type="text/javascript">
alert("เลขใบขับขี่ ไม่สามารถใช้งานได้");
history.back();
</script>
<?php
}
elseif($objResult)
{
$strSQL = "SELECT * FROM member WHERE Tel = '".trim($_POST['txtTel'])."' ";
$objQuery = mysql_query($strSQL);
$objResult = mysql_fetch_array($objQuery);
?>
<script type="text/javascript">
alert("หมายเลขติดต่อ ไม่สามารถใช้งานได้");
history.back();
</script>
<?php
}
elseif($objResult)
{
$strSQL = "SELECT * FROM member WHERE Email = '".trim($_POST['txtEmail'])."' ";
$objQuery = mysql_query($strSQL);
$objResult = mysql_fetch_array($objQuery);
?>
<script type="text/javascript">
alert("อีเมลล์ ไม่สามารถใช้งานได้");
history.back();
</script>
<?php
}
else
{
$strSQL = "UPDATE member SET
ID='".($_POST['txtID'])."',Status='".($_POST['txtStatus'])."',Fname='".($_POST['txtFname'])."',
Lname='".($_POST['txtLname'])."',PerId='".($_POST['txtPerId'])."',DriveId='".($_POST['txtDriveId'])."',
Tel='".($_POST['txtTel'])."',Email='".($_POST['txtEmail'])."',Password='".($_POST['txtPassword'])."',
SID='".($_POST['txtSID'])."',Active='".($_POST['txtActive'])."'
WHERE ID ='".$_POST['txtID']."'";
$objQuery = mysql_query($strSQL) or die("Error : ".$strSQL);
if ($strSQL)
{
echo("<script>
alert('แก้ไขข้อมูลเรียบร้อยแล้ว');
history.go(-2);
</script>");
}
}
mysql_close();
?>
Tag : PHP, MySQL, HTML/CSS
Date :
2016-03-01 15:31:41
By :
Pla2todkrob
View :
1044
Reply :
4
ผมอ่านแล้วเหมือนผมไม่เข้าใจคำถามหรือเปล่าไม่ทราบ แต่ถ้าถามผมว่าผมทำแบบไหนผมก็ใช้การดึงข้อมูลทั้งหมดมาแสดง
ใน text field จากนั้นข้อมูลที่ไม่ต้องการให้แก้ไขก็เติม readonly ลงไปตาม text field ที่ต้องการก็ไม่สามารถแก้ไขได้ครับ
***ระบบที่ผมทำไม่ได้ Online เป็นระบบเล็กๆเลยทำง่ายๆไว้
Code (PHP)
<input name="teacher_save" type="text" id="<?php echo $teacher_save["Name"];?>" value="<?php echo $teacher_save["Name"];?>" size="14" readonly />
Date :
2016-03-01 17:54:35
By :
apisit542
Code (PHP)
//ถ้า อีเมล์ที่ส่งมาไม่ใช่เมลล์เดิม ค่อยไปตรวจสอบเมลล์ซ้ำ
if($objResult[0]['email'] !== $_POST['txtEmail']){
//ตรวจสอบเมลล์ซ้ำ
...
}
ตอบความคิดเห็นที่ : 1 เขียนโดย : apisit542 เมื่อวันที่ 2016-03-01 17:54:35
รายละเอียดของการตอบ ::
มันจะอารมประมาณว่า
ฐานข้อมูลเดิม
ID = 0001
Name = Frist Name
ID Card = 1111111111111
Phone = 0812345678
Username = test1
Password = test1
หน้าที่จะแก้ไขโปรแกรม
เช็ค ID Card,Phone,Username ห้ามซ้ำ
สมมติ กดปุ่ม Edit จะดึงข้อมูลทั้งหมดนี้ขึ้นมา
เป็น <input type="text" value="ฐานข้อมูล">
แต่ผมต้องการเปลี่ยน แค่บาง ฟิล เช่น
ID = 0001
Name =
Fristname Lastname เดิมทีเป็น Frist Name
ID Card = 1111111111111
Phone = 0812345678
Username = test1
Password = test1
พอกดบันทึก
มันจะแจ้งว่า
ID Card ซ้ำ
Phone ซ้ำ
Username ซ้ำ
และสิ่งที่ผมต้องการคือ ให้มันบันทึกได้ไม่ต้องแจ้งว่า ข้อมูลพวกนี้ซ้ำ
เพราะข้อมูลพวกนี้เป็นของตัวมันเอง ไม่ได้ซ้ำกับฟิลอื่น
ที่ผมให้มันเช็คค่าซ้ำเพราะไม่ต้องการให้ซ้ำกับฟิลอื่น แต่นี้มันฟิลของตัวเอง
ประวัติการแก้ไข 2016-03-02 12:16:04 2016-03-02 13:47:40
Date :
2016-03-02 12:15:43
By :
Pla2todkrob
Load balance : Server 03