Artykuły
Ilość wyświetleń: 1122 « powrót
package Produkt;
sub new
{
my $self = {};
$self->10 = 0;
$self->{kod} = "";
$self->{nazwa} = "";
$self->{cena} = 0.0;
bless ($self);
return $self;
}
return 1;
package Database;
# zmienna przechowujaca uchwyt do polaczenia
my $connection;
my $dbName;
my $dbUser;
my $dbPass;
my $dbHost;
my $dbPort;
sub new
{
my $class = shift;
my $self = {};
$dbName = shift;
$dbUser = shift;
$dbPass = shift;
$dbHost = shift;
$dbPort = shift;
if (!$dbPort)
{
$dbPort = 3306;
}
if (!$dbHost)
{
$dbHost = "localhost";
}
bless ($self, $class);
return $self;
}
# polaczenie z baza danych
#----------------------------------------------------------
sub Connect
{
my $self = shift;
$connection = DBI->connect("DBI:mysql:$dbName:$dbHost:$dbPort",
$dbUser, $dbPass)
|| return undef;
return $connection;
}
# utworzenie obiektu polaczenia z baza
my $db = new Database("test_oop", "user", "pass", "host", "port");
my $conn = $db->Connect();
# utworzenie obiektu produkt
my $produkt = new Produkt();
# i ustawienie dla niego atrybutow
$produkt->10 = 0;
$produkt->{kod} = "0001";
$produkt->{nazwa} = "nasz produkt";
$produkt->{cena} = 10.50;
# utworzeni obiektu dostepu do tabeli produkt
my $dbProdukt = new DbProdukt($conn);
# dodanie takich samych kilku wierszy
$dbProdukt->Insert($produkt); # nadane id = 1
$dbProdukt->Insert($produkt); # nadane id = 2
$dbProdukt->Insert($produkt); # nadane id = 3
$dbProdukt->Insert($produkt); # nadane id = 4
# aktualizacji ostatnio dodanego wiersza
$produkt->10 = 4;
$produkt->{kod} = "0004";
$produkt->{nazwa} = "zaktualizowana nazwa";
$produkt->{cena} = 12.30;
$dbProdukt->Update($produkt)
# usuniecia wiersza o id = 2 $produkt->10 = 2; $dbProdukt->Delete($produkt)
$rs = $conn->execute("SELECT * FROM produkt");
while ($row = $rs->fetchrow_hashref)
{
$produkt->10 = $row->10;
$produkt->{kod} = $row->{kod};
$produkt->{nazwa} = $row->{nazwa};
$produkt->{cena} = $row->{cena};
}
$dbProdukt->CreateQuery();
while ($produkt = $dbProdukt->GetRow())
{
print $produkt->{nazwa} . "\n";
}
# zapytanie SQL: SELECT * FROM produkt WHERE id > 1 ORDER BY nazwa
$dbProdukt->CreateQuery("id > 1", "nazwa");
# gdy GetRow() zwróci undef to znak, że odczytano wszystkie wiersze
while ($produkt = $dbProdukt->GetRow())
{
print $produkt->{nazwa} . "\n";
}
use DBI;
use Cgi;
use Database;
use Produkt;
use HtmlProdukt;
$cgi = new Cgi();
my $db = new Database("test_oop", "root", "");
my $conn = $db->Connect();
$html = new HtmlProdukt($conn, $cgi);
$html->Head();
$html->PriceList();
$html->Foot();
exit;
package HtmlProdukt;
my $connDb;
my $queryCgi;
sub new
{
my $class = shift;
my $self = {};
$connDb = shift;
$queryCgi = shift;
bless ($self, $class);
return $self;
}
sub PriceList
{
$self = shift;
my $produkt = new Produkt();
my $dbProdukt = new DbProdukt($connDb);
print "\n";
$dbProdukt->CreateQuery(undef, "nazwa");
while ($produkt = $dbProdukt->GetRow())
{
print $produkt->{kod} . " ";
print $produkt->{nazwa} . " ";
print $produkt->{cena} . "\n";
}
print "\n";
}