简体   繁体   中英

how to repopulating a dropdown in codeigniter after form validation fails?

<select style="width:25%;" name='state' <?php if(form_error('state') != '') {  echo 'id=error'; } ?>>
<option value=''>State</option>
 <?php  foreach($states->result() as $row)
 {
 echo "<option value='$row->state_name'>". $row->state_name."</option>";
 }  ?>
</select>

hi, i am facing problem in the above code, please help me, set_value is not working for me, dropdown is not populating after form validation fails , thanks in advance or

does something like this works, here target is hidden value. now how to set target value to drop down value(option value)

  <script>
    window.onload = function (){
    target=document.getElementById('target').value;
        if(target.length!=''){
   // document.getElementByName('state').value=target;
        }
    }
    </script>

According to the manual:

<select name="myselect">
        <option value="one" <?php echo  set_select('myselect', 'one', TRUE); ?> >One</option>
        <option value="two" <?php echo  set_select('myselect', 'two'); ?> >Two</option>
        <option value="three" <?php echo  set_select('myselect', 'three'); ?> >Three</option>
</select>

In your case

<select style="width:25%;" name='state' <?php if(form_error('state') != '') {  echo 'id=error'; } ?>>
<option value=''>State</option>
 <?php  foreach($states->result() as $row)
 {
 echo "<option value='$row->state_name' " . set_select('state', $row->state_name) . " >". $row->state_name."</option>";
 }  ?>

</select>

[UPDATE]

<select style="width:25%;" name='state' <?php if(form_error('state') != '') {  echo 'id=error'; } ?>>
    <option value=''>State</option>
     <?php  
$defaultvalue = 'Nigeria'; //Please set default value here when nothing is selected before submit - change Nigeria
foreach($states->result() as $row)
     {
     echo "<option value='$row->state_name' " . set_select('state', $row->state_name, ((!isset(set_select('state', $row->state_name)) &&  ($row->state_name == $defaultvalue) ) ? TRUE : FALSE )) . " >". $row->state_name."</option>";
     }  ?>


</select>

Just remove TRUE from set_select if you don't want to set a default value

If you use a menu, this function permits you to display the menu item that was selected. The first parameter must contain the name of the select menu, the second parameter must contain the value of each item, and the third (optional) parameter lets you set an item as the default (use boolean TRUE/FALSE).

If you use form helper function, you can do the following.

form_dropdown('name', $options, set_value('name', 'default'))

set_value will select the option value if post with 'name' was submitted last time. If not, it will set it with 'default' value.

为什么不使用post值?

echo form_dropdown('name', $options, $this->input->post('name'));

Here we have a better way for populating select value after a form validation run FALSE In Codeigniter. Here is the CODE Snippet.

Following is my Controller.

function index() {
    $this->load->view('welcome_message');
}

function form_validation() {
    $this->load->library('form_validation');
    $this->form_validation->set_rules('name', 'Name', 'trim|required');
    $this->form_validation->set_rules('gender', 'Gender', 'trim|callback_check_if_gender_selected');

    if ($this->form_validation->run() == FALSE) {
        $this->index();
    } else {
        $this->load->view('validation_passed');
    }
}

function check_if_gender_selected($value) {
    if ($value == "0") {
        $this->form_validation->set_message('check_if_gender_selected', 'Please Select Gender');
        return FALSE;
    } else {
        return TRUE;
    }
}

My Views

  1. Form View -(Note: I tried to paste my code but there was a problem with pasting, So here I am Proving a picture of my code. click on Image to see code better.)

表格视图代码

Validation Passed View

Welcome Validation Passed.

<?php echo "<br />" . "Name Value = " . set_value('name') . "<br />"; ?>
<?php echo "Gender Value = " . set_value('gender'); ?>

You should be using set_select() , not set_value() . Unless your form validation isn't firing at all..

<select style="width:25%;" name='state' <?php if(form_error('state') != '') {  echo 'id=error'; } ?>>
<option value=''>State</option>
 <?php  foreach($states->result() as $row)
 {
 echo '<option value="$row->state_name" ' . set_select('state', $row->state_name) . '>'. $row->state_name."</option>";
 }  ?>
</select>

Let me know if that's still not working, and it's perhaps something to do with the Form Validation not firing (unless id="error" is showing).

    <select style="width:25%;" name='state' <?php if(form_error('state') != '') {  echo 'id=error'; } ?>>
    <option value=''>State</option>
     <?php  foreach($states->result() as $row)
     {
     echo "<option value='$row->state_name' " . set_select('state', $row->state_name) . " >". $row->state_name."</option>";
     }  ?>

    </select>

This worked for me. Thanks for the answer @jornsen.

 <option value="<?= $row->state_name ?>" ><?= $row->state_name ?></option>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM