[ Free_Sex @ 24.06.2004. 07:33 ] @
Sve je bilo lepo dok sam ja pisao krace programe. Ali sada kada mi treba nesto malo vise ... Odlucio sam se za OOP pristup. Konkretno treba da napravim "IS" koji ce da se stara oko primanja zahteva za proveru dostupnosti hotela. Korisnik salje zahtev. U njemu pise za koje je hotele zainteresovan, koji period, koliko ljudi itd. Agencija onda salje pitanje svakom hotelu dali imaju slobodnih mesta tada (bilo bi lepo kada bi i hoteli bili u sistemu i oni to sami proveravali, ali posto hotela ima samo nekoliko stotina, mozda i vise ..). Kada agencija dobije povratnu informaciju, ona salje ponudu korisniku, sa onim hotelima u kojima u datom periodu ima mesta i sa cenom. Ako je zainteresovan za neki od tih sastavlja se ugovor. A inace po Spanskom zakonu korisnik mora da potpise ugovor (papirni) i da ga posalje faksom (ili slicno, skenira ...) nazad, bezveze ali ... Ja sam mislio sledece : Objekti - Klase : - Korisnik - Hotel - Zainterosovan (za sta su zainteresovani korisnici) - Booking (za sta je potpisan ugovor) I plan je da se svaka klasa brine oko citanja forme prilikom unosa nohiv ili menjanja starih podataka u bazi. Pretrage za svaki od njih ... i oupste o svemu. Problem je oko te organizacije. Recimo evo sta sam dobio tim putem : Code: package Hotel; sub new{ my $data = {}; return bless $data; } sub create_table { # Just send the DataBase Handle to this method and it will create # hotels table for you. my $something = shift; my $dbh = shift; my $tmp = <<SQL; my $tmp = <<SQL; CREATE TABLE hotels( id VARCHAR(15) NOT NULL PRIMARY KEY, name VARCHAR(25) NOT NULL, hp_german VARCHAR(75), hp_english VARCHAR(75), hp_spanish VARCHAR(75), address VARCHAR(50), zip VARCHAR(20), city VARCHAR(50), country VARCHAR(50), telephone VARCHAR(50), fax VARCHAR(50), email VARCHAR(75), person VARCHAR(25), language_en TINYINT, language_ge TINYINT, language_sp TINYINT, winter_address VARCHAR(50), winter_zip VARCHAR(20), winter_city VARCHAR(50), winter_country VARCHAR(50), winter_telephone VARCHAR(50), winter_fax VARCHAR(50), winter_email VARCHAR(75), winter_person VARCHAR(25), winter_language_en TINYINT, winter_language_ge TINYINT, winter_language_sp TINYINT, invoice_address VARCHAR(50), invoice_zip VARCHAR(20), invoice_city VARCHAR(50), invoice_country VARCHAR(50), invoice_telephone VARCHAR(50), invoice_fax VARCHAR(50), invoice_email VARCHAR(75), invoice_person VARCHAR(25), invoice_language_en TINYINT, invoice_language_ge TINYINT, invoice_language_sp TINYINT, opened_from DATE, opened_until DATE, company VARCHAR(50), company_web VARCHAR(50), location VARCHAR(15), category VARCHAR(25), stars TINYINT, route_english TEXT, route_german TEXT, route_spanish TEXT, percentage INT, tax VARCHAR(50), image1 VARCHAR(50), image2 VARCHAR(50)) SQL $dbh->do($tmp) || return $dbh->errstr; DB_disconnect($dbh); return 1; } sub delete_table { my $something = shift; my $dbh = shift; $dbh->do("DROP TABLE hotels") || return $dbh->errstr; DB_disconnect($dbh); return 1; } sub get_hotel_data { my $something = shift; my $dbh = shift; my $id = shift; my $sth = $dbh->prepare("SELECT id,name,hp_german,hp_english,hp_spanish, address,zip,city,country,telephone,fax,email,person,language_en,language_ge, language_sp,winter_address,winter_zip,winter_city,winter_country, winter_telephone,winter_fax,winter_email,winter_person,winter_language_en, winter_language_ge,winter_language_sp,invoice_address,invoice_zip, invoice_city,invoice_country,invoice_telephone,invoice_fax,invoice_email, invoice_person,invoice_language_en,invoice_language_ge,invoice_language_sp, opened_from,opened_until,company,company_web,location,category,stars, route_english,route_german,route_spanish,percentage,tax,image1, image2 FROM hotels WHERE id=?") || return $dbh->errstr(); my $responce = $sth->execute($id); my @rows = $sth->fetchrow_array(); my $error_msg = $sth->errstr(); if(@rows > 0){ return @rows; } else{ return 0,$error_msg; } } sub DB_add_hotel{ # i think it would be better idea to get the my $something = shift; my $dbh = shift; my ($id,$name,$hp_german,$hp_english,$hp_spanish,$address,$zip,$city, $country,$telephone,$fax,$email,$person,$language_en,$language_ge, $language_sp,$winter_address,$winter_zip,$winter_city,$winter_country, $winter_telephone,$winter_fax,$winter_email,$winter_person, $winter_language_en,$winter_language_ge,$winter_language_sp,$invoice_address, $invoice_zip,$invoice_city,$invoice_country,$invoice_telephone,$invoice_fax, $invoice_email,$invoice_person,$invoice_language_en,$invoice_language_ge, $invoice_language_sp,$opened_from,$opened_until,$company,$company_web, $location,$category,$stars,$route_english,$route_german,$route_spanish, $percentage,$tax,$image1,$image2) = @_; # at some point it would be wise to change this to ?,?,? # and execute($....,$...) form ! my $tmp = <<SQL; INSERT INTO hotels (id,name,hp_german,hp_english,hp_spanish,address,zip, city,country,telephone,fax,email,person,language_en,language_ge,language_sp, winter_address,winter_zip,winter_city,winter_country,winter_telephone, winter_fax,winter_email,winter_person,winter_language_en,winter_language_ge, winter_language_sp,invoice_address,invoice_zip,invoice_city,invoice_country, invoice_telephone,invoice_fax,invoice_email,invoice_person,invoice_language_en, invoice_language_ge,invoice_language_sp,opened_from,opened_until,company, company_web,location,category,stars,route_english,route_german,route_spanish, percentage,tax,image1,image2) VALUES('$id','$name','$hp_german','$hp_english','$hp_spanish','$address', '$zip','$city','$country','$telephone','$fax','$email','$person', '$language_en','$language_ge','$language_sp','$winter_address','$winter_zip', '$winter_city','$winter_country','$winter_telephone','$winter_fax', '$winter_email','$winter_person','$winter_language_en','$winter_language_ge', '$winter_language_sp','$invoice_address','$invoice_zip','$invoice_city', '$invoice_country','$invoice_telephone','$invoice_fax','$invoice_email', '$invoice_person','$invoice_language_en','$invoice_language_ge', '$invoice_language_sp','$opened_from','$opened_until','$company', '$company_web','$location','$category','$stars','$route_english', '$route_german','$route_spanish','$percentage','$tax','$image1','$image2') SQL $responce = $dbh->do($tmp); my $error = $dbh->errstr(); if($responce != 0){ return 1; } else { return 0,$error; } } 1; Slozicete se da to bas i nije najbolje resenje, jer ako treba da promenim nesto u korisniku ... Ako neko zna za neki tutorijal, knjigu ili nesto sl. Koja govori o velikim projektima u perlu, neka kaze .... Takodje svaki vas primer koda, ili komentar na ovaj moj je dobrodosao ... ps. Da znam da treba da koristim placeholder - ? u prepare pa da pozivam sa execute i posaljem promenljive a ne ovako .... |