[ Rodja_ki @ 26.03.2013. 23:01 ] @
Pozdrav ljudi! Ceo dan se patim sa ovom greskom, ne mogu da dokucim zbog cega je dobijam...Guglao sam, trazio, ehovao maltene svaku promenljivu i dosao do otprilike gde se pojavljuje greska ali ne znam zbog cega...
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;
     
        
}
}

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>&nbsp;</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 :)
[ Radovan__III @ 26.03.2013. 23:30 ] @
Prevedeno " pokusavas da pristupis propertiju od necega sto nije objekat "
Tj $proizvod nije objekat , uradi
Code:
var_dump($proizvod)

mozda ces videti nesto sto ce ti pomoci da resis.

Takodje, pronadjPoId funkcija ti vraca niz ? a posle pristupas kao da je objekat ...
[ Rodja_ki @ 27.03.2013. 10:24 ] @
Hvala za "hint"! Prevod sam i ja znao :) Sredio sam jedan deo, ne pojavljuje se greska vise, dobio sam vrednosti koje mi trebaju sad jos samo da nekako sredim da mi ispis bude kako treba...:)