Code:
require_once (LIB_PATH.DS.'database.php');
class Proizvodi {
protected static $ime_tabele = "proizvod";
protected static $polje_baze = array('id_proizvoda', 'naziv_proizvoda', 'tehnicki_podaci', 'text_proizvoda',
'kvantitet', 'jedinica_mere', 'sifra_brenda', 'sifra_kategorije', 'cena', 'lager' );
public $id_proizvoda;
public $naziv_proizvoda;
public $tehnicki_podaci;
public $text_proizvoda;
public $kvantitet;
public $jedinica_mere;
public $sifra_brenda;
public $sifra_kategorije;
public $cena;
public $lager;
public static function pronadjiSve() {
return self::pronadjiPoSqlu("SELECT * FROM " . self::$ime_tabele);
}
public static function pronadjPoId($id=0) {
$resultArray = self::pronadjiPoSqlu("SELECT * FROM " . self::$ime_tabele . " WHERE sifra_kategorije={$id} ");
return !empty($resultArray) ? array_shift($resultArray) : false;
}
public static function pronadjiPoSqlu($sql="") {
global $database;
$resultSet = $database->query($sql);
echo $database->num_rows($resultSet);
$object_array = array();
while ($row = $database->fatch_object($resultSet)) {
$object_array[] = self::instantiate($row);
}
return $object_array ;
}
private static function instantiate($podatak) {
$object = new self;
// $objekat->id_proizvoda = $podatak['id_proizvoda'];
// $objekat->naziv_proizvoda = $podatak['naziv_proizvoda'];
// $objekat->tehnicki_podaci = $podatak['tehnicki_podaci'];
// $objekat->text_proizvoda = $podatak['text_proizvoda'];
// $objekat->kvantitet = $podatak['kvantitet'];
// $objekat->jedinica_mere = $podatak['jedinica_mere'];
// $objekat->sifra_brenda = $podatak['sifra_brenda'];
// $objekat->sifra_kategorije = $podatak['sifra_kategorije'];
// $objekat->cena = $podatak['cena'];
// $objekat->lager = $podatak['lager'];
//dinamicniji pristup za kratke forme
foreach ($podatak as $atribute => $value) {
if($object->has_atribute($atribute)) {
$object->$atribute = $value;
} else {
echo "Ne postoje atributi <br />"; //stalno mi ispisuje gresku ovde, tj da ovaj if nije tacan
}
}
return $object;
}
private function has_atribute($atribute) {
return array_key_exists($atribute, $this->attributes());
}
protected function attributes() {
$attributes = array();
foreach(self::$polje_baze as $field) {
if(property_exists($this, $field)) {
$attributes[$field] = $this->$field;
} else {
echo "Ni ovde nema atributa";
}
}
return $attributes;
}
}
require_once (LIB_PATH.DS.'database.php');
class Proizvodi {
protected static $ime_tabele = "proizvod";
protected static $polje_baze = array('id_proizvoda', 'naziv_proizvoda', 'tehnicki_podaci', 'text_proizvoda',
'kvantitet', 'jedinica_mere', 'sifra_brenda', 'sifra_kategorije', 'cena', 'lager' );
public $id_proizvoda;
public $naziv_proizvoda;
public $tehnicki_podaci;
public $text_proizvoda;
public $kvantitet;
public $jedinica_mere;
public $sifra_brenda;
public $sifra_kategorije;
public $cena;
public $lager;
public static function pronadjiSve() {
return self::pronadjiPoSqlu("SELECT * FROM " . self::$ime_tabele);
}
public static function pronadjPoId($id=0) {
$resultArray = self::pronadjiPoSqlu("SELECT * FROM " . self::$ime_tabele . " WHERE sifra_kategorije={$id} ");
return !empty($resultArray) ? array_shift($resultArray) : false;
}
public static function pronadjiPoSqlu($sql="") {
global $database;
$resultSet = $database->query($sql);
echo $database->num_rows($resultSet);
$object_array = array();
while ($row = $database->fatch_object($resultSet)) {
$object_array[] = self::instantiate($row);
}
return $object_array ;
}
private static function instantiate($podatak) {
$object = new self;
// $objekat->id_proizvoda = $podatak['id_proizvoda'];
// $objekat->naziv_proizvoda = $podatak['naziv_proizvoda'];
// $objekat->tehnicki_podaci = $podatak['tehnicki_podaci'];
// $objekat->text_proizvoda = $podatak['text_proizvoda'];
// $objekat->kvantitet = $podatak['kvantitet'];
// $objekat->jedinica_mere = $podatak['jedinica_mere'];
// $objekat->sifra_brenda = $podatak['sifra_brenda'];
// $objekat->sifra_kategorije = $podatak['sifra_kategorije'];
// $objekat->cena = $podatak['cena'];
// $objekat->lager = $podatak['lager'];
//dinamicniji pristup za kratke forme
foreach ($podatak as $atribute => $value) {
if($object->has_atribute($atribute)) {
$object->$atribute = $value;
} else {
echo "Ne postoje atributi <br />"; //stalno mi ispisuje gresku ovde, tj da ovaj if nije tacan
}
}
return $object;
}
private function has_atribute($atribute) {
return array_key_exists($atribute, $this->attributes());
}
protected function attributes() {
$attributes = array();
foreach(self::$polje_baze as $field) {
if(property_exists($this, $field)) {
$attributes[$field] = $this->$field;
} else {
echo "Ni ovde nema atributa";
}
}
return $attributes;
}
}
Mojim nekim debagovanjem sam dosao do toga da mi u funkciji instantiate ispisuje negativnu logiku kod if-a...tacnije stalno mi ispisuje else deo...i da verovatno zbog toga na drugoj strani imam taj error
Evo i koda stranice gde mi se pojavljuje greska...
Code:
<?php
include("../../includes/initialize.php");
$id=13;
echo "<hr>";
$proizvodna = Proizvodi::pronadjPoId($id);
?>
<table class="bordered">
<tr>
<th>Naziv</th>
<th>Text</th>
<th>kvantitet</th>
<th>Lager</th>
<th>Brend</th>
<th> </th>
</tr>
<?php foreach($proizvodna as $proizvod): ?>
<tr>
<td></td>
<td><?php echo $proizvod->naziv_proizvoda; ?></td>
<td><?php echo $proizvod->text_proizvoda; ?></td>
<td><?php echo $proizvod->kvantitet; ?></td>
<td><?php echo $proizvod->lager; ?></td>
<td><?php echo $proizvod->sifra_brenda; ?></td>
</tr>
<?php endforeach; ?>
</table>
<?php
include("../../includes/initialize.php");
$id=13;
echo "<hr>";
$proizvodna = Proizvodi::pronadjPoId($id);
?>
<table class="bordered">
<tr>
<th>Naziv</th>
<th>Text</th>
<th>kvantitet</th>
<th>Lager</th>
<th>Brend</th>
<th> </th>
</tr>
<?php foreach($proizvodna as $proizvod): ?>
<tr>
<td></td>
<td><?php echo $proizvod->naziv_proizvoda; ?></td>
<td><?php echo $proizvod->text_proizvoda; ?></td>
<td><?php echo $proizvod->kvantitet; ?></td>
<td><?php echo $proizvod->lager; ?></td>
<td><?php echo $proizvod->sifra_brenda; ?></td>
</tr>
<?php endforeach; ?>
</table>
gresku prijavljuje za svaki red u tabeli gde treba da se ispisu vrednosti...Nadam se da sam razumljivo objasnio, ako nisam pitajte da dodatno objasnim :)