Druzya.org
Возьмемся за руки, Друзья...
 
 
Наши Друзья

Александр Градский
Мемориальный сайт Дольфи. 
				  Светлой памяти детей,
				  погибших  1 июня 2001 года, 
				  а также всем жертвам теракта возле 
				 Тель-Авивского Дельфинариума посвящается...

Библиотека :: Компьютеры и Программирование :: Котеров Д. В. - Самоучитель PHP 4
<<-[Весь Текст]
Страница: из 287
 <<-
 
 { return $this->TableGetInfo(); } 
// Уничтожает таблицу. Осторожно! Таблица удаляется без всяких 
// предупреждений!!! 
function TableDrop() 
{ $this->Error=""; 
if(!mysql_query("drop table ".$this->TableName)) { 
$this->Error=mysql_error(); 
return 0; 
} 
return 1; 
} 

Часть V. Приемы программирования на PHP 474 
function Drop() { return $this->TableDrop(); } 
// Добавляет запись $Rec (обычно это ассоциативный массив с некоторыми 
// установленными полями) в таблицу. Автоматически у нее проставляется 
// id, а также проверяется, уникальны ли у записи те поля, которые должны 
// быть уникальными (указываются в конструкторе). Возвращает 1 в случае 
// успеха, при этом в $Rec содержится окончательно сформированная 
// запись. 
function TableAdd(&$Rec) 
{ $this->Error=""; 
if(!$this->PreModify($Rec)) return 0; 
// Иначе все в порядке. Добавляем запись. 
$Rec[DataField]=$this->_PackFields($Rec); 
// Составляем список имен полей и их значений 
$LNames=$LVals=array(); 
foreach($this->Fields as $name=>$type) { 
$LNames[]=$name; 
$LVals[]="'".Apostrophs($Rec[$name])."'"; 
} 
$LNames=implode($LNames,","); 
$LVals=implode($LVals,","); 
unSet($Rec[DataField]); 
// Добавляем 
if(!mysql_query("insert into ".$this->TableName. 
"($LNames) values($LVals)")) 
{ $this->Error=mysql_error(); return 0; } 
$Rec["id"]=mysql_insert_id(); 
$this->PostSelect($Rec); 
return 1; 
} 
function Add(&$Rec) { return $this->TableAdd(&$Rec); } 
// Удаляет из таблицы записи, удовлетворяющие выражению $Expr. 
// Например: $Tbl->Delete("(id=$id) or (id=0)"); 
function TableDelete($Expr) 
{ $this->Error=""; 
if(!mysql_query("delete from ".$this->TableName. 
" where ($Expr) and (id>1)")) 
{ $this->Error=mysql_error(); return 0; } 
return 1; 

Глава 31. Объектно-ориентированное программирование на PHP 475 
} 
function Delete($Expr) { return $this->TableDelete($Expr); } 
// Возвращает массив записей (ключ — id, значение — запись). В массив 
// будет занесено не более $Num записей. Для каждой записи 
// вызывается PostSelect()! 
function TableSelect($Expr="",$Num=100000,$Order="id desc") 
{ $this->Error=""; 
// Выполнить запрос 
$r=$this->SelectQuery($Expr,$Order); if(!$r) return 0; 
// Цикл по найденным записям 
for($i=0,$Found=array(); $i<$Num&&($Rec=$this->GetResult($r)); $i++) 
$Found[$Rec["id"]]=$Rec; 
return $Found; 
} 
function Select($Expr="",$Num=100000,$Order="id desc") 
{ return $this->TableSelect($Expr,$Num,$Order); } 
// Обновляет запись в таблице, при этом запись $Upd изменяется и 
// становится фактически такой, как она будет выглядеть после обновления. 
// То есть к ней могут добавиться новые поля из таблицы. Если записи с 
// таким id нет (когда $id не указан в параметрах, его значение берется 
// равным $Upd["id"]), то генерируется ошибка! 
// Возможно, в записи $Upd не задан идентификатор id (это бывает, если 
// мы только что получили данные из формы). В этом случае можно этот 
// идентификатор передать через $id. 
// Итак, при обновлении id НЕ МЕНЯЕТСЯ по определению (в отличие от 
// ДОБАВЛЕНИЯ, когда id всегда проставляется)! 
function TableUpdate(&$Upd,$id=0) 
{ $this->Error=""; 
// Если задан $id, то устанавливаем в записи этот идентификатор 
if($id) $Upd["id"]=$id; 
// Загружаем старую запись. Она должна быть одна. 
$r=$this->SelectQuery("id=".$Upd["id"]); 
$Rec=$this->GetResult($r); 
// Если не удалось, значит, неверное обновление — записи 
// еще не существует 
if(!$Rec) { $this->Error="NotExists"; return 0; } 
// Иначе все в порядке — добавляем. Сначала обновляем 
// поля и упаковываем переменные 

Часть V. Приемы программирования на PHP 476 
$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 при вызове конструкт
 
<<-[Весь Текст]
Страница: из 287
 <<-