codeigniter заполняет форму из базы данных

В контроллере у меня...

function update($id = null)
{
    $this->load->database();

    // more code

    $data = array();
    $data = $this->db->get_where(
            'users',
            array(
            'id' => $id
            )
        );
    $data = $data->result_array();
    $data = $data[0];

    // more code

    $this->load->view('update', $data);
}

В представлении у меня...

<h5>Username</h5>
<input type="text" name="username" value="<?php echo set_value('username'); ?>" size="50" />

<h5>Email</h5>
<input type="text" name="email" value="<?php echo set_value('email'); ?>" size="50" />

<h5>Email Confirmation</h5>
<input type="text" name="emailconf" value="<?php echo set_value('emailconf'); ?>" size="50" />

<h5>Password</h5>
<input type="text" name="password" value="<?php echo set_value('password'); ?>" size="50" />

<h5>Password Confirmation</h5>
<input type="text" name="passconf" value="<?php echo set_value('passconf'); ?>" size="50" />

set_value() не читает $data

поиск значения = ""

на http://codeigniter.com/forums/viewthread/103837/

Плакат использует только функцию set_value() между "" в value="".

Мне интересно, как сделать то же самое, но я не могу заставить его работать. Помощь?


person Delirium tremens    schedule 26.05.2009    source источник
comment
Почему вы берете данные в контроллере, а не в модели?   -  person eyelidlessness    schedule 29.11.2009
comment
потому что он (мы) может... и хочет. ;)   -  person Stephen Cox    schedule 18.04.2011


Ответы (5)


set_value требует 2 параметра. имя поля И значение.

Тебе нужно:

value="<?php echo set_value('username', $username); ?>"

предполагая, что вы передаете $data['username'] и т. д.

person Community    schedule 06.04.2010
comment
Это правильный ответ. Он заботится о случае предварительного заполнения формы из базы данных + заполнения пользовательского ввода для проверки формы. - person Stewie; 17.05.2011
comment
Это правильно, но еще одна вещь сэкономит вам массу времени, если вы замените код System/helpers/set_value, как это предлагается здесь codeigniter.com/forums/viewthread/159535/#775628, чтобы избежать проблем при повторном заполнении формы, когда правило не существует. - person UserBSS1; 29.09.2013

Я думаю, что вы неправильно передаете значение в представление.

В Контроллере поставить:

$data = $this->db->get_where(
        'users',
        array(
        'id' => $id
        )
    );
$data = $data->result_array();

$data['result'] = $data[0];

затем внутри представления:

<h5>Password Confirmation</h5> <input type="text" name="passconf" value="<?php echo $result['passconf']; ?>" size="50" />
person Pedro    schedule 26.05.2009

Попробуй это:

Контроллер:

$data = array();
$data = $this->db->get_where(
        'users',
        array(
        'id' => $id
        )
    );
$data = $data->result_array();
$data['view_username'] = $data['username'];

Вместо использования $date[0] я использую имя столбца, но это ваше решение.

Вид:

<h5>Username</h5> <input type="text" name="username" value="<?=$view_username?>" size="50"/>

<?= => — это короткий тег PHP, читайте об этом в руководстве пользователя codeigniter.

С уважением,

Сильвио

person Community    schedule 28.05.2009

set_value() предназначен для работы с проверкой формы CI.

Когда форма загружается впервые, set_value() может заполнить поле значением по умолчанию, используя свой второй параметр. После отправки формы вы можете снова отобразить форму, и поле будет заполнено значением, которое было отправлено, если оно было проверено на предмет проверки.

См. также http://codeigniter.com/forums/viewthread/96617/ — есть несколько ошибок с set_value(), которые не проясняются в документах.

Пока применимо до CI 1.7.3.

person markd    schedule 20.01.2011

Попробуйте присвоить значения по умолчанию переменной $_POST в вашем контроллере, например. $_POST['email'] = 'email';

person fcai    schedule 08.03.2011
comment
Вы не можете установить какие-либо значения $_POST. - person Rid Iculous; 08.12.2016