[ Bojan Zivanovic @ 04.03.2005. 13:29 ] @
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...
[ Goran Rakić @ 04.03.2005. 23:38 ] @
Umesto: $link = mysql_connect...
Pisi: $this->link = mysql_connect...

Pogledaj u PHP Manual-u zasto.
[ Bojan Zivanovic @ 05.03.2005. 13:59 ] @
Prepravio sam, ali i dalje izbacuje isto.
Mada, to neobjasnjava zasto ne radi setPage()
Proucicu malo PHP manual...
[ Goran Rakić @ 06.03.2005. 03:21 ] @
Isti problem ti se pojavljuje na vise mesta. Za pristup parametrima objekta iz samog objekta moras koristiti pokazivac $this
[ Nebojsa_S @ 06.03.2005. 23:08 ] @
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...
[ Goran Rakić @ 07.03.2005. 00:24 ] @
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)