CodeIgniter - Проверка, чтобы проверить, установлен ли переключатель в базе данных. - PullRequest
0 голосов
/ 02 декабря 2010

У меня возникли некоторые проблемы при сборке кода ... Что я пытаюсь сделать, это добавить код в код, который у меня есть на данный момент, для проверки радиокнопок, которые проверены в базе данных.

Код, который у меня есть на данный момент, берет все роли из базы данных, выводит их, используя оператор foreach, но также разбивает результаты на 2 столбца, это то, что у меня есть в данный момент.

<?php
$i = 0;
$output = "";
foreach($roles as $row){
    if($i > 0){
        $i = 0;
    }
    if($i == 0) {
        $output .= "<div class='box'>";
    }

    $output .= '<div class="row">';
    $output .= '    <input name="_'.$row->key.'" type="radio" id="'.$row->key.'" class="radio" />';
    $output .= '    <label for="'.$row->key.'" style="text-transform: lowercase;">'.$row->name.'</label>';
    $output .= '</div>';

    if($i ==0) {
        $output .= "</div>";
    }

    $i++;
}
if($i != 1) {
    $output .= "</div>";
}
echo $output;

?>

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

Модель

    function get_roles_by_id($freelancerid)
{
    $query = $this->db->query('SELECT * FROM '.$this->table_name.' WHERE user_id = "'.$freelancerid.'"');
    return $query->result();
}

Тогда мой контроллер выглядит так

$data['positions'] = $this->freelancer_roles->get_roles_by_id($freelancer_id);

Поскольку это возвращает массив, я не могу использовать оператор foreach для проверки идентификаторов переключателей, которые возвращаются в массиве положений.

Может ли кто-нибудь помочь мне понять это.

Приветствия

1 Ответ

0 голосов
/ 03 мая 2011

Мне кажется, я понимаю ваш вопрос, и кажется, что вы пытаетесь сделать это довольно просто.Если

Ваша модель должна возвращать только массив имен флажков, сохраненных пользователем в следующем формате: массив ("checkbox1", "checkbox2", "checkbox3"), а затем вы выводитеможете просто использовать встроенную функцию php in_array ()

, например:

   $output .= '<div class="row">';
   $output .= '    <input name="_'.$row->key.'" type="radio" id="'.$row->key.'" class="radio"';
   if(in_array($row->name, $data['positions']) { $output .= ' checked '; }
   $output . = '/>';
   $output .= '    <label for="'.$row->key.'" style="text-transform: lowercase;">'.$row->name.'</label>';
   $output .= '</div>';

В качестве примечания, у вас есть следующий код:

if($i > 0){
        $i = 0;
    }
    if($i == 0) {
        $output .= "<div class='box'>";
    }

Если выследуя логике в этом коде, вы увидите, что $ i всегда будет равняться 0 для второго оператора if, делая оба оператора if избыточными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...