Yii Framework Forum: Bagaimana Cara Membuat Automatic Value In Yii? - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Bagaimana Cara Membuat Automatic Value In Yii? Rate Topic: -----

#1 User is offline   garry 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 27
  • Joined: 10-January 10

Posted 09 January 2013 - 12:47 AM

Halo master semua,

Ada yang ingin saya tanyakan tentang generate automatic value di yii

dasar pemograman saya ambil dari ini http://sabitlabscode...ue-ke-database/

dengan perubahan aplikasi seperti ini

protected function beforeValidate()
        {
            parent::beforeValidate();
            $date = new DateTime();
            if($this->isNewRecord)
            {
                $criteria=new CDbCriteria;      
                $criteria->select = 'nota';     
                $criteria->limit=1;             
                $criteria->order='nota DESC';   
                $last = $this->find($criteria);
                if($last)    
                {
                    $newID = (int)substr($last->nota,4) + 1 ;
                    $newID = 'INV-' .$newID;
                }
               else    
                {
                    $newID = 'INV-1';
                }
                $this->nota=$newID;     
           }
           return TRUE;
      }


Kodenya jalan tetapi hanya sampai INV-10, begitu melakukan INV-11 seterusnya sudah tidak bisa.
Saya mencoba modifikai kode seperti ini

protected function beforeValidate()
        {
            parent::beforeValidate();
            $date = new DateTime();
            if($this->isNewRecord)
            {
                $criteria=new CDbCriteria;      
                $criteria->select = 'nota';     
                $criteria->limit=1;             
                $criteria->order='nota DESC';   
                $last = $this->find($criteria);
                if($last)    
                {
                    $newID = (int)substr($last->nota,4) + 1 ;
                    $newID = 'INV-' .$newID;
                }
                elseif($last)
                {
                    $newID = (int)substr($last->nota,5) + 1 ;
                    $newID = 'INV-'."".$newID;
                }
                else   
                {
                    $newID = 'INV-1';
                }
                $this->nota=$newID;     // nilai1 di set nilai yang sudah di dapat tadi
           }
           return TRUE;
      }


Hasilnya tidak bisa, apakah benar modifikasinya? atau ada cara lain?

sekiranya hal ini sudah di bahas, tolong tunjukin linknya, soalnya sudah ngubek google dan forum, hasilnya tidak ada.

thanks ya atas perhatiannya
0

#2 User is offline   masapri 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 9
  • Joined: 21-July 12

Posted 06 March 2013 - 04:50 AM

Logika dibawah ini maksudnya gimana gan?

if($last)
{
$newID = (int)substr($last->nota,4) + 1 ;
$newID = 'INV-' .$newID;
}
elseif($last)
{
$newID = (int)substr($last->nota,5) + 1 ;
$newID = 'INV-'."".$newID;
}
else
{
$newID = 'INV-1';
}
$this->nota=$newID;
0

#3 User is offline   santhika 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 10
  • Joined: 04-March 13

Posted 15 March 2013 - 12:48 AM

if($last)    
{
  $newID = (int)substr($last->nota,4) + 1 ;
  $newID = 'INV-' .$newID;
}
else    
{
  $newID = 'INV-1';
}


klo dari algoritma nya memang perlu sedikit penyesuaian untuk nilai yang lebih dari 10 gan. gimana klo kode nya saya jadi kan seperti ini
if($last)    
{
  $newID = (int)substr($last->nota,4,strlen($last->nota)) + 1 ; //baris ini yang diubah gan
  $newID = 'INV-' .$newID;
}
else    
{
  $newID = 'INV-1';
}

0

#4 User is offline   han2 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 45
  • Joined: 12-November 12

Posted 06 December 2013 - 02:05 AM

View Postsanthika, on 15 March 2013 - 12:48 AM, said:

if($last)    
{
  $newID = (int)substr($last->nota,4) + 1 ;
  $newID = 'INV-' .$newID;
}
else    
{
  $newID = 'INV-1';
}


klo dari algoritma nya memang perlu sedikit penyesuaian untuk nilai yang lebih dari 10 gan. gimana klo kode nya saya jadi kan seperti ini
if($last)    
{
  $newID = (int)substr($last->nota,4,strlen($last->nota)) + 1 ; //baris ini yang diubah gan
  $newID = 'INV-' .$newID;
}
else    
{
  $newID = 'INV-1';
}



sama kasusnya sama ane..pake yang ini juga belum ngaruh nih gan :unsure:
0

#5 User is offline   daudtm 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 85
  • Joined: 25-April 13
  • Location:Malang

Posted 06 December 2013 - 05:28 AM

wah, kalo ini mah kudu ngedebug, kalo diselect manual udah bener nggak hasilnya? invoice tertinggi ada di atas?
SELECT nota FROM nama_table ORDER BY nota DESC LIMIT 1


kalo di test ane hasilnya begini:
 huruf  
--------
 inv-9
 inv-8
 inv-5
 inv-3
 inv-2
 inv-11
 inv-10
 inv-1


jadi kodenya sih udah bener, cuma order campuran karakter ama angka sortingnya ngikutin karakter, bukan angkanya.
ada beberapa cara ngakalinnya,
1. kalo gak mo ngerubah nomor invoice, dengan asumsi punya field id (autoincrement) dan data terakhir pasti yg paling besar nomornya, order bynya ganti aja ama id DESC
2. kalo mo ngerubah nomor invoice, mungkin lebih aman pake format INV-9999, contoh INV-0001, INV-0002, dst
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users