Philipp
Philipp

Reputation: 535

Codeigniter - How to populate form from database?

I have a small site which allows a user to enter values in a form and then either submit it directly or store the field values in a template to later submit it. To submit the form later, he can load the previously saved template. For that there are three buttons Load Template / Save Template / Submit form.

Because i am using the form validation built-in functionality from Codeigniter i run into problems when i want to populate the form with a template, which had been previously stored.

The form fields are all set up like

$name = array(
'name'  => 'name',
'id'    => 'name',
'value' => set_value('name', $form_field_values['name'])
);

The variable $form_field_values holds the values from either a loaded template in the case when a template has been loaded or the default values when the form is first loaded.

Initially the form is loaded with the default values. When i click on Load Template the values from the template are not chosen by set_value() because there were the default values in there before. What i want is to replace the values of the form fields with the ones from the template.

Do you have any idea how to do that in a clean approach? What i have done is to introduce a variable to skip the call to set_value() completely like:

$name= array(
'name'  => 'name',
'id'    => 'name',
'value' => $skip_form_validation ? $form_field_values['name'] : set_value('name', $form_field_values['name'])
);

Where $skip_form_validation is a variable set in the controller, based on what button was pressed. Form validation is skipped for saving/loading a template.

Upvotes: 0

Views: 1649

Answers (2)

John-Paul Tademe
John-Paul Tademe

Reputation: 1

Assuming you retrieve the database fields and pass them to a data array in your controller.

$record = $this->data_model->get_record(array('uid' => $user_id), 'users');

if (!is_null($record)) {

   $data['uname'] = $record->username;

   $data['loc'] = $record->location;
}

where 'users' is the database table, and the uid is the id field of the table users.

In your form, do something like this

Hope it helps!

Upvotes: 0

Pankaj Khairnar
Pankaj Khairnar

Reputation: 3108

Codeigniter's set_value() function is a simple function which finds value in $_POST if value found then return else returns second argument, you can remove set_value() and write your own code for it. you can write $_POST['field_name'] if you want to populate value of POST data or add whatever value you want to add Just use like this

$name = array(
    'name'  => 'name',
    'id'    => 'name',
    'value' => $valueFromYourTemplate
);

You don't need to use set_value() function if you don't want to set POST values in the form

Upvotes: 1

Related Questions