ต้องการตรวจเช็คค่าซ้ำ การฟอร์มแก้ไขข้อมูล ก่อนบันทึกลงฐาน
จากที่ดู นี่น่าจะเป็นการเรียกข้อมูลจากฐานข้อมูลมาแสดง แล้วทำการแก้ไข เสร็จแล้วก้อ ไป update ทับตัวเก่าใช่มะครับ ถ้าเป็นแบบนั้น ก้อไม่ต้องให้ user แก้ไข MacAddress กะ SN สิคับ
หรือไม่ ก้อกำหนดในฐานข้อมูลให้สองตัวนี้ เป็น Primary Key ครับ มันจะซ้ำกันไม่ได้ (ในกรณีที่ใช้ Insert)
Date :
2009-04-10 18:50:48
By :
noomna19
ขอขอบคุณสำหรับคำแนะนำนะค่ะ
แต่คงเป็นไปไม่ได้ เพราะอันที่จริงฟอร์มนี้จะมีช่องกรอกรายละเอียดมากกว่า แต่ช่องอื่นๆ มันให้ซ้ำได้ แต่สองช่องที่ว่ามานี้ ไม่อยากให้ซ้ำ เช่น หากเปลี่ยนชื่อเครื่องคอม ก็ไม่ต้องการให้ช่อง SN และช่อง Mac Address มันซ้ำกัน ข้อมูลจะเป็น ID เดิม แต่อาจจะมีการแก้ไขบางช่อง..
เคยไปกำหนดใน Database ให้เป็น Primary Key แล้ว แต่ก็มีบางข้อมูลบางรายการไม่มี SN และข้อมูลบางรายการก็ไม่มี Mac Address หากเป็นค่าว่าง ไม่ก็สามารถบันทีกลงไปได้อีก...
เกิดความสับสน งง มากว่าจะทำอย่างไรกันดีนะค่ะ...ขอขอบคุณพี่ ๆ ที่มาช่วยเหลือ
Date :
2009-04-10 19:32:10
By :
LukNam
อ๋อออ แบบนี้นี่เอง งั้นคงต้องตรวจสอบก่อนจะทำการอัพเดทล่ะครับ
Code (PHP)
<?php
$sql="Select * From tb_datacmp Where SN='".$sn."' or MacAddress='".$mac."'";
$query=mysql_query($sql);
$row=mysql_num_rows($query);
if($row==0){
// ทำการอัพเดทได้
}else{
echo "<script>alert('SN หรือ MacAddress ซ้ำ กรุณาตรวจสอบ')</script>"; // ใส่ alert เลยครับ
exit;
}
?>
แบบนี้อ่ะคับ (สงกรานต์ไม่ไปเที่ยวไหนหรอครับ )
Date :
2009-04-10 19:59:06
By :
noomna19
ขอขอบคุณมากเลยนะค่ะ...
จะพยายามศึกษาและเขียนให้ได้ หากไม่ได้อาจจะมารบกวนขอความช่วยเหลืออีกครั้ง
(สงกรานต์ก็อยากจะกลับบ้านค่ะ แต่คงต้องเอาโปรแกรมนี้ไปทำด้วย งานเร่งมากด้วย ก็เขียนไม่ค่อยจะเก่งเลย น่าเศร้า ๆ ๆ ๆ )
Date :
2009-04-10 21:12:08
By :
LukNam
เรียน พี่หนุ่มคุง
ได้เพียรพยายามทำตามขั้นตอนแล้ว ก็ยังไม่สามารถตรงกับความต้องการเลยนะคะ
เลยส่งโค๊ดมาให้ดู ว่าจะต้องแก้ไขหรือเพิ่มเติมโค๊ด ตรงส่วนไหนบ้าง ???
ถ้าเป็น ID เดิม น่าจะสามารถแก้ไขข้อมูลต่าง ๆ ได้ ยกเว้นแต่ฟิลด์ SN และ MacAddress
ไม่ควรจะซ้ำกับ ID อื่น ๆ ถ้าหาก ID อื่น ๆ นั้น ได้มี SN หรือ MacAddress ไม่ควรจะทำการแก้ไข ID นั้นได้
-------------------------------------------------------------
File : AddCmp.php
-------------------------------------------------------------
<?php
$hostName = "localhost";
$userName = "user";
$passWord = "user";
$conn = mysql_connect($hostName, $userName, $passWord) or die ("ไม่สามารถติดต่อ Server ได้");
mysql_query("SET NAMES utf8", $conn);
mysql_query("USE db_testcmp");
// แบ่งหน้า
if(isset($_GET['page'])){
$current_page= $_GET['page'];
}
else{
$current_page = 1;
}
$page_size = 1; // กำหนดจะให้แสดงกี่บรรทัดต่อหน้า
$start_row = ($current_page- 1) * $page_size ;
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>:: ADD Data Computer ::</title>
</head>
<body>
<form action="AddCmpSAVE.php" method="POST" enctype="multipart/form-data" name="formCMP" id="formCMP" >
<?php
$sqlA = "SELECT * FROM tb_datacmp ORDER BY cmpID ASC LIMIT $start_row, $page_size";
$resultA = mysql_query($sqlA) or die ("$sql_Error");
while($rowA= mysql_fetch_array($resultA)){
?>
<p>Computer ID : <input name="cmpID" type="text" id="textSN" value="<?=($rowA["cmpID"])?>" size="2" readonly />
<p>Computer Name : <input name="textCmpName" type="text" id="textCmpName" value="<?=($rowA['cmpName'])?>" />
<p>Serial No. : <input name="textSN" type="text" id="textSN" value="<?=($rowA['SN'])?>"/>
<p>Mac Address : <input name="textMAC" type="text" id="textMAC" value="<?=($rowA['MacAddress'])?>" />
<?php } ?>
<hr align="left" width="300" size="2" color="#FF0000">
<input name="UpdateData" type="submit" id="UpdateData " value="UpdateData">
<!------ แสดงผลจำนวนเรคคอร์ดของข้อมูล จำนวนหน้าและลิงค์หน้าต่อ ๆไป ------>
<?
// จำนวนแถวทั้งหมด
$result = mysql_query("SELECT COUNT(*) FROM tb_datacmp");
// $result = mysql_query($sql);
$num_rows = mysql_result($result,0,0);
// จำนวนเพจทั้งหมด
$num_pages = ceil($num_rows/$page_size);
$group_size = 1; // การแบ่งจำนวนกลุ่มต่อหน้า
$current_group = ceil($current_page/$group_size);
echo "total <b>$num_rows</b> page ";
echo "| <b>$current_page</b>/<b>$num_pages</b>";
echo "        ";
if($current_group > 1){
// กลุ่มหมายเลขเพจและลิงค์ Previous
$last_page_of_last_group = ($current_group - 1) * $group_size;
echo "<a href=$PHP_SELF?page=1><b>«</b>";
echo "<a href=\"".$_SERVER['PHP_SELF'] ."?";
echo "page=$last_page_of_last_group\" > <b>‹</b></a> ";
}
$first_page_of_current_group = (($current_group - 1) * $group_size) + 1;
$last_page_of_current_group = $current_group * $group_size;
if($last_page_of_current_group <= $num_pages){
$end = $last_page_of_current_group;
}
else{
$end = $num_pages;
}
for($i = $first_page_of_current_group; $i <= $end; $i++){
// หมายเลขของหน้าปัจจุบันไม่ต้องทำลิงค์
if($i == $current_page){
echo " <font color='red'>". $i ."</font> ";
}
else{
echo "<a href=\"".$_SERVER['PHP_SELF'] . "?";
echo "page=$i\">". $i ."</a> ";
}
}
if($num_pages > $last_page_of_current_group){
// กลุ่มหมายเลขเพจและลิงค์ Next
$first_page_of_next_group = $last_page_of_current_group + 1;
echo "<a href=\"".$_SERVER['PHP_SELF']."?";
echo "page=$first_page_of_next_group\"> <b>›</b> </a> ";
echo "<a href=$PHP_SELF?page=".$num_pages."><b>»</b></a> \n";
}
?>
</form>
</body>
</html>
-------------------------------------------------------------
File : AddCmpSAVE.php
-------------------------------------------------------------
<?php
$hostName = "localhost";
$userName = "user";
$passWord = "user";
$conn = mysql_connect($hostName, $userName, $passWord) or die ("ไม่สามารถติดต่อ Server ได้");
mysql_query("SET NAMES utf8", $conn);
mysql_query("USE db_testcmp");
$cmpID = $_POST["cmpID"];
$cmpname = $_POST["textCmpName"];
$sn= $_POST["textSN"];
$mac = $_POST["textMAC"];
if((empty($cmpID))||(empty($cmpname))||(empty($sn))||(empty($mac))){
echo "<script>alert('ข้อมูลไม่ครบ กรุณากรอกให้ครบด้วย');history.back();</script>";
exit();
}else{
$sql = "SELECT * FROM tb_datacmp WHERE SN='".$sn."' OR MacAddress='".$mac."'";
$query = mysql_query($sql);
$row = mysql_num_rows($query);
if($row == 0){
$sqlUP = "UPDATE tb_datacmp SET cmpName='$cmpname',SN='$sn',MacAddress='$mac' WHERE cmpID = $cmpID LIMIT 1";
$resultUP = mysql_query($sqlUP) or die ("<script>alert('ไม่สามารถแก้ไขข้อมูลได้');history.back();</script>");
echo "<script>alert('แก้ไขข้อมูลเรียบร้อยแล้ว');window.location='AddCmp.php';</script>";
}else{
echo "<script>alert('SN หรือ Mac Address ซ้ำ กรุณาตรวจสอบ');history.back();</script>"; // ใส่ alert เลยครับ
exit;
}
}
mysql_close($conn);
?>
-----------------------------------------------------------------
Date :
2009-04-13 16:00:05
By :
LukNam
Code (PHP)
<?php
$sql = "SELECT * FROM tb_datacmp WHERE (SN='".$sn."' OR MacAddress='".$mac."') AND cmpID != $cmpID";
$query = mysql_query($sql);
if(mysql_num_rows($query) != 0){
//ซ้ำกับ record อื่นๆ
}else{
//ไม่ซ้ำ save โลด
}
?>
Date :
2009-04-18 16:14:48
By :
plakrim
ขอขอบคุณ คุณพี่ PlaKriM อย่างสูงเลยนะค่ะ ที่กรุณาช่วยเหลือ
ตอนนี้ได้ทำการทดสอบแล้ว ใช้ได้แล้วนะค่ะ ดีมากเลยนะ...
หวังเป็นอย่างยิ่งว่าคงไม่รบกวน และโอกาสหน้าอาจจะมารบกวนอีก คงไม่ว่าอะไรนะ
ขอบคุณมากค่ะ...!!!!
------------------------------------------------------------------
<?php
$hostName = "localhost";
$userName = "user";
$passWord = "user";
$conn = mysql_connect($hostName, $userName, $passWord) or die ("ไม่สามารถติดต่อ Server ได้");
mysql_query("SET NAMES utf8", $conn);
mysql_query("USE db_testcmp");
$cmpID = $_POST["cmpID"];
$cmpname = $_POST["textCmpName"];
$sn= $_POST["textSN"];
$mac = $_POST["textMAC"];
if((empty($cmpID))||(empty($cmpname))||(empty($sn))||(empty($mac))){
echo "<script>alert('ข้อมูลไม่ครบ กรุณากรอกให้ครบด้วย');history.back();</script>";
exit();
}else{
$sql = "SELECT * FROM tb_datacmp WHERE (SN='".$sn."' OR MacAddress='".$mac."') AND cmpID != $cmpID";
$query = mysql_query($sql);
if(mysql_num_rows($query) != 0){
echo "<script>alert('SN หรือ Mac Address ซ้ำ กรุณาตรวจสอบ');history.back();</script>";
exit();
}else{
$sqlUP = "UPDATE tb_datacmp SET cmpName='$cmpname',SN='$sn',MacAddress='$mac' WHERE cmpID = $cmpID LIMIT 1";
$resultUP = mysql_query($sqlUP) or die ("<script>alert('ไม่สามารถแก้ไขข้อมูลได้');history.back();</script>");
echo "<script>alert('แก้ไขข้อมูลเรียบร้อยแล้ว');window.location='AddCmp.php';</script>";
exit();
}
}
mysql_close($conn);
?>
------------------------------------------------------------------
Date :
2009-04-19 15:28:28
By :
LukNam
มีวิธีตรวจสอบรูปแแบบการกรอก mac address ไหมคับว่าถูกต้องตามรูปแบบหรือไม่
Date :
2012-01-20 18:30:51
By :
lin2online
ขอขอบคุณ พี่ PlaKriM เหมือนกันครับ ผมกำลังหาวิธีนี้เหมือนกัน คิดมาหลายวันคิดไม่ออกสักที่ขอบคุณพี่จริงๆๆ ครับ
Date :
2012-03-28 15:05:29
By :
amkung
การตรวจสอบรูปแบบการกรอก mac address ลองหา keyword พวก jquery validate remote ดูอะครับ
Date :
2012-03-28 15:08:36
By :
amkung
http://www.meiocodigo.com/projects/meiomask/ ลองศึกษาจากนี้ดูนะครับ การกรอก Mac address อะครับ
Date :
2012-03-28 15:11:12
By :
amkung
Load balance : Server 00