user3630439
user3630439

Reputation: 71

form_submit codeigniter not working

So I am having trouble with the form_submit in codeigniter. I have a controller named welcome with a method named email. Whenever I hit my submit button the page refreshes but then just appends ?firstname=&email=&message=&submit=Submit to my url but doesn't carry out the method. Any reason this may be happening?

below is my html code.

                        <form role="form">
                        <div class="form-group">
                            <label>Name</label>

                            <?php $this->load->helper("form"); ?>
                            <?php  echo validation_errors('<p class = "error">'); ?>
                            <?php echo form_open('welcome/email');

                            $data = array('type'=>'text','class'=>'form-control',        'name'=>'firstname');
                            echo form_input($data);
                            ?>
                        </div>
                        <div class="form-group">
                            <label>Email</label>
                            <?php
                            $data = array('type'=>'email','class'=>'form-control', 'name'=>'email');
                            echo form_input($data);
                            ?>
                        </div>
                        <div class="form-group">
                            <label>Message</label>
                            <?php
                            $data= array('type'=>'text','name'=>'message','class'=>'form-control','rows'=>7);
                            echo form_textarea($data);
                            ?>
                        </div>
                        <div class="pull-right">



                        <!--<button type="submit" class="btn btn-custom btn-lg" action="welcome/email">Submit</button> -->
                        <?php

                        echo form_submit('submit','Submit');
                        echo form_close();
                        ?>
                        </div>

This is my controller

<?php /*if ( ! defined('BASEPATH')) exit('No direct script access allowed');*/

    class Welcome extends CI_Controller {



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

    }


    function email(){

        $this->load->library('form_validation');


        $this->form_validation->set_rules('email', 'Email Address','required|valid_email');
        $this->form_validation->set_rules('firstname', 'Name', 'required|min_length[2]|max_length[30]');
        $this->form_validation->set_rules('message', 'Message', 'required|min_length[5]|max_length[200]');

        if ($this->form_validation->run()==FALSE){
            $this->load->view('message not sent');

        }

        else{
            $this->load->library('email');

            $this->email->from(set_value('email'),set_value('name'));
            $this->email->to("[email protected]");
            $this->email->subject('tutoring');
            $this->email->message(set_value('message'));


            $this->email->send();

            echo $this->email->print_debugger();
            $this->load->view('success');
        }


    }
}

Upvotes: 0

Views: 2066

Answers (2)

Rahul Chipad
Rahul Chipad

Reputation: 2411

there is no action parameter in your form tag.how do you submit the form?

try this

<form action="<?= base_url().'welcome/email'?>" role="form" method="post">

Upvotes: 1

cartalot
cartalot

Reputation: 3158

so here

 if ($this->form_validation->run()==FALSE){
        $this->load->view('message not sent');

    }

put in your correct view name where it says 'message not sent'

$this->load->helper("form");

load your helpers in the controller -- better yet do it config/autoload

and this

$data = array('type'=>'text','class'=>'form-control','name'=>'firstname');
 echo form_input($data);

in the form you repeat $data over and over. technically it will work but its going to mess up at some point so make them different names

$first = array('type'=>'text','class'=>'form-control','name'=>'firstname');
 echo form_input($first);

and you need something to show the values in the form again if the validation is false. check out http://www.codeigniter.com/user_guide/libraries/form_validation.html#repopulatingform

Upvotes: 0

Related Questions