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

Форум PHP

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

 

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

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

тема: Как создать поле-массив объекта?
 
 автор: PeLeg   (17.02.2012 в 14:46)   письмо автору
 
 

Ситуация такая,необходимо написать класс самораскрывающего окошка с передачей заранее определенных параметров через конструктор:

class CField
{
public $caption;//название
public $arr_elements;//собственно,сам массив,если я правильно определил?
...
function __construct($caption="",$arr_elements, ...)
{
$this->caption=$caption;
$this->arr_elements;//здесь мне не понятно как его определять или присваивать
...
}
...
//здесь будет цикл присвоения и вставки каждого элемента в хтмл-код
...
public function get_select();//здесь будет функция-метод во3врата кода
...

};

Главный вопрос-как со3дать массив-поле,с последующей передачей данных вот так:
$object=new CSelect("name",array("elem1","elem2",...),...); ?

  Ответить  
 
 автор: cheops   (17.02.2012 в 15:13)   письмо автору
 
   для: PeLeg   (17.02.2012 в 14:46)
 

Не понятно, что вызывает трудности? Так и создавайте, как вы указали, присваивая массива следующим образом
$this->arr_elements = $arr_elements;

  Ответить  
 
 автор: PeLeg   (17.02.2012 в 15:52)   письмо автору
 
   для: cheops   (17.02.2012 в 15:13)
 

Но,это вызывает ошибку,на локалке все проходит штатно,но на хостинге -чтобы я не делал выдает ошибку,где,по сути, и ошибки не нашел,просто указывает на первую строку. Когда закомментирую все поля,то все проходит. Одним словом,непонятная ситуация. Хотел код выложить,но из-за хтмл ссылок не могу. Смотрел на наличие BOM, его тоже не нашел.

  Ответить  
 
 автор: cheops   (17.02.2012 в 16:05)   письмо автору
 
   для: PeLeg   (17.02.2012 в 15:52)
 

А сообщение об ошибке как выглядит?

PS Ограничения на публикацию ссылок действуют лишь короткое время после регистрации, сейчас они уже должны быть с вас сняты.

  Ответить  
 
 автор: PeLeg   (19.02.2012 в 06:51)   письмо автору
 
   для: cheops   (17.02.2012 в 16:05)
 

Вот выводит это сообщение:
Parse error: syntax error, unexpected T_STRING in /ftp_aerium-02/indigobook_616/indigobook.xe0.ru/FrameWork/classes/CField.Select.php on line 1

Думаю, что здесь ошибка ,скорее всего, не на 1-ой строке, а в теле класса, но где эта ошибка я так и не могу понять, на локальном хосте все работает отлично, а на веб-хосте вышеназванная ошибка, короче, выкладываю сам код:
Файл CField.Select.php


<?php

class CSelect extends CField
{

//Переменные класса

//Количество пунктов в списке
public $size;
//Возможность выбрать несколько пунктов
public $multiple;
//Значение по умолчанию
public $selected;
//Массив имен пунктов
public $option;


//Методы класса


//Конструктор класса
  
function __construct($name="",$caption="",$option="",$help_url="",$help="",$selected="",$multiple="",$size="1")
  {
//Конструктор базового класса для инициализацмм его членов
   
parent::__construct($name,$type=" ",$caption,$value="",$obligate="",$help,$help_url);
//Инициализация членов производного класса
   
$this->size=$size;
   
$this->multiple=$multiple;
   
$this->selected=$selected;
   
$this->option=$option;
   
     if((
$this->multiple===true)|($this->multiple=="on"))   $this->multiple="multiple";
     else 
$this->multiple=" ";
    
  }
  
//Метод, возврашающий массив-имя поля,ссылку на помощь и код формы  
  
function get_field()
  {
 
   
$tag="<select   name=".$this->name." size=".$this->size." ".$this->multiple.">";
   foreach(
$this->option as $key=>$opt)
   {
      
      
$tag.= "<option value=".htmlspecialchars($opt,ENT_QUOTES)." ";
      
      if(
$key==$this->selected){$sel="SELECTED";}
      else{
$sel=" ";}
      
      
$tag.=" ".$sel." >".$opt."</option>";
      
   }
      
$tag.="</select>";
   
   
$help="<a href=".$this->help_url.">".$this->help."</a>";
   
$mas=array($this->caption.": ",$tag,$help);
   
   return 
$mas;
  }

//Метод, возврашающий сообщение с ошибкой или пустую строку при удачном заполнении 
   
function get_error()
  { 
   
     return 
"";
  }
};
?>

  Ответить  
 
 автор: cheops   (19.02.2012 в 11:23)   письмо автору
 
   для: PeLeg   (19.02.2012 в 06:51)
 

А файл CField.Select.php как-то включается в код? При помощи include или require?

PS Попробуйте еще точку с запятой в конце классов убрать, в PHP она не обязательна.

  Ответить  
 
 автор: PeLeg   (19.02.2012 в 14:27)   письмо автору
 
   для: cheops   (19.02.2012 в 11:23)
 

Залил я этот файл в текстовый редактор , а там он появлялся как в одной строке и я сделал брейклайн после <?php,опять залил на хостинг и не заработал,потом еще удалил точку запятую, все заработало, но у меня сомнения, что это не надолго, так как другие классы работают с точками запятыми. Так и не понял , дело было в точке запятой или в чем? использую редактор PSpad, до этого никаких глюков подобных не вызывало, вот собственно сама страница, там на странице регистрации этот класс в полях выбора дня рождения.

http://indigobook.xe0.ru

Могли бы вы дать заключительный совет по данной проблеме, чтобы не наступить на подобные грабли )?

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

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