// Если задан $id, то устанавливаем в записи этот идентификатор
if($id) $Upd["id"]=$id;
// Загружаем старую запись. Она должна быть одна.
$r=$this->SelectQuery("id=".$Upd["id"]);
$Rec=$this->GetResult($r);
// Если не удалось, значит, неверное обновление — записи
// еще не существует
if(!$Rec) { $this->Error="NotExists"; return 0; }
// Иначе все в порядке — добавляем. Сначала обновляем
// поля и упаковываем переменные
$Rec=$Upd+$Rec; $Upd=$Rec;
if(!$this->PreModify($Rec)) return 0;
$Rec[DataField]=$this->_PackFields($Rec);
// Затем составляем список полей для обновления
$Lst=array();
foreach($this->Fields as $name=>$type)
$Lst[]="$name='".Apostrophs($Rec[$name])."'";
$Lst=implode($Lst,",");
// Выполняем запрос
if(!mysql_query("update ".$this->TableName.
" set $Lst where id=".$Rec["id"]))
{ $this->Error=mysql_error(); return 0; }
$this->PostSelect($Rec);
return 1;
}
function Update(&$Upd,$id=0) { return $this->TableUpdate(&$Upd,$id); }
// Возвращает число записей, удовлетворяющих выражению $Expr.
// Если $Expr не задано, возвращает число ВСЕХ записей.
function TableGetCount($Expr="")
{ $this->Error="";
if(!$Expr) $Expr="1=1";
$r=mysql_query("select count(if(($Expr) and (id>1),1,NULL)) from ".
$this->TableName);
if(!$r) { $this->Error=mysql_error(); return 0; }
$a=mysql_fetch_array($r);
return $a[0];
}
function GetCount($Expr="") { return $this->TableGetCount($Expr); }
// Возвращает СПИСОК всех уникальных значений поля $field
// в таблице, удовлетворяющих тому же условию $Expr.
// ВНИМАНИЕ: эта функция работает лишь тогда, когда поле $field
// присутствовало среди полей $Fields при вызове конструктора.
// В противном случае генерируется ошибка.
// Рекомендуется при создании таблицы для поля $field создать индекс.