Перерылл множество мануалов и не и как не могу найти ответ Суть задачи: Нужно с помощью стандартых классов (желательно) Joomla 1.5 проверить наличие поля в заданной таблице БД и при его отсутствии сосздать его средствами РНР, используя стандартные классы Joomla 1.5 вместо прямого обращения к БД. Вот мой код без использования Joomla, это работает (соединение с БД уже установленно): Код (PHP): /** * Добавление несуществующего поля в таблицу * Если таблица не существует то она создается пустой и в нее добавляется указонное поле!!! */ function AddFields($FullNameTable, $DimField) { //$FullNameTable - полное (с префиксом базы) название таблицы в базе //$DimField - двухмерный ассоциативный массив добавляемых полей их параметров строка массива в формате: //'name' => 'ИМЯ поля', //'type' => 'ТИП поля', //'options' => 'Опции поля', //'value' => 'ЗНАЧЕНИЕ по умолчанию') $DimResult = array(); //КОД результата выполнения функции $NumResult = 0; //счетчик записей в массиве КОД результата выполнения функции $TableFind = mysql_query("SELECT 1 FROM `".$FullNameTable."` WHERE 0"); if ($TableFind == '') { $DimResult[] = array('code' => 1, 'mess'=> $FullNameTable); //КОД результата - ТАБЛИЦА НЕ существует //создание таблицы $sql_txt = "CREATE TABLE `".$FullNameTable."`"; //имя таблицы $sql_txt .= " (id INT (11) UNSIGNED NOT NULL AUTO_INCREMENT, PRIMARY KEY (id))"; mysql_query($sql_txt) or die(mysql_error()); $Mess = "Table: [".$FullNameTable."] Field: [".$DimField[$key]['name']."] Operation: [CREATE Table]=Ok!"; $DimResult[] = array('code' => 2, 'mess'=> $FullNameTable); //КОД результата - ТАБЛИЦА успешно добавлена } else { $DimResult[] = array('code' => 3, 'mess'=> $FullNameTable); //КОД результата - ТАБЛИЦА существует } //перебор массива заданных полей (столбцов таблицы) foreach($DimField as $key => $val) { //проверка существования поля (столбца) $FieldFind = mysql_query("SELECT ".$DimField[$key]['name']." FROM `".$FullNameTable."` WHERE 0"); //СОЗДАНИЕ НОВОГО поля if ($FieldFind == '') { $DimResult[] = array('code' => 4, 'mess'=> $FullNameTable); //КОД результата - ПОЛЕ НЕ существует $sql_txt = "ALTER TABLE `".$FullNameTable."` ADD "; $sql_txt .= " ".$DimField[$key]['name'].""; //имя поля $sql_txt .= " ".$DimField[$key]['type']; // тип поля $sql_txt .= " ".$DimField[$key]['options']; // опции поля $sql_txt .= " ".$DimField[$key]['value']; //значение по умолчанию mysql_query($sql_txt) or die(mysql_error()); $Mess = "Table: [".$FullNameTable."] Field: [".$DimField[$key]['name']."] Operation: [ADD field]=Ok!"; $DimResult[] = array('code' => 5, 'mess' => $Mess); //КОД результата - ПОЛЕ успешно добавлено } //ОБНОВЛЕНИЕ ТИПА существующего поля else { $DimResult[] = array('code' => 6, 'mess'=> $FullNameTable); //КОД результата - ПОЛЕ существует $sql_txt = "ALTER TABLE `".$FullNameTable."`"; //имя таблицы $sql_txt .= " CHANGE ".$DimField[$key]['name']; //СТАРОЕ имя поля $sql_txt .= " ".$DimField[$key]['name']; //НОВОЕ имя поля $sql_txt .= " ".$DimField[$key]['type']; // тип поля $sql_txt .= " ".$DimField[$key]['options']; // опции поля $sql_txt .= " ".$DimField[$key]['value']; //значение по умолчанию mysql_query($sql_txt) or die(mysql_error()); $Mess = "Table: [".$FullNameTable."] Field: [".$DimField[$key]['name']."] Operation: [UPDATE Type field]=Ok!"; $DimResult[] = array('code' => 7, 'mess' => $Mess); //КОД результата - ПОЛЕ успешно добавлено } } return $DimResult; } $FullNameTable = 'jos_test'; //полное имя таблицы в БД $DimField = array(); //ассоциативный массив (имя элемента-это имя поля) проверяемых (добавляемых) полей в таблицу $DimField['block'] = array('name' => "block", 'type' => "SET ('0','1')", 'value' =>"DEFAULT NULL"); //поле 'block' $DimField['position'] = array('name' => 'position', 'type' => "INT (11)", 'value' => 'DEFAULT NULL'); //поле 'position' $DimResult = AddFields($FullNameTable, $DimField); $ParamMessReport .= $otstup.$FullNameTable.' -> OK!'; теперь это нужно изменить так чтобы этот код вставить в модуль для Joomla 1.5 заменив все опрерации работы с БД на методы классов Joomla.....у меня это не выходит ((( Возможно я по неопытности что то упустил в своих поисках помогите пожалуйста...
Код (PHP): $db=& JFactory::getDBO(); $db->setQuery('тут какойто запрос'); $db->getErrorNum(); //номер ошибки $db->getErrorMsg($escaped = false); //текст ошибки $db->function getLog( ); // лог работы (лог ошибок) пользуйся P.S. а вообще очень помогает просмотр исходников, конкретно для J1.5 \libraries\joomla\database\