|
|
|
สอบถาม การ insert ครับ โดยถ้า insert ข้อมูลที่มีอยู่ใน table แล้ว จะไม่สามารถ inset ซํ้าได้ ต้องใช้หลักการไหนครับ |
|
|
|
|
|
|
|
หลักการ คือ นำข้อมูลที่เป็น คีย์หลักที่ไม่สามารถซ้ำกันในฐานข้อมูลได้ ไปค้นหาในฐานข้อมูลก่อน ถ้าซ้ำกัน ก็แจ้งเตือน user ว่าซ้ำ ถ้าไม่ซ้ำ ก็ INSERT ข้อมูลไปค่ะ
|
|
|
|
|
Date :
2011-02-22 14:54:45 |
By :
ultrasiam |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ใช้คำสั่งไหนในการตรวจเช้ค ข้อมูลในฟิวที่ซํ้าหลอครับ
รบกวนหน่อยนะครับ
ขอบคุณครับ
|
|
|
|
|
Date :
2011-02-22 15:05:41 |
By :
champweza |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
สงสัยจะยังไม่เข้าใจที่บอกไปตอนแรก ^^ ไม่เป็นไรค่ะ เอาใหม่
จะรู้ได้ยังไงว่าข้อมูลที่จะ INSERT มันมีอยู่ในฐานข้อมูลหรือยัง ก็ต้องเข้าไปดูที่ฐานข้อมูลค่ะ แล้วจะเข้าไปยังไงล่ะ
มันก็คือการ query ข้อมูลนั่นแหละค่ะ เหมือนการค้นหา
สมมุติว่า คุณอยากรู้ว่า user_id=5 ในตาราง tbuser มันซ้ำ หรือเปล่า ก็ต้อง select ออกมาดูค่ะ
SELECT COUNT(user_id) FROM tbuser WHERE user_id=5
ถ้าผลลัพธ์ = 0 แสดงว่ายังไม่มี ถ้า > 0 แสดงว่ามีแล้วก็คือซ้ำ
ส่วนการเขียนโปรแกรมนั้น มันก็ทำได้หลายแบบ ที่นิยมกันตอนนี้คงจะเป็น Ajax อันนี้ก็ไม่แน่ใจนะคะอาจจะมีวิธีอื่นที่ดีกว่านี้
ลักษณะการทำงาน เหมือนกับ เวลาสมัครสมาชิกตามเว็บที่มีการเช็ค username ซ้ำ อะไรประมาณนั้น
เขียน ajax ส่งค่าไปคิวรี่ที่ ไฟล์ php อาจเช็คที่ OnBlur ของ Textfield ที่ป้อนรหัสก็ได้
ถ้าซ้ำ echo 1 ไม่ซ้ำ echo 0 Ajax ก็จะได้ ค่า 0 หรือ 1 เป็นค่าที่ response มา
คุณก็เอาค่าที่ได้มานี้มาเช็คอีกทีด้วย javascript
ถ้า response == 0 ก็ให้ทำงานต่อไป แต่ถ้าไม่ใช่ ให้แสดงข้อความว่า รหัสซ้ำ
ประมาณนี้ ส่วนจะเขียนโค้ดยังไงนั้น ลองศึกษาดูที่บทเรียนได้ค่ะ
|
|
|
|
|
Date :
2011-02-22 15:55:53 |
By :
ultrasiam |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ตัวอย่างการตรวจสอบค่าซ้ำในฐานข้อมูลนะคะ
หน้า Form
Code (PHP)
<form id="form1" name="form1" method="post" action="">
ID <input name="id" type="text" id="id" />
<input type="button" name="Button" value="Check" onclick="doCallAjax(document.getElementById('id').value)" />
</form>
<script>
function doCallAjax(search_id) {
HttPRequest = false;
if (window.XMLHttpRequest) { // Mozilla, Safari,...
HttPRequest = new XMLHttpRequest();
if (HttPRequest.overrideMimeType) {
HttPRequest.overrideMimeType('text/html');
}
} else if (window.ActiveXObject) { // IE
try {
HttPRequest = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
HttPRequest = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
if (!HttPRequest) {
alert('Cannot create XMLHTTP instance');
return false;
}
var url = 'chk_same.php';
var pmeters ="id="+search_id;
HttPRequest.open('POST',url,true);
HttPRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
HttPRequest.setRequestHeader("Content-length", pmeters.length);
HttPRequest.setRequestHeader("Connection", "close");
if(search_id!=""){
HttPRequest.send(pmeters);
}else{
alert("Please insert id")
}
HttPRequest.onreadystatechange = function(){
if(HttPRequest.readyState == 4) // Return Request
{
if(HttPRequest.responseText==0){
alert("Not same");
}else{
alert("Same");
}
}
}
}
</script>
ไฟล์เช็คค่าซ้ำ chk_same.php
chk_same.php
<?php
$host="localhost";
$username="root";
$passwd="";
$dbname="test";
$conn = mysql_pconnect($host,$username,$passwd)or die("Can't connect to Server");
mysql_select_db($dbname)or die("Can't connect to Database");
$sql = "SELECT COUNT(good_id) AS cid FROM good WHERE good_id=".$_POST["id"];
$query = mysql_query($sql)or die("Can't query");
$objquery = mysql_fetch_array($query);
echo $objquery['cid'];
?>
ลองเอาไปดัดแปลงใช้กันดูนะคะ
|
|
|
|
|
Date :
2011-02-22 16:43:34 |
By :
ultrasiam |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณครับผม
|
|
|
|
|
Date :
2011-02-22 16:46:39 |
By :
champweza |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 04
|