data)) return $this->data[$key]; elseif (isset($this->$key)) return $this->$key; // else werfe fehler } function __set($key, $value) { if (array_key_exists($key, $this->raw_data)) { $this->raw_data[$key] = $value; $this->changes[$key] = $value; $this->parse($this->raw_data); } elseif (array_key_exists($key, $this->data)) $this->data[$key] = $value; // return false; elseif (isset($this->$key)) $this->$key = $value; else $this->data[$key] = $value; } protected function setup() { $fields = array(); $res = db_query("DESCRIBE {$this->default_table}"); while ($f = mysql_fetch_object($res)) { $fields[$f->Field] = $f->Default; } $this->raw_data = $fields; $this->raw_data['id'] = NULL; $this->data = $fields; $this->data['id'] = NULL; } function getData($fields, $restriction = NULL, $table = NULL) { $where = ''; if ($restriction) $where = 'WHERE '.$restriction; if (! $table) $table = $this->default_table; if (is_array($fields)) $fields = implode(',', $fields); $res = db_query("SELECT {$fields} FROM {$table} {$where}"); $return = array(); while ($arr = mysql_fetch_assoc($res)) array_push($return, $arr); return $return; } function loadByID($id) { $id = (int) $id; DEBUG("requested to load ID »{$id}«"); $res = $this->getData('*', "id={$id} LIMIT 1"); if (count($res) < 1) return false; $this->parse($res[0]); } function save() { $upd = array(); foreach ($this->changes as $key => $value) { $value = mysql_real_escape_string($value); array_push($upd, "`{$key}`='{$value}'"); } db_query("UPDATE {$this->default_table} SET ".implode(', ', $upd)." WHERE id={$this->data['id']};"); } abstract function parse($data); } ?>