Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

OOP prvi koraci - pomoc

[es] :: PHP :: OOP prvi koraci - pomoc

[ Pregleda: 3474 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Bojan Zivanovic
Freelance programer
Pančevo,Srbija

Član broj: 32974
Poruke: 146
194.106.171.*

Jabber: Bojan_Zivanovic@elitesecurity.org
Sajt: bojanz.blogspot.com


Profil

icon OOP prvi koraci - pomoc04.03.2005. u 13:29 - pre 232 meseci
Pisem program za management biblioteke, znaci unos knjiga,pretrazivanje iznajmljivanje.
Odlucio sam da iskoristim ovu priliku da zaronim u OOP.
Medjutim moja install skripta ne radi, pogledajte kod pa mi kazite u cemu se radi...
install.php
Code:

<?php
include('include/lib.php');

$library = new library;
$db = new mysql;
$library->setPage('install');

if(isset($_POST['install'])) {
    $library->setConfig($_POST);
    $library->writeConfig();
    $db->createTable();
    $library->setSubpage('done');
}
else {
    $library->setSubpage('config');
}

$db->disconnect();
$library->display();

?>

a lib:
Code:

include('settings.php');
class mysql {
    public $dbuser; 
    public $dbpass;
    public $db;
    public $dbhost;
    private $link;
    
    function connect() {
    $link = mysql_connect($dbhost, $dbuser, $dbpass) or die("SQL Greska: " . mysql_error());
    mysql_select_db($db);
    return $link;
    }
    function disconnect() {
    mysql_close($link);
    }
    function query($sql) { 
    $result = mysql_query($sql);
    return $result;
    }
    function createTable() {
    $sql = '
    CREATE TABLE books (
    id int NOT NULL auto_increment,
    writter varchar(60),
    title varchar(60),
    year varchar(4),
    publisher varchar(60),
    number int,
    taken int,
    PRIMARY KEY (id)
    );
    ';
    if(!$link) $this->connect();
    $this->query($sql);
    }
    function newBook($writter,$title, $year, $publisher, $number) {
    $sql = "INSERT INTO books (writter, title, year, publisher, number) VALUES($writter, $title, $year, $publisher, $number)";
    if(!$link) $this->connect;
    $this->query($sql);
    }
}

class library {
    private $admin_user;
    private $admin_pass;    
    private $admin_email;
    private $dbuser;
    private $dbpass;
    private $db;
    private $dbhost;
    private $page;
    private $subpage;
    
    function setConfig($array) {
        explode($array);
    }
    function writeConfig() {
    $config = '
<?php
#
# Biblioteka.PHP 1.0
#
\$admin_user = "$admin_user";
\$admin_pass = "$admin_pass";
\$admin_email = "$admin_email";
\$db = "$db";
\$dbhost = "$dbhost";
\$dbuser = "$dbuser";
\$dbpass = "$dbpass";
?>';
    $file = fopen('include/settings.php', 'w');
    fwrite($file, $config);
    fclose($file);
    }
    function setPage($npage) {  
    $page = $npage;
    return $page;
    }
    function setSubpage($nsubpage) {
        $subpage = $nsubpage;
    }
    function display() {
        include("html/{$page}/header.html");
        include("html/{$page}/{$subpage}.html");
        include("html/footer.html");
    }
}

A evo sta mi ispise install
Code:

1245
Warning: mysql_close(): supplied argument is not a valid MySQL-Link resource in
/var/www/localhost/htdocs/biblioteka/include/lib.php on line 20

Warning: library::display(html//header.html) [function.display]: failed to open stream:
No such file or directory in /var/www/localhost/htdocs/biblioteka/include/lib.php on line 89

Warning: library::display() [function.include]: Failed opening 'html//header.html' for inclusion 
(include_path='.:/usr/local/lib/php') in /var/www/localhost/htdocs/biblioteka/include/lib.php on line 89

Warning: library::display(html//.html) [function.display]: failed to open stream:
No such file or directory in /var/www/localhost/htdocs/biblioteka/include/lib.php on line 90

Warning: library::display() [function.include]: Failed opening 'html//.html' for inclusion 
(include_path='.:/usr/local/lib/php') in /var/www/localhost/htdocs/biblioteka/include/lib.php on line 90
Powered by Biblioteka.PHP 1.0 

Pocetnik sam sto se objektno orjentisanog programiranja tice, tako da bi mi najvise odgovaralo da me sto vise iskritikujete...
pozdrav,
Bojan

P.S. Ova podesavlja za bazu, te promenjljive, jel mogu da budu private? Ja bih rekao da mogu...
 
Odgovor na temu

Goran Rakić
Beograd

Moderator
Član broj: 999
Poruke: 3766

Sajt: blog.goranrakic.com


+125 Profil

icon Re: OOP prvi koraci - pomoc04.03.2005. u 23:38 - pre 232 meseci
Umesto: $link = mysql_connect...
Pisi: $this->link = mysql_connect...

Pogledaj u PHP Manual-u zasto.
http://sr.libreoffice.org — slobodan kancelarijski paket, obrada teksta, tablice,
prezentacije, legalno bez troškova licenciranja
 
Odgovor na temu

Bojan Zivanovic
Freelance programer
Pančevo,Srbija

Član broj: 32974
Poruke: 146
194.106.171.*

Jabber: Bojan_Zivanovic@elitesecurity.org
Sajt: bojanz.blogspot.com


Profil

icon Re: OOP prvi koraci - pomoc05.03.2005. u 13:59 - pre 232 meseci
Prepravio sam, ali i dalje izbacuje isto.
Mada, to neobjasnjava zasto ne radi setPage()
Proucicu malo PHP manual...
 
Odgovor na temu

Goran Rakić
Beograd

Moderator
Član broj: 999
Poruke: 3766

Sajt: blog.goranrakic.com


+125 Profil

icon Re: OOP prvi koraci - pomoc06.03.2005. u 03:21 - pre 232 meseci
Isti problem ti se pojavljuje na vise mesta. Za pristup parametrima objekta iz samog objekta moras koristiti pokazivac $this
http://sr.libreoffice.org — slobodan kancelarijski paket, obrada teksta, tablice,
prezentacije, legalno bez troškova licenciranja
 
Odgovor na temu

Nebojsa_S
Nebojsa Stankovic
projektant baza podataka
Novi Beograd

Član broj: 38157
Poruke: 46
*.ptt.yu.

ICQ: 309
Sajt: www.oglasiplus.com


Profil

icon Re: OOP prvi koraci - pomoc06.03.2005. u 23:08 - pre 232 meseci
Nisam neki strucnjak za OOP , ali zar ne bi trebalo da stoji na pocetku koda:
Code:
$library=new library();
$mysql=new mysql();...

Pomocu 'new' pozivas konstruktorsku funkciju za tu klasu, pa su zagrade neophodne. Greske koje ti prijavljuje znace da objekti koje si 'kreirao' , u stvari ne postoje.
Mozda i nije to , ali probaj...
 
Odgovor na temu

Goran Rakić
Beograd

Moderator
Član broj: 999
Poruke: 3766

Sajt: blog.goranrakic.com


+125 Profil

icon Re: OOP prvi koraci - pomoc07.03.2005. u 00:24 - pre 232 meseci
Ni jedna ni druga nemaju parametre u pozivu konstruktora tako da problem nije u tome. Rekao sam ti vec sta je problem. Pored toga jos i:

Code:

        include("html/{$page}/header.html");


treba biti:
Code:

        include("html/".$this->page."/header.html");


(vidis i ovde primer koriscenja $this pokazivaca)
http://sr.libreoffice.org — slobodan kancelarijski paket, obrada teksta, tablice,
prezentacije, legalno bez troškova licenciranja
 
Odgovor na temu

[es] :: PHP :: OOP prvi koraci - pomoc

[ Pregleda: 3474 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.