gibbo1715 Posted December 14, 2009 Share Posted December 14, 2009 Hi Folkes This is driving me nuts, probably because it is the last thing I need to figure out before i am able to have something working in php/ code igniter for the first time i have a list with an edit button that opens my edit page where i can edit items submit and all works fine. Then I tried to do form_validation, and i can get the validation error messages working fine, what i cant do is get the page to remember what record it is on when the validation fails and the url refreshes without the record number (Which i guess is my problem, i.e. http://localhost/index.php/books/input/6 becomes http://localhost/index.php/books/input if the form_validation fails If anyone can offer me some assistance i would be vbery greatfull My view is as follows <html> <head> <link rel="stylesheet" type="text/css" href="<?php echo "$base/$css"?>"> </head> <body> <div id="header"> <? $this->load->view('books_header'); ?> </div> <div id="menu"> <? $this->load->view('books_menu'); ?> </div> <table border="1"> <tr> <th colspan="2" ALIGN="center"><? echo heading($forminput,3) ?> <? if((int)$fid['value'] > 0){ echo 'Policy: ' .$fid['value']; } else { echo 'New Entry'; } ?></th> </tr> <? echo form_open('books/input'); ?> <? echo form_hidden('id',$fid['value'], set_value('id'));?> <tr> <th><? echo $title ?> </th> <th><? echo form_input($ftitle, set_value('title')).br();?> <?//echo set_value('$title'); ?> <!--Validation from my form_validation.php file in the config folder--> <?php echo form_error('title'); ?> </th> </tr> <tr> <th><? echo $author ?> </th> <th><? echo form_input($fauthor, set_value('author')).br(); ?> <!--Validation from my form_validation.php file in the config folder--> <?php echo form_error('author'); ?> </th> </tr> <tr> <th><? echo $publisher ?> </th> <!--Validation from my form_validation.php file in the config folder--> <th><? echo form_input($fpublisher, set_value('publisher')).br(); ?> <?php echo form_error('publisher'); ?> </th> </tr> <tr> <th><? echo $year ?> </th> <th><? echo form_dropdown('year',$years, set_value($fyear['value'])).br(); ?> </th> </tr> <tr> <th><? echo $available ?> </th> <th><? echo form_checkbox($favailable, set_value('available')).br(); ?> </th> </tr> <tr> <th><? echo $summary ?> </th> <th><? echo form_textarea($fsummary, set_value('summary')).br(); ?> </th> </tr> <tr> <th colspan="2" ALIGN="right"> <? if((int)$fid['value'] > 0){ echo form_submit('mysubmit','Update Record'); } else { echo form_submit('mysubmit','Add Record'); } ?> <? //echo form_submit('mysubmit','Submit!'); ?></th> </tr> </table> <? echo form_close(); ?> <div id="footer"> <? $this->load->view('books_footer'); ?> </div> </body> </html> And my controller for that view <?php class Books extends Controller{ function Books(){ parent::Controller(); $this->load->model('books/books_model'); } function main(){ $data = $this->global_model->general(); $data['query'] = $this->books_model->books_getall(); $this->load->view('books_main',$data); } function input($id = 0){ $data = $this->global_model->general(); $this->form_validation->set_error_delimiters('<div class="error">', '</div>'); if((int)$id > 0){ $query = $this->books_model->get($id); $data['fid']['value'] = $query['id']; $data['ftitle']['value'] = $query['title']; $data['fauthor']['value'] = $query['author']; $data['fpublisher']['value'] = $query['publisher']; $data['fyear']['value'] = $query['year']; if($query['available']=='yes'){ $data['favailable']['checked'] = TRUE; }else{ $data['favailable']['checked'] = FALSE; } $data['fsummary']['value'] = $query['summary']; } if ($this->form_validation->run('books_rules') ==FALSE) { //Get the id somehow here //if ($this->uri->segment(3) === FALSE) $this->load->view('books_input',$data); } else { if($this->input->post('mysubmit')){ if($this->input->post('id')){ $this->books_model->entry_update(); }else{ $this->books_model->entry_insert(); } } $this->form_validation->id = $fid['value']; } } function del($id){ $data = $this->global_model->general(); if((int)$id > 0){ $this->books_model->delete($id); } $data['query'] = $this->books_model->books_getall(); $this->load->view('books_main',$data); } } Many thanks Let me know if i need to put more code here gibbo Quote Link to comment https://forums.phpfreaks.com/topic/185079-codeigniter-validation-refresh/ Share on other sites More sharing options...
gibbo1715 Posted December 14, 2009 Author Share Posted December 14, 2009 All This works for me although feels a bit messy Gibbo if ($this->form_validation->run('books_rules') ==FALSE) { if($this->input->post('mysubmit')){ if($this->input->post('id')){ $data['fid']['value'] = $this->input->post('id'); } } $this->load->view('books_input',$data); } else { if($this->input->post('mysubmit')){ if($this->input->post('id')){ $this->books_model->entry_update(); }else{ $this->books_model->entry_insert(); } } } Quote Link to comment https://forums.phpfreaks.com/topic/185079-codeigniter-validation-refresh/#findComment-976945 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.