|
|
|
อยากทราบว่า เลือกหมวดจาก dropdown แล้วให้รันเลขเป็นปี เดือน แล้วตามด้วย 0001 |
|
|
|
|
|
|
|
PHP ธรรมดาก็สามารถ ทำได้เเล้วครับ
Code (PHP)
<form name="form" action="" method="post">
<select name="group" Onchange="this.form.submit();">
.
.
.
</select>
<!-- จากนั้น ให้เราทำการ SELECT โดยน่าค่า POST ของ group มา เพื่อ เช็คกับฐานข้อมูล ว่า ACC ตอนนี้ รันถึงเลขอะไรแล้ว โดยให้ WHERE เช็ค ว่า ACC ปีนี้ เดือนนี้ รันถึงเลขอะไรเเล้ว-->
<?php
$sql = "SELECT * FROM ..... WHERE .... ORDER BY groupID DESC Limit 0,1";
.
.
//จากนั้น ก็ เอาค่าล่าสุดมาบวก 1 เช่น จาก ACC5707003 --> ACC5707004
//สร้างตัวแปร มาเก็บค่า 1 ตัว เช่น $LastNo = "ACC5707004";
?>
<!-- เมื่อได้ค่าล่าสุดมาเเล้ว ให้ นำค่า มาใส่ใน input-->
<input type="text" name="No" value=<?=$LastNo?>>
</form>
|
ประวัติการแก้ไข 2014-07-16 20:10:37
|
|
|
|
Date :
2014-07-16 20:08:34 |
By :
FreshyMusiC |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
แสดงว่า ACC5707001, จะรันนัมเบอร์เริ่มจาก 001 ในเดือน 07 ปี 57 พอขึ้นเดือน 08 ก็จะนับ 001 ใหม่ แบบนี้หรือเปล่าค่ะ
และถ้าได้ ACC5707001 จะนำไปเก็บที่ฟิวด์ไหนในเทเบิ้ล customer ค่ะ
|
|
|
|
|
Date :
2014-07-16 21:16:23 |
By :
survivor |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
แล้วในตาราง customer ฟิวด์ code เป็นตัวเก็บ ACC หรือ ADM หรือเปล่าค่ะ
ขอดูตัวอย่างข้อมูลในตาราง customer ด้วยซิค่ะ
|
ประวัติการแก้ไข 2014-07-16 21:49:51
|
|
|
|
Date :
2014-07-16 21:43:58 |
By :
survivor |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ถ้าอย่างนั้นทดลองตามนี้น่ะค่ะ
<?php
$link = mysql_connect("localhost","root","root") or die(mysql_error());
mysql_select_db("mydatabase",$link) or die(mysql_error());
?>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">
$(document).ready(function() {
// จะไม่ใช้ onchange น่ะค่ะ เพราะถ้าไม่มีการเลือกในลักษณะเปลี่ยนค่าไปเลือกค่าอื่นที่ไม่ใช่ค่าเดิม
// โค้ดชุดนี้จะไม่ส่งคำสั่งไปดึงข้อมูลจากเดต้าเบสเลย...
$("#lmName1").click(function(){
var selectedCode = $(this).val();
if(selectedCode.length > 0){
$.post("get_latest_id.php",{code:selectedCode},function(newcode){
$("#txtName").val(selectedCode+newcode);
});
}
});
});
</script>
<body>
<form action="page.php" method="post" name="frmMain">
List Menu
<select name="lmName1" id="lmName1" >
<option value=""><-- Please Select Item --></option>
<?
$strSQL = "SELECT * FROM customer ORDER BY CustomerID ASC";
$objQuery = mysql_query($strSQL);
while($objResult = mysql_fetch_array($objQuery))
{
?>
<option value="<?=$objResult["code"];?>"><?=$objResult["code"];?></option>
<?
}
?>
</select>
<input name="txtName" id="txtName" type="text" value="">
</form>
<?
mysql_close();
?>
ไฟล์ get_latest_id.php
<?php
$link = mysql_connect("localhost","root","root") or die(mysql_error());
mysql_select_db("mydatabase",$link) or die(mysql_error());
if(isset($_POST["code"])){
$sql = "select count(*) from customer where code='{$_POST["code"]}' ";
$res = mysql_query($sql) or die(mysql_error());
list($latestnum) = mysql_fetch_row($res);
++$latestnum;
echo (date("Y")+43-2000).date("m").$latestnum;
}
?>
ทดลองดูน่ะค่ะ
|
|
|
|
|
Date :
2014-07-16 22:16:29 |
By :
survivor |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
จากตัวอยาง ควรออกแบบ table ใหม่ครับ
แยกฟีลด์ run number กับ Group ID แยกจากกัน
สำหรับ ฟีลด์ run number ก็ให้เป็น fillzero จะได้เป็น 0001 ไม่แสดงแค่ 1
|
|
|
|
|
Date :
2014-07-17 06:01:18 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ใช่ค่ะปรับแก้ไฟล์ get_latest_id.php นิดหน่อย
<?php
$link = mysql_connect("localhost","root","root") or die(mysql_error());
mysql_select_db("mydatabase",$link) or die(mysql_error());
if(isset($_POST["code"])){
$sql = "select count(*) from customer where code='{$_POST["code"]}' ";
$res = mysql_query($sql) or die(mysql_error());
list($latestnum) = mysql_fetch_row($res);
++$latestnum;
echo (date("Y")+43-2000).str_pad(date("m"),2,'0',STR_PAD_LEFT).str_pad($latestnum,4,'0',STR_PAD_LEFT);
}
?>
|
|
|
|
|
Date :
2014-07-17 11:41:27 |
By :
survivor |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
คำว่าไม่แนะนำไม่ได้ห้ามใช้นะครับ มันขึ้นอยู่กับความต้องการและความจำเป็นครับ
แต่ทั้งนี้ทั้งนั้น เราสามารถใช้ primary Auto increment ในการตรวจสอบ record สูญหายไปได้ครับ
เมื่อเราลบจาก table หลัก ก็ควรจะนำไปเพิ่มใน table ที่เป็นแบ็คอัพ ซึ่งมีไว้สำหรับการตรวจสอบ
และสามารถลบทิ้งได้เมื่อถึงเวลาที่กำหนดครับ
|
|
|
|
|
Date :
2014-07-17 12:35:13 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
หนูทำเหมือนมาร์กเกอร์ค่ะ บิลใบไหนมีปัญหาก็จัดการ void ซะ
ไม่ได้ย้ายบิลออกจากกล่อง ขี้เกียจจัดการหลายเทเบิ้ลค่ะ
อีกอย่างคือเก็บบิลย้อนหลังไว้แค่ 6 เดือน ส่วนที่ตัดทอนออกไปจะถูกย้ายไปอยู่อีกเดต้าเบสนึง
สำหรับเลขรันนิ่งนัมเบอร์จะรันเฉพาะในเดือนนั้นๆ เลยทำให้ไม่มีปัญหาจากการใช้ count(*)
|
|
|
|
|
Date :
2014-07-17 13:03:45 |
By :
survivor |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 04
|