Codeigniter set_value() and populate the form value

user1854438 picture user1854438 · Feb 3, 2013 · Viewed 33.5k times · Source

My form field looks like this

    echo form_label('Quantity', 'quantity');
    echo form_input('quantity', $quantityx);

I modified it to retain form values

    echo form_label('Quantity', 'quantity');
    echo form_input('quantity', $this->input->post('quantity'));

I set the $quantityx above in the code behind in order to populate a value from the database so a user can edit a row.

How can I retain the value for validations, and have a variable to populate from the database at the same time?

I have tried this a well

    echo form_label('Quantity', 'quantity');
    echo form_input('quantity', set_value($quantityx));

Thanks for any suggestions

Answer

tomexsans picture tomexsans · Feb 3, 2013

You can set them like this, if set_value('columnanme') returns false then a form $_POST did not take place so what it will do is get the data from the data base example $profile->firstname

$firstname = set_value('firstname') == false ? $profile->firstname : set_value('firstname');
$lastname = set_value('lastname') == false ? $profile->lastname : set_value('lastname');

Use it like:

echo form_label('Firstname', 'fname');
echo form_input('firstname', $firstname);
echo form_label('Firstname', 'lnamey');
echo form_input('firstname', $lastname);

in your case you can do:

$quantity = set_value('Quantity') == false ? $quantityx : set_value('Quantity');

ANd on your form:

echo form_label('Quantity', 'quantity');
    echo form_input('quantity', $quantity);

Assuming that $quantityx holds the data from your databse

EDIT
=============================================

Just use set_values() second parameter as the default value. i.e set_value('name_of_input_field',$data_from_databse_as_default); If this does not work, then use my first answer.