|
|||
OOP dan Database
Ni saje nak share satu kaedah yang best gak. Ianya adalah di mana kita combinekan OOP dengan keperluan pengkalan data. Nak merepek memanjangkan ... ada yang tension dan tak paham. Trylah tengok simple kod ni ... ni adalah contoh jea. Just to deliver the idea on OOP dan database. Please comment.
Code:
#!/usr/bin/perl
########################################################
# #
# objek adalah untuk pengkalan data seperti berikut #
# #
# table : pelajar #
# +--------------+--------------+ #
# | pelajar_id | int | #
# +--------------+--------------+ #
# | tarikh_lahir | datetime | #
# +--------------+--------------+ #
# | jantina | varchar(10) | #
# +--------------+--------------+ #
# | nama | varchar(100) | #
# +--------------+--------------+ #
# #
# objek pelajar #
# ============= #
# variable #
# -------- #
# pelajar_id #
# tarikh_lahir #
# jantina #
# nama #
# #
# method #
# -------- #
# new() #
# next_id() #
# get_pelajar() #
# save() #
# get_all() #
# set_var() #
# #
# contoh penggunaan #
# ================= #
# #
# use pelajar; #
# #
# $pelajar = pelajar->new(); #
# #
# $pelajar->set_var( #
# nama => "Khairil Iszuddin Ismail", #
# jantina => "lelaki", #
# tarikh_lahir => "1979-05-30"); #
# #
# $pelajar->save(); #
# #
# print $pelajar->pelajar_id; #
# #
########################################################
use DBI;
package Pelajar;
$dbh = DBI->connect('dbi:mysql:database_name', 'username', 'password');
#----------------------------#
# membina satu objek pelajar #
#----------------------------#
sub new
{
my $class = shift;
my (%params) = @_;
my $self = {};
bless $self, $class;
$self->set_var(
pelajar_id => '',
nama => '',
jantina => '',
tarikh_lahir => ''
);
if(defined $params{pelajar_id})
{
$self->set_var(pelajar_id => $params{pelajar_id});
$self->get_pelajar();
}
return $self;
}
#----------------------------------------------------#
# mendapatkan pelajar_id berikutnya untuk rekod baru #
#----------------------------------------------------#
sub next_id
{
my $self = shift;
$sql = "SELECT pelajar_id FROM pelajar ORDER BY pelajar_id LIMIT 1";
$sth = $dbh->prepare($sql);
$sth->execute();
my ($id) = $sth->fetchrow_array();
$id++;
$sth->finish();
return $id;
}
#------------------------------------------#
# simpan data pelajar dalam pengkalan data #
#------------------------------------------#
sub save
{
my $self = shift;
my (%params) = @_;
$b = $self->nama;
$c = $self->jantina;
$d = $self->tarikh_lahir;
if($self->pelajar_id eq '')
{
$self->set_var(pelajar_id => $self->next_id());
$a = $self->pelajar_id;
$sql = "INSERT INTO pelajar (pelajar_id, nama, jantina, tarikh_lahir) ";
$sql .= "VALUES ($a, '$b', '$c', '$d') ";
}
else
{
$a = $self->pelajar_id;
$sql = "UPDATE pelajar SET nama='$b', jantina='$c', tarikh_lahir='$d' ";
$sql .= "WHERE pelajar_id = $a";
}
$sth = $dbh->prepare($sql);
$result = $sth->execute();
return($result);
}
#------------------------------------#
# memulangkan semua data dalam rekod #
#------------------------------------#
sub get_all
{
my $self = shift;
my @pelajar2 = ();
$sql = "SELECT pelajar_id, nama, tarikh_lahir, jantina ";
$sql .= "FROM pelajar";
$sth = $dbh->prepare($sql);
$sth->execute();
if($sth->rows() > 0)
{
while(($pelajar_id,$nama,$tarikh_lahir,$jantina) = $sth->fetchrow_array())
{
$temp = $self->new();
$temp->set_var(
pelajar_id => $pelajar_id,
nama => $nama,
tarikh_lahir => $tarikh_lahir,
jantina => $jantina
);
push(@pelajar2, $temp);
}
}
return(@pelajar2);
}
#--------------------------------#
# memulangkan satu rekod pelajar #
#--------------------------------#
sub get_pelajar
{
my $self = shift;
my $sql, $sth;
if($self->pelajar_id ne '')
{
$id = $self->pelajar_id;
$sql = "SELECT pelajar_id, nama, tarikh_lahir, jantina ";
$sql .= "FROM pelajar ";
$sql .= "WHERE pelajar_id = $id LIMIT 1";
$sth = $dbh->prepare($sql);
$sth->execute();
if($sth->rows() > 0)
{
($pelajar_id,$nama,$tarikh_lahir,$jantina) = $sth->fetchrow_array();
$self->set_var(
pelajar_id => $pelajar_id,
nama => $nama,
tarikh_lahir => $tarikh_lahir,
jantina => $jantina
);
$result = TRUE;
}
else
{
$self->set_var(pelajar_id => '');
$result = FALSE;
}
}
else
{ $result = FALSE; }
return($result);
}
#------------------------------#
# memulangkan nilai pelajar_id #
#------------------------------#
sub pelajar_id
{ my $self = shift; return $self->{pelajar_id}; }
#------------------------#
# memulangkan nilai nama #
#------------------------#
sub nama
{ my $self = shift; return $self->{nama}; }
#--------------------------------#
# memulangkan nilai tarikh_lahir #
#--------------------------------#
sub tarikh_lahir
{ my $self = shift; return $self->{tarikh_lahir}; }
#---------------------------#
# memulangkan nilai jantina #
#---------------------------#
sub jantina
{ my $self = shift; return $self->{jantina}; }
#----------------------------------------#
# membuat umpukan nilai kepada variables #
#----------------------------------------#
sub set_var
{
my $self = shift;
my (%params) = @_;
if(defined($params{nama}))
{ $self->{nama} = $params{nama}; }
if(defined($params{pelajar_id}))
{ $self->{pelajar_id} = $params{pelajar_id}; }
if(defined($params{jantina}))
{ $self->{jantina} = $params{jantina}; }
if(defined($params{tarikh_lahir}))
{ $self->{tarikh_lahir} = $params{tarikh_lahir}; }
}
__________________
-------------------------------------------- Khairil Iszuddin Ismail Last edited by kidino; 07-10-2002 at 06:31 PM. |
![]() |
«
Previous Thread
|
Next Thread
»
| Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
| Thread Tools | Search this Thread |
| Display Modes | Rate This Thread |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| universe database | bayam04 | Website Programming | 2 | 06-11-2004 12:30 AM |
| ASP Database Access | alvinhan | Website Programming | 4 | 11-12-2003 01:31 PM |
| database in website..!! | lanxc_7 | Webmaster Tools | 8 | 18-08-2003 12:05 AM |
| ASP Access Database | alvinhan | Website Programming | 1 | 25-11-2002 10:01 AM |
| php and sybase database | kasih | Website Programming | 0 | 11-10-2002 03:39 PM |
All times are GMT +8. The time now is 11:17 AM.
Powered by vBulletin® Version 3.7.3
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO 3.1.0 vBulletin skin by ForumMonkeys.com.
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO 3.1.0 vBulletin skin by ForumMonkeys.com.










Linear Mode

