2016-01-27 2 views
1

каждый раз, когда я пытаюсь вставить данные, я получаю два раза или три раза в базе данных, второй раз вместо данных, значение 0 встает. Мне тоже нужно вставить данные, используя кнопку submit.but, но она не работает.данные двойного времени вставляются в mysql

hello_con.php

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 
class Hello_con extends CI_Controller { 

    /** 
    * Index Page for this controller. 
    * 
    * Maps to the following URL 
    *  http://example.com/index.php/welcome 
    * - or - 
    *  http://example.com/index.php/welcome/index 
    * - or - 
    * Since this controller is set as the default controller in 
    * config/routes.php, it's displayed at http://example.com/ 
    * 
    * So any other public methods not prefixed with an underscore will 
    * map to /index.php/welcome/<method_name> 
    * @see http://codeigniter.com/user_guide/general/urls.html 
    */ 
    public function index() 
    { 
     //$this->load->view('heloo_view'); 
    } 

    public function heloo() 
    { 

     $this->load->view('heloo_view'); 
     $user=$this->input->post('user'); 

     $user = array(
       'user_name'=>$user 
       ); 

     $this->load->model("heloo_model"); 
     $this->heloo_model->insert_user($user); 
     return $user; 
     echo "hi, welcome:"."$user"; 
    } 
} 

/* End of file welcome.php */ 
/* Location: ./application/controllers/welcome.php */ 

heloo_model.php

<?php 
class Heloo_model extends CI_Model { 


    public function insert_user($user) 
    { 
     $this->load->database(); 
     $this->db->insert("userdetail",$user); 

    } 

} 
?> 

heloo_view.php

<html> 
<head> 
<title>heloo world</title> 
</head> 
<body> 
<p>welcome to heloo world</p> 

<form method="post"> 
Enter your name: 
<input type="text" name="user" placeholder="enter your name"> 
<input type="submit" name="submit" value="sub"> 
</form> 
</body> 
</html> 
+0

Вам необходимо подтвердить, что он будет вставлять строку, даже если вы не отправили форму. –

+0

удалить атрибут имени из кнопки отправки. –

ответ

2

Вы можете использовать его как:

public function heloo() 
{ 
    if(isset($this->input->post('user'))){ 
     $user = $this->input->post('user'); 

     $insert = array(
      'user_name'=>$user 
     ); 

     $this->load->model("heloo_model"); 
     $this->heloo_model->insert_user($insert); 
     echo "hi, welcome:".$user; 
    } 

    $this->load->view('heloo_view'); 
} 

Проблемы в коде:

  1. Вы получаете пустые строки в базе данных, потому что вы не проверять данные, вам нужно, чтобы подтвердить либо получить от должности, либо нет.
  2. Вы эхом отдаете «привет, добро пожаловать» после использования return, он не может быть указан с именем пользователя из-за return.
  3. Всегда загружайте файл вида в конце функции не сверху.
2

Вам необходимо проверить пользователя, как он будет вставить строку, даже если вы не представили форму.

Заменить Heloo() с этим:

public function heloo() 
{ 
    // User will be false if there wasn't any post data 
    $user=$this->input->post('user'); 

    if($user !== false) { 
     // The form was submitted 
     $user = array(
      'user_name'=>$user 
     ); 

     $this->load->model("heloo_model"); 
     $this->heloo_model->insert_user($user); 

     echo "hi, welcome:"."$user"; 
    } else { 
     // The form needs to be shown here 
     $this->load->view('heloo_view'); 
    } 
} 

Этот код будет показывать форму на начальном этапе, пока пользователь не отправляет форму и создает строку.

Смежные вопросы