Search code examples
phpcodeignitercodeigniter-3codeigniter-query-buildercodeigniter-form-validation

How model can save data from controller in Codeigniter


I have a web application that need to send message to many friends.But i suffer an error..please help me....

Here below is the my controller

public function message(){

$this->form_validation->set_rules('message','Message', 'required');
$this->form_validation->set_rules('friend_id[]','Recipients', 'required');
if($this->form_validation->run()){
     $data = $this->input->post("friend_id[]");
    unset($data['submit']);
    $this->load->model('Queries');
    $message=$this->Queries->saveMessage();
    if($message){
    echo "Success";
    }else{
    echo "error";
    }

     }
     else{ 
     echo validation_errors();
        }
     }

This is My Model

 public function saveMessage($data){
     $i=0;
     foreach($data['friend_id'] as $friend_id){

          $record = array(
          'friend_id' => $friend_id,
          'message' => $data['message']
          );
          $this->db->insert('tbl_messages', $record);
          $i++;
             }
              return $data;
          }

When i run it..it display error and no data is inserted in database


Solution

  • Hope this will help you :

    Your controller method message() should be like this :

    public function message()
    {
        $this->form_validation->set_rules('message','Message', 'required');
        $this->form_validation->set_rules('friend_id[]','Recipients', 'required');
        if($this->form_validation->run())
        {
            $friend_ids = $this->input->post("friend_id[]");
            $message = $this->input->post("message");
            unset($data['submit']);
            $this->load->model('Queries');
            $insert = $this->Queries->saveMessage($friend_ids, $message);
            if($insert)
            {
                echo "Success";
            }
            else
            {
                echo "error";
            }
         }
         else
        { 
         echo validation_errors();
        }
    }
    

    Your model method saveMassage() should be like this :

    public function saveMessage($friend_ids , $message)
    {
        foreach($friend_ids as $friend_id)
        {
            $record = array('friend_id' => $friend_id,'message' => $message);
            $this->db->insert('tbl_messages', $record);
        }
        return true;
    }