|
|
|
ขอคำแนะนำเรื่อง sql ป้องกันข้อมูลซ้ำ อยากให้คำสั่งแจ้งเตือนเป็นภาษาไทยครับ |
|
|
|
|
|
|
|
ตอนนี้ผมทำคำสั่งให้ระบบดักข้อมูลชื่อสินค้า (product_name) ที่มีอยู่ในฐานข้อมูลอยู่ก่อนแล้ว
แต่ติดปัญหาคือ จะให้คำสั่งแจ้งเตือนเป็นภาษาไทยแต่เป็นภาษาต่างด้าวแทนครับ ต้องแก้ยังไงครับ
Code ป้องกันข้อมูลซ้ำ
Code (PHP)
$sql="SELECT * FROM product WHERE product_name='".$product_name."'"; //บรรทัดนี้เป็นการ เลือก ว่าจะต้องการติดต่อกับ product อะไร และโดยใช้ product_name เป็นตัวแปรเงื่อนไขในการเลือกข้อมูลที่ product_name ทึ่ต้องการทราบ
$query = mysql_query($sql); //การ เก็บค่า โดยใช้ mysql_query ครับ เพื่อทำการ query คำสั่งที่ เก็บ อยู่ใน $sql
if(mysql_num_rows($query) != 0){ // ใช้ if ตั้งเงื่อนไขตรวจสอบมีชื่อสินค้าซ้ำหรือไม่ โดยนับจำนวนแถวของข้อมูลชื่อสินค้า mysql_num_rows(ตัวแปรที่แทนค่าการจัดการฐานข้อมูล) นับจำนวนแถวของ Result ที่ได้จากการ Query
//!= 0 คือ จำนวนแถวของ Result ที่ได้ และไม่มีค่าเท่ากับ 0 หรือว่างเปล่าครับ
echo "<script>alert ('ข้อมูลซ้ำ');history.back();</script>"; // ใส่ alert เลยครับ //ชื่อสินค้าซ้ำ กรุณาตรวจสอบใหม่
exit(); //จบกระบวนการทำงาน
}else{ //ถ้าไม่มีชื่อสินค้าซ้ำ ก็ออกไปทำกระบวนการ insert
เสริมครับ code หน้านี้ทั้งหมดครับ ที่ code ป้องกันข้อมูลซ้ำมันอยู่นอก
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> จึงทำให้เป็นภาษาต่างด้าวครับ
Code (PHP)
<?php require_once('Connections/MyConnect.php');
// เรียกไฟล์ MyConnect.php ที่อยู่ใน Project_Retailstore จากภายนอก
session_start();
?>
<?php
if (!isset($_SESSION)) {
// บรรทัดนี้เป็น การ เรียกใช้ งานsession ครับ
}
$MM_authorizedUsers = "";
$MM_donotCheckaccess = "true";
// *** Restrict Access To Page: Grant or deny access to this page
function isAuthorized($strUsers, $strGroups, $UserName, $UserGroup) {
// For security, start by assuming the visitor is NOT authorized.
$isValid = False;
// When a visitor has logged into this site, the Session variable MM_Username set equal to their username.
// Therefore, we know that a user is NOT logged in if that Session variable is blank.
if (!empty($UserName)) {
// Besides being logged in, you may restrict access to only certain users based on an ID established when they login.
// Parse the strings into arrays.
$arrUsers = Explode(",", $strUsers);
$arrGroups = Explode(",", $strGroups);
if (in_array($UserName, $arrUsers)) {
$isValid = true;
}
// Or, you may restrict access to only certain users based on their username.
if (in_array($UserGroup, $arrGroups)) {
$isValid = true;
}
if (($strUsers == "") && true) {
$isValid = true;
}
}
return $isValid;
}
$MM_restrictGoTo = "admin/index.php";
if (!((isset($_SESSION['MM_Username'])) && (isAuthorized("",$MM_authorizedUsers, $_SESSION['MM_Username'], $_SESSION['MM_UserGroup'])))) {
$MM_qsChar = "?";
$MM_referrer = $_SERVER['PHP_SELF'];
if (strpos($MM_restrictGoTo, "?")) $MM_qsChar = "&";
if (isset($_SERVER['QUERY_STRING']) && strlen($_SERVER['QUERY_STRING']) > 0)
$MM_referrer .= "?" . $_SERVER['QUERY_STRING'];
$MM_restrictGoTo = $MM_restrictGoTo. $MM_qsChar . "accesscheck=" . urlencode($MM_referrer);
header("Location: ". $MM_restrictGoTo);
exit;
}
?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
if (PHP_VERSION < 6) {
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
}
$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
}
$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
$sql="SELECT * FROM product WHERE product_name='".$product_name."'"; //บรรทัดนี้เป็นการ เลือก ว่าจะต้องการติดต่อกับ product อะไร และโดยใช้ product_name เป็นตัวแปรเงื่อนไขในการเลือกข้อมูลที่ product_name ทึ่ต้องการทราบ
$query = mysql_query($sql); //การ เก็บค่า โดยใช้ mysql_query ครับ เพื่อทำการ query คำสั่งที่ เก็บ อยู่ใน $sql
if(mysql_num_rows($query) != 0){ // ใช้ if ตั้งเงื่อนไขตรวจสอบมีชื่อสินค้าซ้ำหรือไม่ โดยนับจำนวนแถวของข้อมูลชื่อสินค้า mysql_num_rows(ตัวแปรที่แทนค่าการจัดการฐานข้อมูล) นับจำนวนแถวของ Result ที่ได้จากการ Query
//!= 0 คือ จำนวนแถวของ Result ที่ได้ และไม่มีค่าเท่ากับ 0 หรือว่างเปล่าครับ
echo "<script>alert ('ข้อมูลซ้ำ');history.back();</script>"; // ใส่ alert เลยครับ //ชื่อสินค้าซ้ำ กรุณาตรวจสอบใหม่
exit(); //จบกระบวนการทำงาน
}else{ //ถ้าไม่มีชื่อสินค้าซ้ำ ก็ออกไปทำกระบวนการ insert
$insertSQL = sprintf("INSERT INTO product (product_name, cate_id, unit_id, product_balance, product_price, product_qty) VALUES (%s, %s, %s, %s, %s, %s)",//บรรทัดนี้ เป็นการ insert ข้อมูล ที่ส่งมา ลง Table ครับ
GetSQLValueString($_POST['product_name'], "text"),
GetSQLValueString($_POST['cate_id'], "text"),
GetSQLValueString($_POST['unit_id'], "text"),
GetSQLValueString($_POST['product_balance'], "int"),
GetSQLValueString($_POST['product_price'], "double"),
GetSQLValueString($_POST['product_qty'], "int"));
mysql_select_db($database_MyConnect, $MyConnect);
$Result1 = mysql_query($insertSQL, $MyConnect) or die(mysql_error());
$insertGoTo = "product.php"; // insert ข้อมูลแล้วกลับไปหน้า product.php
if (isset($_SERVER['QUERY_STRING'])) {
$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
$insertGoTo .= $_SERVER['QUERY_STRING'];
}
header(sprintf("Location: %s", $insertGoTo));
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>insertproduct</title>
<style type="text/css">
#MenuBar1 {
font-size: 230%;
font-family: "Courier New", Courier, monospace;
}
body p {
font-size: 18px;
text-align: center;
color: #000;
}
body h2 {
text-align: center;
}
</style>
<script src="js/jquery.js" type="text/javascript"></script>
<link href="css/bootstrap.min.css" rel="stylesheet" type="text/css" />
</head>
<body class='container'>
<p><img src="shop.jpg" width="1117" height="149" />
</p>
<h3>ร้านเกสร
</h3>
<p>ระบบจัดการฐานข้อมูลสำหรับร้านค้าปลีก</p>
<div class="btn-group">
<button class="btn"><a href="sales_detail.php">ขายสินค้า</a></button>
</div>
<div class="btn-group">
<button class="btn">ข้อมูลพื้นฐาน</button>
<button class="btn dropdown-toggle" data-toggle="dropdown">
<span class="caret"></span>
</button>
<ul class="dropdown-menu">
<li><a href="Product.php">ข้อมูลสินค้า</a></li>
<li><a href="Category.php">ข้อมูลประเภทสินค้า</a></li>
<li><a href="Supplier.php">ข้อมูลผู้จัดจำหน่าย</a></li>
<!-- dropdown menu links -->
</ul>
</div>
<div class="btn-group">
<button class="btn"><a href="Unit.php">หน่วยสินค้า</a></button>
</div>
<div class="btn-group">
<button class="btn"><a href="repayment">จัดการลูกหนี้</a></button>
</div>
<div class="btn-group">
<button class="btn">เพิ่มเติม</button>
<button class="btn dropdown-toggle" data-toggle="dropdown">
<span class="caret"></span>
</button>
<ul class="dropdown-menu">
<li><a href="customer.php">ข้อมูลลูกหนี้</a></li>
<!-- dropdown menu links -->
</ul>
</div>
<div class="btn-group">
<button class="btn"><a href="edit-profile.php">แก้ไขข้อมูลส่วนตัว</a></button>
</div>
<div class="btn-group">
<button class="btn"><a href="admin/index.php">ออกจากระบบ</a></button>
</div>
<p> </p>
<script language="javascript">
function fncSubmit()
{
if(document.form1.product_name.value == "")
{
alert("กรุณากรอกชื่อสินค้า");
document.form1.product_name.focus();
return false;
}
if(document.getElementById('cate_id').value == "0" )
{
alert('กรุณาเลือกประเภท');
return false;
}
if(document.getElementById('unit_id').value == "0" )
{
alert('กรุณาเลือกหน่วย');
return false;
}
if(document.form1.product_balance.value == "")
{
alert("กรุณากรอกคงเหลือต่ำสุด");
document.form1.product_balance.focus();
return false;
}
if(document.form1.product_price.value == "")
{
alert("กรุณากรอกข้อมูลราคา");
document.form1.product_price.focus();
return false;
}
if(document.form1.product_qty.value == "")
{
alert("กรุณากรอกข้อมูลจำนวนสินค้า");
document.form1.product_qty.focus();
return false;
}
document.form1.submit();
}
</script>
<form action="<?php echo $editFormAction; ?>" method="post" name="form1" id="form1"onSubmit="JavaScript:return fncSubmit();">
<table align="center">
<tr valign="baseline">
<td nowrap="nowrap" align="right"> </td>
<td>เพิ่มสินค้า</td>
</tr>
<tr valign="baseline">
<td nowrap="nowrap" align="right">ชื่อสินค้า:</td>
<td><input type="text" name="product_name" value="" size="32" /></td>
</tr>
<tr valign="baseline">
<td nowrap="nowrap" align="right">ประเภทสินค้า:</td>
<?php
mysql_connect("localhost", "root","0885272244") or die(mysql_error()); //เชื่อมต่อ localhost
mysql_select_db("retail store") or die(mysql_error()); //เลือกฐานข้อมูลที่จะติดต่อ
mysql_query("SET NAMES UTF8"); //Extension By DwThai.Com
$query = "SELECT * FROM `category` ORDER BY `cate_id` ASC LIMIT 0 , 30"; // บรรทัดนี้เป็นการ เลือก ว่าจะต้องการติดต่อกับ Table อะไร และ โดยใช้ ตัวแปรอะไรในการเลือก
$result = mysql_query($query) or die(mysql_error()."[".$query."]"); // บรรทัดนี้เป็นการ เก็บค่า โดยใช้ mysql_query ครับ เพื่อทำการ query คำสั่งที่ เก็บ อยู่ใน $sql
?>
<td><select name="cate_id" id="cate_id">
<option value="0">----เลือกประเภท----</option>
<?php
while ($row = mysql_fetch_array($result)) // ใช้ while ตรวจสอบเงื่อนไข ตัวแปร $row ตรวจสอบว่า $row = mysql_fetch_array($result) หรือ $row เท่ากับค่า ที่ส่งมาจากฐานข้อมููลหรือเปล่า มีการคืนค่าข้อมูลจาก $result ถ้าเป็นจริงให้ แสดงข้อมูลออกมา ถ้าไม่ให้ออกจากลูป แล้วไม่แสเดงข้อมูล
{
echo "<option value=".$row['cate_id'].">".$row['cate_name']."</option>"; // $ตัวแปรใหม่ > $row[ตัวแปรจากฐานข้อมูล];
} //วนลูปตามเงื้อนไข while ออกมาตามจำนวนที่มีข้อมูล เช่น อันที่ 2 ขนมมันมาได้ยังไง <<< มาได้เกิดจากอันแรกจบกระบวนการแล้วไป เริ่มเซ็คที่while ใหม่ว่ามีขอมูลอีกไหมถ้ามีก็ทำในลูป ทำไปเลื่อยๆจนกว่าจะหมด
?>
</select></td>
</tr>
<tr valign="baseline">
<td nowrap="nowrap" align="right">หน่วยสินค้า:</td>
<?php
mysql_connect("localhost", "root","0885272244") or die(mysql_error()); //เชื่อมต่อ localhost
mysql_select_db("retail store") or die(mysql_error()); //เลือกฐานข้อมูลที่จะติดต่อ
mysql_query("SET NAMES UTF8"); //Extension By DwThai.Com
$query = "SELECT * FROM `unit` ORDER BY `unit_id` ASC LIMIT 0 , 30"; // บรรทัดนี้เป็นการ เลือก ว่าจะต้องการติดต่อกับ Table อะไร และ โดยใช้ ตัวแปรอะไรในการเลือก
$result = mysql_query($query) or die(mysql_error()."[".$query."]"); // บรรทัดนี้เป็นการ เก็บค่า โดยใช้ mysql_query ครับ เพื่อทำการ query คำสั่งที่ เก็บ อยู่ใน $sql
?>
<td><select name="unit_id" id="unit_id">
<option value="0">----เลือกหน่วย----</option>
<?php
while ($row = mysql_fetch_array($result))
{
echo "<option value=".$row['unit_id'].">".$row['unit_name']."</option>";
}
?>
</select></td>
</tr>
<tr valign="baseline">
<td nowrap="nowrap" align="right">คงเหลือต่ำสุด:</td>
<td><input type="text" name="product_balance" value="" size="32" /></td>
</tr>
<tr valign="baseline">
<td nowrap="nowrap" align="right">ราคา:</td>
<td><input type="text" name="product_price" value="" size="32" /></td>
</tr>
<tr valign="baseline">
<td nowrap="nowrap" align="right">จำนวนสินค้า:</td>
<td><input type="text" name="product_qty" value="0" size="32" /></td>
</tr>
<tr valign="baseline">
<td nowrap="nowrap" align="right"> </td>
<td><input name="btn" type="submit" id="btn" value="ตกลง" />
<input type="reset" name="btn2" id="btn2" value="ยกเลิก" /></td>
</tr>
</table>
<input type="hidden" name="MM_insert" value="form1" />
</form>
<p> </p>
<script type="text/javascript">
function thaidecode(str) {
return decodeURIConponent((str+'').replace(/\+/g, '%20'));}
</script>
<script src="js/jquery.js"></script>
<script src="js/bootstrap.min.js"></script>
</body>
</html>
Tag : PHP, MySQL, HTML/CSS, JavaScript, jQuery, CakePHP
|
ประวัติการแก้ไข 2016-08-09 17:34:00
|
|
|
|
|
Date :
2016-08-09 16:41:59 |
By :
suwidha |
View :
2397 |
Reply :
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 02
|