|
|
|
ต้องการเช็คข้อมูลซ้ำก่อนอัพเดททีละหลายๆ เรคคอร์ด ตามตัวอย่างครับ |
|
|
|
|
|
|
|
รบกวนหน่อยครับ ผมต้องการเช็คข้อมูลแต่ละเรคคอร์ดก่อน submit ว่ามีเรคคอร์ดไหนชื่อ user ซ้ำบ้าง ถ้าซ้ำให้มีตัวหนังสือแจ้งว่าซ้ำข้างๆ input ตัวนั้น ตามตัวอย่างนี้ครับ https://www.thaicreate.com/community/jquery-auto-fill-textbox.html
ตามตัวอย่างทดลองทำได้แล้วครับ แต่ต้องการแก้แบบทีละหลายๆ เรคคอร์ด ยัง งงๆ อยู่
edit.php
<html>
<head>
<title>ThaiCreate.Com PHP & MySQL Tutorial</title>
<meta charset="UTF-8" />
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("#txtUser").change(function(){
$("#sCusID").empty();
$.ajax({
url: "Check_user.php" ,
type: "POST",
data: 'sCusID=' +$("#txtUser").val()
})
.success(function(result) {
var obj = jQuery.parseJSON(result);
if(obj != '')
{
$.each(obj, function(key, inval) {
if($("#txtUser").val() == inval["id"])
{
$("#sCusID").html(" <font color='red'>user ซ้ำครับ</font>");
}
});
}
});
});
});
</script>
</head>
<body>
<?php
$objConnect = mysql_connect("localhost","root","root") or die("Error Connect to Database");
mysql_query("SET NAMES UTF8");
$objDB = mysql_select_db("test");
//*** Update Condition ***//
if($_GET["Action"] == "Save")
{
for($i=1;$i<=$_POST["hdnLine"];$i++)
{
$strSQL = "UPDATE user SET ";
$strSQL .="user = '".$_POST["txtUser$i"]."' ";
$strSQL .=",pass = '".$_POST["txtPass$i"]."' ";
$strSQL .="WHERE id = '".$_POST["hdnCustomerID$i"]."' ";
$objQuery = mysql_query($strSQL);
}
//header("location:$_SERVER[PHP_SELF]");
//exit();
}
$strSQL = "SELECT * FROM user ORDER BY id ASC";
$objQuery = mysql_query($strSQL) or die ("Error Query [".$strSQL."]");
?>
<form name="frmMain" method="post" action="edit.php?Action=Save">
<table width="600" border="1">
<tr>
<th width="91"> <div align="center">ID </div></th>
<th width="98"> <div align="center">User </div></th>
<th width="198"> <div align="center">Password </div></th>
</tr>
<?php
$i =0;
while($objResult = mysql_fetch_array($objQuery))
{
$i = $i + 1;
?>
<tr>
<td><div align="center">
<input type="hidden" name="hdnCustomerID<?php echo $i;?>" size="5" value="<?php echo $objResult["id"];?>">
<input type="text" name="txtCustomerID<?php echo $i;?>" size="5" value="<?php echo $objResult["id"];?>">
</div></td>
<td><input type="text" id="txtUser" name="txtUser<?php echo $i;?>" size="20" value="<?php echo $objResult["user"];?>"></td>
<span id="sCusID"></span>
<td><input type="text" name="txtPass<?php echo $i;?>" size="20" value="<?php echo $objResult["pass"];?>"></td>
</tr>
<?php
}
?>
</table>
<input type="submit" name="submit" value="submit">
<input type="hidden" name="hdnLine" value="<?php echo $i;?>">
</form>
<?php
mysql_close($objConnect);
?>
</body>
</html>
Check_user.php
<?php
$objConnect = mysql_connect("localhost","root","root") or die(mysql_error());
$objDB = mysql_select_db("test");
$strSQL = "SELECT * FROM user WHERE 1 AND id = '".$_POST["sCusID"]."' ";
$objQuery = mysql_query($strSQL) or die (mysql_error());
$intNumField = mysql_num_fields($objQuery);
$resultArray = array();
while($obResult = mysql_fetch_array($objQuery))
{
$arrCol = array();
for($i=0;$i<$intNumField;$i++)
{
$arrCol[mysql_field_name($objQuery,$i)] = $obResult[$i];
}
array_push($resultArray,$arrCol);
}
mysql_close($objConnect);
echo json_encode($resultArray);
?>
ฐานข้อมูลครับ
-- phpMyAdmin SQL Dump
-- version 2.10.3
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Generation Time: Nov 06, 2015 at 06:05 PM
-- Server version: 5.0.51
-- PHP Version: 5.2.6
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
--
-- Database: `test`
--
-- --------------------------------------------------------
--
-- Table structure for table `user`
--
CREATE TABLE `user` (
`id` int(11) NOT NULL auto_increment,
`user` varchar(50) NOT NULL,
`pass` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=11 ;
--
-- Dumping data for table `user`
--
INSERT INTO `user` VALUES (1, 'test1', 'test1');
INSERT INTO `user` VALUES (2, 'test2', 'test2');
INSERT INTO `user` VALUES (3, 'test3', 'test3');
INSERT INTO `user` VALUES (4, 'test4', 'test4');
INSERT INTO `user` VALUES (5, 'test5', 'test5');
INSERT INTO `user` VALUES (6, 'test6', 'test6');
INSERT INTO `user` VALUES (7, 'test7', 'test7');
INSERT INTO `user` VALUES (8, 'test8', 'test8');
INSERT INTO `user` VALUES (9, 'test9', 'test9');
INSERT INTO `user` VALUES (10, 'test10', 'test10');
Tag : PHP, MySQL, JavaScript, jQuery
|
ประวัติการแก้ไข 2015-11-06 18:32:28
|
|
|
|
|
Date :
2015-11-06 18:27:38 |
By :
giverplus |
View :
2479 |
Reply :
4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
แนวทางคือ ต้องเอาข้อมูล ทั้งหมดเข้าไปตรวจสอบก่อน
แล้วข้อมูลต้องไม่ซ้ำกันด้วย
|
|
|
|
|
Date :
2015-11-07 16:44:22 |
By :
CasanovaKung |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
จะยุ่งยากวุ่นวายไปหรือเปล่าครับ จะแก้ไขที่ละหลาย เรคคอร์ด
คุณต้องตรวจสอบทุกเรคคอร์ดที่แก้ไขก่อนว่า ซ้ำกันด้วยหรือไม่ ก่อนที่จะเอาไปตรวจสอบกับ database
แค่คิดแค่นี้ก่อนให้ เช็คได้ว่าไม่มีซ้ำกัน
แล้วถึงค่อยวนลูป ทำการเช็คกับ database ที่ละรายการ
ลองใช้ phpmyadmin รุ่นใหม่ๆ เป็นตัวอย่างในการแก้ไข database ดูครับว่าเขาทำอย่างไร
|
|
|
|
|
Date :
2015-11-07 17:46:28 |
By :
NewbiePHP |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
คือผมมีข้อมูลอยู่ 8 หมื่นกว่าเรคคอร์ด มันมีข้อมูลซ้ำกันอยู่พอสมควร ผมเลยอยากจะไล่เช็ค ไล่แก้ทีละโซนว่ามันซ้ำกับที่ไหนบ้างครับ
|
|
|
|
|
Date :
2015-11-07 18:21:13 |
By :
giverplus |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 สร้างตาราง1 ขึ้นมาใหม่ ให้มี unique key ในฟีลด์ที่ไม่ต้องการให้ซ้ำ
2 สร้างตาราง2 เก็บรายการ ซ้ำไม่ต้องมี unique key
3 อ่านค่ามาที่ละรายการ ใสตาราง1 ถ้าใส่ไม่ได้ให้เก็บในตาราง 2 ทำจนครบ
4 อ่านค่าตารางสอง มาแก้ไข unique key แล้ว insert เข้าตาราง 1 โดยเปลี่ยน ค่า unique key เล็กน้อย
เช่นอ่าจต่อท้ายด้วย 1 2 3 4 ไปเรื่อยๆ ถ้าเป็น varchar
ปล. ทุกตาราง clone มาจากตารางเดิม ช้าหน่อย แต่ชัวร์
|
|
|
|
|
Date :
2015-11-08 01:16:59 |
By :
NewbiePHP |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 04
|