Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Ошибка класса?!
 
 автор: Antik87   (21.09.2008 в 06:23)   письмо автору
 
 

Код добавление позици товара


  error_reporting(E_ALL & ~E_NOTICE);

  // Устанавливаем соединение с базой данных
  require_once("../../config/config.php");
  // Подключаем блок авторизации
  require_once("../utils/security_mod.php");
  // Подключаем классы формы
  require_once("../../config/class.config.dmn.php");
  // Подключаем функцию изменения размера изображения
  require_once("../utils/utils.resizeimg.php");
  if(empty($_POST)) $_REQUEST['hide'] = true;
  $_REQUEST['id_catalog'] = intval($_REQUEST['id_catalog']);

  try
  {

    $brend        = new field_text("brend",
                                     "Бренд",
                                      true,
                                     $_REQUEST['brend']);
    $model        = new field_text("model",
                                     "Модель",
                                      true,
                                     $_REQUEST['model']);
   $foto_name = new field_text("foto_name",
                           "Название",
                           false,
                           $_POST['foto_name']);
   $big   = new field_file("big",
                            "Изображение",
                             false,
                             $_FILES,
                            "../../files/photo/");
    $text_x    = new field_text("text_x",
                                 "Характеристика",
                                 $_REQUEST['text_x']);
    $text_o    = new field_text("text_o",
                                 "Описание",
                                 $_REQUEST['text_o']);


    $price   = new field_text_int("price",
                                  "Цена",
                                   true,
                                   $_REQUEST['price']);

    $hide        = new field_checkbox("hide",
                               "Отображать",
                               $_REQUEST['hide']);
    $id_catalog = new field_hidden_int("id_catalog",
                               true,
                               $_REQUEST['id_catalog']);

    $form = new form(array(  "brend"    => $brend,
                           "model"    => $model,
                         "foto_name"    => $foto_name,
                           "big"    => $big,
                           "text_x"      => $text_x,
                           "text_o"      => $text_o,
                           "price"      => $price,
                           "hide"       => $hide,
                           "id_catalog" => $id_catalog),
                     "Добавить",
                     "field");

    // Обработчик HTML-формы
    if(!empty($_POST))
    {
      // Проверяем корректность заполнения HTML-формы
      // и обрабатываем текстовые поля
      $error = $form->check();
      if(empty($error))
      {
        // Извлекаем текущую максимальную позицию
        $query = "SELECT MAX(pos) FROM $tbl_cat_position
                  WHERE id_catalog={$form->fields['id_catalog']->value}";
        $pos = mysql_query($query);
        if(!$pos)
        {
          throw new ExceptionMySQL(mysql_error(),
                                   $query,
                                  "Ошибка при извлечении
                                   текущей позиции");
        }
        $pos = mysql_result($pos, 0) + 1;
        // Скрытый или открытая позиция
        if($form->fields['hide']->value) $showhide = "show";
        else $showhide = "hide";
        // Изображения
        $var = $form->fields['big']->get_filename();
        if(!empty($var))
        {
          $big = "files/photo/".$var;
          $small = "files/photo/s_".$var;
        }
        else $big = "";
        // Извлекаем параметры галереи
        $query = "SELECT * FROM $tbl_photo_settings LIMIT 1";
        $set = mysql_query($query);
        if(!$set)
        {
          throw new ExceptionMySQL(mysql_error(),
                                   $query,
                                  "Ошибка при извлечении
                                   параметров галереи");
        }
        if(mysql_num_rows($set))
        {
          $settings = mysql_fetch_array($set);
        }
        else
        {
          $settings['width'] = 150;
          $settings['height'] = 133;
        }
        // Формируем малое изображение
        resizeimg($big, $small, $settings['width'], $settings['height']);
        // Формируем SQL-запрос на добавление позиции
        $query = "INSERT INTO $tbl_cat_position
                  VALUES (NULL,
                          '{$form->fields[brend]->value}',
                          '{$form->fields[model]->value}',
                          '{$form->fields[foto_name]->value}',
                          '$big',
                          '$small',
                          '{$form->fields[text_x]->value}',
                          '{$form->fields[text_o]->value}',
                          '{$form->fields[price]->value}',
                          '$showhide',
                          '$position',
                          NOW(),
                          '{$form->fields[id_catalog]->value}')";
        if(!mysql_query($query))
        {
          throw new ExceptionMySQL(mysql_error(),
                                   $query,
                                  "Ошибка при добавлении
                                   позиции");
        }
        // Осуществляем редирект на главную страницу
        header("Location: position.php?".
               "id_catalog={$form->fields[id_catalog]->value}&".
               "page={$form->fields[page]->value}");
        exit();
      }
    }
    // Начало страницы
    $title     = 'Добавление изображения';
    $pageinfo  = '<p class=help></p>';
    // Включаем заголовок страницы
    require_once("../utils/top.php");

    echo "<p><a href=# onClick='history.back()'>Назад</a></p>";
    // Выводим сообщения об ошибках если они имеются
    if(!empty($error))
    {
      foreach($error as $err)
      {
        echo "<span style=\"color:red\">$err</span><br>";
      }
    }
    // Выводим HTML-форму
    $form->print_form();
  }
  catch(ExceptionObject $exc)
  {
    require("../utils/exception_object.php");
  }
  catch(ExceptionMySQL $exc)
  {
    require("../utils/exception_mysql.php");
  }
  catch(ExceptionMember $exc)
  {
    require("../utils/exception_member.php");
  }

  // Включаем завершение страницы
  require_once("../utils/bottom.php");



Нажимаем добавить и получаем ошибку типа
Произошла исключительная ситуация (ExceptionMember) - попытка обращения к несуществующему члену класса. Член field::value не существует.

Ошибка в файле bla\bla\class\class.field.php в строке 76.
на 76 строчке функция

  // Доступ к закрытым и защищённым элементам класса
    // только для чтения
    public function __get($key)
    {
      if(isset($this->$key)) return $this->$key;
      else 
      {
        throw new ExceptionMember($key, 
              "Член ".__CLASS__."::$key не существует");
      }
    }

Фотография на сервер загружаеться в папку, в базу не пишеться ничего,
2 часа пытался найти ошибку, безрезультатно.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования