mcmane nak generate nombor fail?
6 replies [Last post]
does not have a status.
User offline. Last seen 9 weeks 3 days ago. Offline
Joined: 09/02/2009
Points: 5

salam..ada sesiapa tak leh tlg saya cmane nak generate no.fail utk di insert dalam database?
contoh no.fail : ABC/2009/001
ABC-->nama fail yang dah di set siap2
2009-->tahun semasa
001-->bilangan fail yang masuk

saya nak buat camni,
auto generate bil.fail yang masuk tu sehingga 3 digit shj(cth:999)
auto generate juga tahun mengikut tahun semasa

contohnya mcm ni:
bilangan yang pertama masuk (ABC/2009/001)
bilangan yang kedua (ABC/2009/002)dan seterusnya....

bila masuk tahun berikutnya dia automatik jadi (ABC/2010/001) dan seterusnya...

so ada sesiapa x yg ada codingnya atau sql statement nya?

always blur
User offline. Last seen 40 weeks 12 hours ago. Offline
Joined: 08/16/2009
Points: 2

Bro cuba pahamkan dulu ......... Party

$sql_no = "SELECT COUNT(no_auto) AS no FROM test";
$r = mysql_query($sql_no);

if(mysql_result($r,"nob")!=0){

$sql_check = "SELECT * FROM test ORDER BY no_auto DESC";
$result_check = mysql_query($sql_check);

$rows = mysql_fetch_assoc($result_check);
$month = date("F");
$year = date("Y");
if($month == "January"){
$mm = "01";
}elseif($month== "February"){
$mm = "02";
}elseif($month== "March"){
$mm = "03";
}elseif($month== "April"){
$mm = "04";
}elseif($month== "May"){
$mm = "05";
}elseif($month=="June"){
$mm = "06";
}elseif($month=="July"){
$mm = "07";
}elseif($month=="August"){
$mm = "08";
}elseif($month=="September"){
$mm = "09";
}elseif($month=="October"){
$mm = "10";
}elseif($month=="November"){
$mm = "11";
}elseif($month=="December"){
$mm = "12";
}
$no_bau = $rows['no_auto'];
$exp_baucar = explode("/",$no_bau);

$baucar = $exp_baucar[0];

$cal_baucar  = 1 + $baucar;
$change = $cal_baucar;
$no_baucar = "".$change."/".$mm."/".$year."";

}else{

$month = date("F");
$year = date("Y");
if($month == "January"){
$mm = "01";
}elseif($month== "February"){
$mm = "02";
}elseif($month== "March"){
$mm = "03";
}elseif($month== "April"){
$mm = "04";
}elseif($month== "May"){
$mm = "05";
}elseif($month=="June"){
$mm = "06";
}elseif($month=="July"){
$mm = "07";
}elseif($month=="August"){
$mm = "08";
}elseif($month=="September"){
$mm = "09";
}elseif($month=="October"){
$mm = "10";
}elseif($month=="November"){
$mm = "11";
}elseif($month=="December"){
$mm = "12";
}

$no_baucar = "1/".$mm."/".$year."";
}




so kalau nak papar kan balik

<? echo $no_baucar; ?>

ini status
mdpai's picture
User offline. Last seen 20 weeks 2 days ago. Offline
Moderator
Joined: 08/16/2009
Points: 68

uih byk betul if else nye, kalau dah byk mcm tu, pakai la switch
contoh

<?php
if($a == 'xxx')
 
$b = 10;
else if(
$a == 'yyy')
 
$b = 20;
else if(
$a =='zzz')
 
$b = 30;
?>

boleh dipendekkan jadi

<?php
switch($a){
  case
'xxx' : $b = 10; break;
  case
'yyy' : $b = 20; break;
  case
'zzz' : $b = 30; break;
}
?>

berkenaan dengan soalan, maybe first step boleh buat query untuk tau last inserted file, so dari situ contoh kita dapat ABC/2009/023 yg kita simpan dalam $last_inserted

<?php
$chunks
= explode('/', $last_inserted);
/* so $chunks jadi satu array mcm ni
$chunks[0] => ABC
$chunks[1] => 2009
$chunks[2] => 023
*/
?>

so dari situ buat la apa² yang patut dengan $chunks[2] tu, tambah satu ka, pastu godek² sket ka jadi betul...
kalau dah abis godek, cantum balik 3 variable tu pakai function implode

Maggiku sudah kembang
User offline. Last seen 1 day 19 hours ago. Offline
Joined: 03/03/2003
Points: 31

<?php
//sumber: Sumardi - php.com.my
function formatZero($no, $n) {
  return
str_pad((int) $no, $n, "0", STR_PAD_LEFT);
}

$bil = formatZero(1,3);
echo
$bil;

echo
"<br>";

$tahun = date('Y');
echo
$tahun;

echo
"<br>";

echo
"ABC/" . $tahun . "/" . $bil; // echo "ABC/" . date('Y') . "/" . formatZero(1,3)
?>
web gis developer
ajoden2's picture
User offline. Last seen 9 weeks 1 day ago. Offline
Pro
Joined: 08/16/2009
Points: 21

bushak wrote:
<?php
//sumber: Sumardi - php.com.my
function formatZero($no, $n) {
  return
str_pad((int) $no, $n, "0", STR_PAD_LEFT);
}

$bil = formatZero(1,3);
echo
$bil;

echo
"<br>";

$tahun = date('Y');
echo
$tahun;

echo
"<br>";

echo
"ABC/" . $tahun . "/" . $bil; // echo "ABC/" . date('Y') . "/" . formatZero(1,3)
?>

formatZero dia x read dri database kan so camne nak tahu last no file yg diinsertkan. kena tambah perisa lagi code nie kan baru dia jadi..almost there.

Internet Marketeer
thephenom's picture
User offline. Last seen 1 week 3 days ago. Offline
Joined: 08/16/2009
Points: 121

Mmg kurang perisa kerana thread starter harus menambahkan sendiri perisa tersebut... takkan nak terus makan je Wink

Salah satu cara yang paling mudah (mungkin tak beratkan database), adalah no fail tersebut di simpan di field yang berasingan. Bukan selepuk ABC/2009/001 masuk dalam satu field.... 2009 satu field (tahun), 001 (atau 1) dalam field yang lain(bilfail).

So, kalau nak tahu no terakhir... COUNT tahun tertentu (WHERE tahun=2009).... dapatlah rekod yang terakhir..

does not have a status.
skoda's picture
User offline. Last seen 37 weeks 14 hours ago. Offline
Joined: 09/11/2009
Points: 14

formatZero(1,3) tu 1 dan 3 tu grab dari database cuma bushak buat sampel counter jer tu. actual no file memang grab dari database.