Welcome Guest, Not a member yet? Register   Sign In
[SOLVED] form validation problem
#1

[eluser]Lord_Jago[/eluser]
Hi everybody,

I have a problem while validating my form. In my config file, the uri_protocol is set to AUTO.
When I try to submit my form, the URL becomes something like http://www.toto.fr/index.php/nodes/edit/...auvegarder, the validation errors are not displayed and my form is not validated.

I don't see what's wrong... By the way, I use datamapper. Any ideas ?

(Sorry if my English is not perfect)

The form :
Code:
<?php echo validation_errors(); ?>
<form action="<?php echo site_url("nodes/edit/$node_id"); ?>">
   <label for="title">Titre <span class="required">*</span></label>
   &lt;input type="text" name="title" id="title" size="30" value="&lt;?php echo set_value('title'); ?&gt;"/&gt;
   <br/>
   <label for="teaser">Teaser</label>
   &lt;textarea name="teaser" id="teaser" cols="30" rows="5"&gt;&lt;?php echo set_value('teaser'); ?&gt;&lt;/textarea&gt;
   <br/>
   <label for="ntype">Type <span class="required">*</span></label>
   <select name="ntype" id="ntype">
      <option value="&lt;?php echo $ntype_id; ?&gt;">&lt;?php echo $ntype_label; ?&gt;</option>
   </select>
   <br/>
&lt;/form&gt;


The controller :
Code:
class Nodes extends Controller {

   function Nodes() {
      parent::Controller();
   }

   function edit($node_id) {

      $this->output->enable_profiler(TRUE);
      
      if (!is_numeric($node_id)) {
         show_error("Unkown node !");
      }

      $node = new Node();
      $node->where('id', $node_id)->get();
      $node->ntype->get();

      if (!$node->exists()) {
         show_error("Unkown node !");
      }

      $data = array(
         'node_id'      => $node->id,
         'ntype_id'     => $node->ntype_id,
         'ntype_label'  => $node->ntype->label,
         'ntype_name'   => $node->ntype->name,
      );
      
      $this->load->library('form_validation');
      
      $this->form_validation->set_rules('title', 'Titre', 'trim|required');
      $this->form_validation->set_rules('teaser', 'Teaser', 'trim');
      $this->form_validation->set_rules('ntype', 'Type', 'required');

      if ($this->form_validation->run() == FALSE) {
     $this->load->view('nodes/v_node', $data);
         $this->load->view('nodes/v_node_end', $data);
      }
      else {
         $node->title = $this->input->post('title');
         $node->teaser = $this->input->post('teaser');

          if (!$node->save()) {
            show_error("An error occured while saving the node !");
         }

     $this->load->view('formsuccess');
      }
   }
#2

[eluser]adamp1[/eluser]
By default if you don't specify a method for a form to use it will use GET. For this reason I would use the CodeIgniter Form helper to create your forms.

Code:
print form_open('nodes/edit/' . $node_id);

Or just change your code to read

Code:
&lt;form action="&lt;?php echo site_url("nodes/edit/$node_id");?&gt;" action="POST"/&gt;
#3

[eluser]Lord_Jago[/eluser]
Thank you very much adamp1 !! I feel so stupid...

It was
Code:
&lt;form action="&lt;?php echo site_url("nodes/edit/$node_id");?&gt;" method="POST"/&gt;

Problem solved !




Theme © iAndrew 2016 - Forum software by © MyBB