2014-09-26 3 views
-1

Я пытаюсь создать ereg для опции select в ориентированном на объект программировании для проверки. Хотя он всегда возвращает true, хотя выбранный параметр не является частью ereg!Ereg on OOP select option

В моем классе я следующее:

function makeSelect($category, $fieldName){ 
    $a = '<div>'."\n"; 
    $a .= "<select name='$fieldName'>"."\n"; 
    $a .= "<option value='' selected='true' disabled='disabled'>Pick Category</option>\n"; 
    foreach ($category as $value){ 
     $a .= "<option value='$value'>$value</option>"."\n"; 
     } 
    $a .= "</select>"."\n"; 
    $a .= "</div>"."\n"; 
    return $a; 
} 

function checkSelect($selectName){ 
    if(ereg('^[Pick]', $selectName)){ 
     $this->messageArray[$selectName] = "<span class='fail'>Please select field</span>"; 
     $this->testArray[$selectName] = false; 
    } 
    else { 
     $this->messageArray[$selectName] = "<span class='ok'>Sweet</span>"; 
     $this->testArray[$selectName] = true; 
    } 
} 

В моем главном файле я устанавливаю массив в качестве

$category = array(
    1=>'First Category', 
    2=>'Second Category', 
    3=>'Third Category', 
    4=>'Fourth Category' 
    ); 

И вызов функции checkSelect в

$oForm->checkSelect('category'); 
+3

** Предупреждение: Эта функция была DEPRECATED с PHP 5.3.0. Опираясь на эту особенность крайне не рекомендуется. ** – 2014-09-26 03:41:02

ответ

0

С вызовом $oForm->checkSelect('category'); ваше выражение будет выглядеть как ereg('^[Pick]', 'category'), следовательно, это будет всегда правда".

Я думаю, что вам нужно передать значение из формы, но не имя элемента. Например.

$oForm->checkSelect($_POST['category']); 

P.S. вы можете переписать его на не устаревший код легко

preg_match('/^[Pick]/', $selectName) 

P.P.S. лучше переименовать $selectName в $selectedValue. Вы пытаетесь проверить значение, но имя.

P.P.P.S. Кроме того, ваш шаблон не будет соответствовать вашим значениям.