Go Back   Webmaster Malaysia Forum » Website Design & Development » Website Programming

Reply
 
LinkBack Thread Tools Search this Thread Rate Thread Display Modes
  #1 (permalink)  
Old 07-10-2002, 06:25 PM
Senior Webmaster
 
Join Date: Oct 2001
Location: Kuala Lumpur, Malaysia
Posts: 294
Rep Power: 93
kidino is on a distinguished road
Send a message via Yahoo to kidino
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.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
Reply



Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On

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.


WebmasterMalaysia.com is Proudly Hosted by Exabytes Semi Dedicated Server.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61