// чтения полей.
$this->Error="";
$Lst=array();
foreach($Fields as $k=>$v) $Lst[]="$k $v";
foreach($Index as $k=>$v)
$Lst[]="index index_$k ($k".($v!=0?" ($v)":"").")";
if(!mysql_query("create table $Name (".implode($Lst,",").")")) {
$this->Error=mysql_error();
return;
}
$this->JustCreated=1;
}
// Сохраняем информацию о таблице, если она поменялась
if(!empty($Changed)||$this->JustCreated) {
$Data["Fields"]=$Fields;
$Data["Index"]=$Index;
Def0($Data["Info"],array()); // Информации не было — делаем пустой
$Data=SqlPack($Data);
if($this->JustCreated) {
$Result=mysql_query("insert into $Name(id,".DataField.")
values(1,'$Data')");
} else {
$Result=mysql_query("update $Name set ".DataField.
"='$Data' where id=1");
}
if(!$Result) { $this->Error=mysql_error(); return; }
}
$this->Fields=$Fields;
$this->Index=$Index;
}
// Записывает в таблицу информацию, общую для всей таблицы. Эта
// информация может быть получена потом только при помощи метода
// GetInfo(), и никак иначе. Например, если таблица используется для
// гостевой книги, мы можем сюда записывать какие-нибудь параметры этой
// книги — скажем, имя и пароль владельца. $Inf может быть чем угодно —
// даже массивом.
function TableSetInfo($Inf)
{ $this->Error="";
// Читаем информационную запись
$r=mysql_query("select ".DataField." from ".
$this->TableName." where id=1");
if(!($Data=$this->GetResult($r))) return;
// Устанавливаем поле Info
$Data["Info"]=$Inf;
$Data=SqlPack($Data);
// Сохраняем результат
if(!mysql_query("update ".$this->TableName.
" set ".DataField."='$Data' where id=1"))
{ $this->Error=mysql_error(); return; }
return 1;