PHP Auto Generate Number ติดปัญหาอยู่ครับ รบกวนผู้รู้ด้วยครับ
ตอบความคิดเห็นที่ : 1 เขียนโดย : NewbiePHP เมื่อวันที่ 2015-11-12 14:37:57
รายละเอียดของการตอบ ::
ต้องเอา code จากลิงก์ไปใส่ตรงไหนหรอครับ งง
อันนี้คือ code จากเว็บตัวอย่างเอามาปรับอ่ะครับ
ขอบคุณครับท่าน
Code (PHP)
<?php
if(isset($_POST['submits'])){
//*** พ.ศ. ***//
function thai_year($time){
$thai_date_return.=(date("Y",$time)+543);
return $thai_date_return;
}
//*** Connect to Database **//
require dirname('connect.php') . '/connections/connect.php';
$strNextSeq = "";
//*** Check Year ***//
$strSQL = "SELECT * FROM gsfs WHERE 1 ";
$objQuery = mysqli_query($con,$strSQL) or die ("Error Query [".$strSQL."]");
$objResult = mysqli_fetch_array($objQuery);
//*** Check val = year now ***//
if($objResult["val"] == thai_year(time()))
{
$Seq = substr("0000".$objResult["seq"],-4,4); //*** Replace Zero Fill ***//
$strNextSeq = $objResult["val"]."-".$Seq;
//*** Update Next Seq ***//
$strSQL = "UPDATE gsfs SET seq= seq+1 ";
$objQuery = mysqli_query($con,$strSQL) or die ("Error Query [".$strSQL."]");
$insert_data = "insert into test(test)
VALUES ('".$strNextSeq."')";
mysqli_query($con,$insert_data);
}
else //*** Check val != year now ***//
{
$Seq = substr("00001",-4,4); //*** Replace Zero Fill ***//
$strNextSeq = thai_year(time())."-".$Seq;
//*** Update New Seq ***//
$strSQL = "UPDATE gsfs SET val = '".thai_year(time())."' , seq = '1' ";
$objQuery = mysqli_query($con,$strSQL) or die ("Error Query [".$strSQL."]");
$insert_data = "insert into test(test)
VALUES ('".$strNextSeq."')";
mysqli_query($con,$insert_data);
}
mysqli_close($con);
}
?>
ประวัติการแก้ไข 2015-11-12 14:45:34 2015-11-12 15:02:27
Date :
2015-11-12 14:44:28
By :
zadstoms
อันนี้เป็นส่วน สำหรับ insert
Code (SQL)
insert into test
SELECT
null,
CONCAT(y,'-', SUBSTR( idx+10000,2)),
'$refer_id', '$year_thai', '$date_thai','$note1', '$note2'
FROM (
SELECT LEFT(gsf_de_num, 4) y, RIGHT(gsf_de_num,4)+1 idx FROM test order by gsf_de_num desc limit 1
union all SELECT YEAR(NOW()), 1
) n order by y desc limit 1
วิธีการต่างกันน่ะครับ ผมเอา บทความนั้นมาประยุกต์นิดหน่อย
อันนี้ไม่ต้อง มีตารางเก็บ ปี seq รันต่อไปเรื่อยๆ
หรือจะทำให้มี ตารางเก็บ last_id ก็ได้ครับ ป้องกัน การใช้ id เก่า
ประยุกต์เอาเองนะครับ
Date :
2015-11-12 15:43:23
By :
NewbiePHP
ครับเป็นคำสั่้ง sql เฉย หาคำสั่ง insert ให้เจอว่าอยู่ที่ไหน
แล้วเอาโค๊ดของผมไปประยุกต์ใช้ครับ จะได้ไม่ต้อง ไปยุ่งกับ ตาราง prefix
ถ้าไม่ซีเรียสกับการลบ id สุดท้ายแล้ว ต้องใช้ id เก่าอีก
Date :
2015-11-12 16:02:05
By :
NewbiePHP
insert แค่ field เดียว นี่เหรอครับ เป็นตารางมีตั้งหลายฟีลด์ แล้ว insert ยังไงครับเนี่ย ถึงได้ออกมาเยอะขนาดนั้น
Date :
2015-11-12 17:32:21
By :
NewbiePHP
select ค่ามาแล้วไป update db แล้วเอามา insert อีกทีหรอคับ
code ของท่าน NewbieXYZ น่าจะเอาไปทับแทน code
select > update > insert ทั้งหมดนั่นแหละคับ
เอาไปใช้แทนเลย
แต่ต้องเขียน ส่วนของ update อีกทีมั้งคับ
Date :
2015-11-13 10:04:24
By :
progamer2000
ก็เอาโค๊ดที่ทำไว้ มาให้ดูสิครับ จะได้แนะนำต่อได้
ผมไม่ค่อยชอบทำให้ แต่ชอบช่วยแก้ไขโค๊ดให้ครับ
อย่างน้อยเห็นโค๊ดพอจะมีไอเดียเพิ่มเติมให้ได้
ไม่เห็นโค๊ดนี้สมองคิดไม่ออก เพราะงานตัวเองนี่ก็คิดจนหัวบวมไปแล้ว
มาคิดให้คนอื่นเพิ่มอีกนี่จากบวมมันจะแฟปไปเลยเพราะไม่ได้ตัง 5555
Date :
2015-11-13 10:43:42
By :
NewbiePHP
ตอบความคิดเห็นที่ : 10 เขียนโดย : NewbiePHP เมื่อวันที่ 2015-11-13 10:43:42
รายละเอียดของการตอบ ::
ประมาณนี้ครับ เอาจากตัวอย่างมาปรับเทสครับ
Code (PHP)
<html>
<head>
<title>ThaiCreate.Com Tutorial</title>
</head>
<body>
<?
//*** พ.ศ. ***//
function thai_year($time){
$thai_date_return.=(date("Y",$time)+543);
return $thai_date_return;
}
//*** Connect to Database **//
require dirname('connect.php') . '/connections/connect.php';
$strNextSeq = "";
//*** Check Year ***//
$strSQL = "SELECT * FROM gsfs WHERE 1 ";
$objQuery = mysqli_query($con,$strSQL) or die ("Error Query [".$strSQL."]");
$objResult = mysqli_fetch_array($objQuery);
//*** Check val = year now ***//
if($objResult["val"] == thai_year(time()))
{
$Seq = substr("0000".$objResult["seq"],-4,4); //*** Replace Zero Fill ***//
$strNextSeq = $objResult["val"]."-".$Seq;
//*** Update Next Seq ***//
$strSQL = "UPDATE gsfs SET seq= seq+1 ";
$objQuery = mysqli_query($con,$strSQL) or die ("Error Query [".$strSQL."]");
$insert_data = "insert into test(test)
VALUES ('".$strNextSeq."')";
mysqli_query($con,$insert_data);
}
else //*** Check val != year now ***//
{
$Seq = substr("00001",-4,4); //*** Replace Zero Fill ***//
$strNextSeq = thai_year(time())."-".$Seq;
//*** Update New Seq ***//
$strSQL = "UPDATE gsfs SET val = '".thai_year(time())."' , seq = '1' ";
$objQuery = mysqli_query($con,$strSQL) or die ("Error Query [".$strSQL."]");
$insert_data = "insert into test(test)
VALUES ('".$strNextSeq."')";
mysqli_query($con,$insert_data);
}
echo $strNextSeq;
mysqli_close($con);
?>
</body>
</html>
Date :
2015-11-13 11:52:25
By :
zadstoms
Load balance : Server 04