|
|
|
| Ситуация такая,необходимо написать класс самораскрывающего окошка с передачей заранее определенных параметров через конструктор:
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",...),...); ? | |
|
|
|
|
|
|
|
для: PeLeg
(17.02.2012 в 14:46)
| | Не понятно, что вызывает трудности? Так и создавайте, как вы указали, присваивая массива следующим образом
$this->arr_elements = $arr_elements;
|
| |
|
|
|
|
|
|
|
для: cheops
(17.02.2012 в 15:13)
| | Но,это вызывает ошибку,на локалке все проходит штатно,но на хостинге -чтобы я не делал выдает ошибку,где,по сути, и ошибки не нашел,просто указывает на первую строку. Когда закомментирую все поля,то все проходит. Одним словом,непонятная ситуация. Хотел код выложить,но из-за хтмл ссылок не могу. Смотрел на наличие BOM, его тоже не нашел. | |
|
|
|
|
|
|
|
для: PeLeg
(17.02.2012 в 15:52)
| | А сообщение об ошибке как выглядит?
PS Ограничения на публикацию ссылок действуют лишь короткое время после регистрации, сейчас они уже должны быть с вас сняты. | |
|
|
|
|
|
|
|
для: 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 "";
}
};
?>
|
| |
|
|
|
|
|
|
|
для: PeLeg
(19.02.2012 в 06:51)
| | А файл CField.Select.php как-то включается в код? При помощи include или require?
PS Попробуйте еще точку с запятой в конце классов убрать, в PHP она не обязательна. | |
|
|
|
|
|
|
|
для: cheops
(19.02.2012 в 11:23)
| | Залил я этот файл в текстовый редактор , а там он появлялся как в одной строке и я сделал брейклайн после <?php,опять залил на хостинг и не заработал,потом еще удалил точку запятую, все заработало, но у меня сомнения, что это не надолго, так как другие классы работают с точками запятыми. Так и не понял , дело было в точке запятой или в чем? использую редактор PSpad, до этого никаких глюков подобных не вызывало, вот собственно сама страница, там на странице регистрации этот класс в полях выбора дня рождения.
http://indigobook.xe0.ru
Могли бы вы дать заключительный совет по данной проблеме, чтобы не наступить на подобные грабли )? | |
|
|
|