2012-09-04 3 views
2

현재 codeigniter를 사용하여 데이터베이스에 데이터를 추가하려고합니다. 이미 활성 메소드를 사용하여 등록 페이지를 설정하고 뉴스 추가 양식에 대해 동일한 메소드를 사용하려고했지만 실패했습니다.codeigniter를 사용하여 데이터베이스에 데이터 추가

제출을 클릭하면 페이지를 찾을 수 없다는 메시지가 표시되고 url에 컨트롤러 기능 이름이 표시됩니다. 이것은 의도적으로 필드를 공백으로 두었을 때와 동일합니다. 데이터베이스를 검사했는데 레코드가 추가되지 않았으며 PHP 로그 오류도 없었습니다.

보기 :

<?php echo form_open('add/add_article'); ?> 
     <?php echo form_input('title', set_value('title', 'Title')); ?><br /> 
     <?php echo form_textarea('content', set_value('content', 'Content')); ?><br /> 
     <?php echo form_input('author', set_value('author', 'Author')); ?> 
     <?php echo form_submit('submit', 'Add Article'); ?> 
     <?php echo validation_errors('<p class="error">');?> 
    <?php echo form_close(); ?> 

컨트롤러 :

class Add extends CI_Controller { 

    public function __construct() { 
     parent::__construct(); 
    } 

    public function index() { 
     $this->load->view('admin/add'); 
} 

    public function add_article() { 
     $this->load->library('form_validation'); 

     $this->form_validation->set_rules('title', 'Title', 'trim|required'); 
     $this->form_validation->set_rules('content', 'Content', 'trim|required'); 
     $this->form_validation->set_rules('author', 'Author', 'trim|required'); 

     if($this->form_validation->run() == FALSE) { 

     $this->index(); 

     }else{ 

      $this->load->model('news_model'); 
      if($query = $this->news_model->addArticle()) { 
      $this->load->view('news'); 
      }else { 
       $this->load->view('news'); 
     } 
    } 
} 
} 

모델 :

대신 삽입 사용 업데이트
public function __construct() { 
    parent::__construct(); 
} 

     function addArticle() { 
    $data =array(
    'title' => $this->input->post('title'), 
    'content' => $this->input->post('content'), 
    'author' => $this->input->post('author'), 
    'username' => $this->input->post('username')); 

    $insert = $this->db->insert('news', $data); 
    return $insert; 
} 
} 
+0

양식의 작업에서 원본으로 무엇을 볼 수 있습니까? –

+0

소스에서 내가 add_controller와 add_article 함수를 추가하려고하는 것을 알고 있습니다. localhost/codeigniter/add/add_controller 그리고 페이지를 찾을 수 없다는 것은 무엇을 의미합니까? Ive는 if 문의 컨트롤러에서 리디렉션을 사용해 보았습니다. – Shimsham84

+0

'echo form_open ('index.php/add/add_article ');' –

답변

3

페이지를 던지고있는 서버가 발견되지 않으면 CI/PHP 문제가 아니라 URL 문제 일 가능성이 큽니다.

기본 URL이 설정 파일에 올바르게 정의되어 있습니까? .htaccess이 올바르게 구성 되었습니까 (이전 구성은 CI에서 요청을 라우팅/추가 할 수 있습니다)?

시도 추가 컨트롤러에 다음과 같은 조치를 추가하고 여전히 페이지가 코드 아니라를 찾을 수없는 말한다면 http://[base]/add/thetest

public function thetest() { 
echo 'Controller accessed'; 
die; 
} 

에서 직접 탐색, 그것은 당신의 설정 (서버 설정 중 하나입니다 또는 CI).

+0

나는 이것을 시험해 보았을 때 여전히 CI 페이지를 던졌다. url은 add/the test에 대한 관리자를 추가하지 않았고 echo가 발견되어서 이제는 내 컨트롤러의 쿼리 인 경우 폼에 "admin"을 추가했다. . 고맙습니다. – Shimsham84

0

모델의 다음

의 코드 내 조각이다 like :

$insert = $this->db->update('news', $data); 
return $insert; 

그리고 (문없이 데이터 모델링 보내는 경우 잘못) 내가 컨트롤러 코드의이 부분은 잘못도 있다고 생각 :

if($query = $this->news_model->addArticle()) { 
      $this->load->view('news'); 
      }else { 
       $this->load->view('news'); 
     } 

이 시도 :

$data =array(
    'title' => $this->input->post('title'), 
    'content' => $this->input->post('content'), 
    'author' => $this->input->post('author'), 
    'username' => $this->input->post('username') 
); 

$query = $this->news_model->addArticle($data); 
if($query) 
{ 
    // query ok 
    $this->load->view('news'); 
} 
else { 
    // no query 
    $this->load->view('news'); 
} 
+0

앞으로이 스 니펫을 저장했습니다. 참조하지만 $ insert = $ this-> db-> update ('news', $ data)를 사용할 때; 이 새로운 행을 추가하는 대신 데이터베이스의 모든 레코드를 업데이트했습니다. – Shimsham84

관련 문제