제목 | ajax 이용해 데이터베이스에 값 삽입 | ||
---|---|---|---|
글쓴이 | 코드10 | 작성시각 | 2015/07/21 01:51:15 |
|
|||
처음으로 ajax라는 걸 배워서 써먹어보려고 하는데 잘 안되네요. ajax 통해 간단한 숫자를 데이터베이스에 삽입하려고 하는데 어디서부터 잘못된건지 감이 안와요ㅠ 구글 개발자도구를 통해 보니 status code: 500 Internal Server Error 이라는 메세지가 뜹니다. 뭐가 문제일까요?ㅠㅠ 고수님들 신통한 답변 주시면 감사하겠습니다 views ------------------------------------------------------------------------------------------------------------------------------------- <input type="text" class="form-control" id="house_id" value="1230055"> <i style="font-size:30px" id="favorite-add-button" class="glyphicon glyphicon-star-empty"></i> <script> $('#favorite-add-button').click(function(){ $.ajax({ url:'/index.php/test/favorite_add', dataType:'json', type:'post', data:{'house_id':$('#house_id').val()}, success:function(){ alert('success'); } }) }) </script> ------------------------------------------------------------------------------------------------------------------------------------- controllers ------------------------------------------------------------------------------------------------------------------------------------- <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); class Test extends CI_Controller { function __construct(){ parent::__construct(); $this->load->database(); } function index(){ $this->load->view('test'); } function favorite_add(){ $data = $this->input->post('house_id',true); $this->load->model('test_model'); $this->test_model->favorite_add(array( 'favorite' => $house_id )); redirect('test'); } } ?> ------------------------------------------------------------------------------------------------------------------------------------- models ------------------------------------------------------------------------------------------------------------------------------------- <?php class Test_model extends CI_Model { function __construct() { parent::__construct(); } function fovorite_add($option){ $this->db->insert('test',$option); } } ?> ------------------------------------------------------------------------------------------------------------------------------------- database ------------------------------------------------------------------------------------------------------------------------------------- mysql 이구요. test라는 데이터베이스 안에, favorite (varchar 255) 이라는 테이블이 하나 있습니다. 이 테이블에 값을 넣으려고 하는거구요. ------------------------------------------------------------------------------------------------------------------------------------- |
|||
다음글 | 세그먼트 갯수 질문 (2) | ||
이전글 | 코드이그나이터 구성시 공용 기능(로그인, 회원가입등)들... (2) | ||
변종원(웅파)
/
2015/07/21 07:42:17 /
추천
0
|
한대승(불의회상)
/
2015/07/21 09:22:49 /
추천
0
'test' 가 db 인가요? table 인가요? insert() 함수의 첫번째 인자는 table명입니다.
|
코드10
/
2015/07/21 22:50:50 /
추천
0
제가 잘못 적었네요! test 테이블의 favorite 필드에 입력하는게 맞습니다!
$data = $this->input->post('house_id',true); $this->load->model('test_model'); $this->test_model->favorite_add(array( 'favorite' => $data )); 말씀하신대로 할당을 $data로 바꿨는데도 여전히 500 Internal Server Error 가 뜨네요. 데이터베이터도 잘 연결되 있구요. $this->test_model->favorite_add($data); controllers를 위처럼 바꾸고, function fovorite_add($option){ $this->db->set('favorite',$option) $this->db->insert('test'); 위처럼 model 에서 set을 이용해 입력할 필드를 지정한 후 삽입하니, 200ok가 뜨네요. 근데 데이터베이스에는 입력이 안되요... 그래서 ajax 세팅부분에서 dataType:'json' 부분을 주석처리하니, 200ok가 뜨고 success시 발생하게 되있는 함수가 작동하면서 success 메시지까지 뜨네요. 근데 정작 데이터베이스에는 입력이 안됩니다ㅠㅠ |
변종원(웅파)
/
2015/07/21 22:56:31 /
추천
0
ci 로그 활성화해서 보시고 아파치 로그도 보세요.
그리고 모델에 값 전달하지 말고 그냥 변수 선언해서 컨트롤러에서 insert 해보세요. 우선 데이터베이스 연결이 됐는지 확인이 필요합니다 |
코드10
/
2015/07/22 00:27:53 /
추천
0
컨트롤러에서도 데이터베이스 입력이 되는거였네요! 몰랐는데 말씀해주신대로 하니까 데이터베이스에 입력이 됐습니다!
model 부분 코딩이 문제가 있던걸까요? function favorite_add(){ $data = $this->input->post('house_id',true); $this->db->set('favorite',$data); $this->db->insert('test'); redirect('test'); } 아파치로그는 어떻게 하는지 잘 모르겠지만 ci 로그는 대략 어떻게 하는지 알아서 해봤어요! INFO - 2015-07-21 08:23:28 --> Config Class Initialized INFO - 2015-07-21 08:23:28 --> Hooks Class Initialized DEBUG - 2015-07-21 08:23:28 --> UTF-8 Support Enabled INFO - 2015-07-21 08:23:28 --> Utf8 Class Initialized INFO - 2015-07-21 08:23:28 --> URI Class Initialized INFO - 2015-07-21 08:23:28 --> Router Class Initialized INFO - 2015-07-21 08:23:28 --> Output Class Initialized INFO - 2015-07-21 08:23:28 --> Security Class Initialized DEBUG - 2015-07-21 08:23:28 --> Global POST, GET and COOKIE data sanitized INFO - 2015-07-21 08:23:28 --> Input Class Initialized INFO - 2015-07-21 08:23:28 --> Language Class Initialized INFO - 2015-07-21 08:23:28 --> Loader Class Initialized INFO - 2015-07-21 08:23:28 --> Helper loaded: url_helper INFO - 2015-07-21 08:23:28 --> Controller Class Initialized INFO - 2015-07-21 08:23:28 --> Database Driver Class Initialized INFO - 2015-07-21 08:23:28 --> Config Class Initialized INFO - 2015-07-21 08:23:28 --> Hooks Class Initialized DEBUG - 2015-07-21 08:23:28 --> UTF-8 Support Enabled INFO - 2015-07-21 08:23:28 --> Utf8 Class Initialized INFO - 2015-07-21 08:23:28 --> URI Class Initialized INFO - 2015-07-21 08:23:28 --> Router Class Initialized INFO - 2015-07-21 08:23:28 --> Output Class Initialized INFO - 2015-07-21 08:23:28 --> Security Class Initialized DEBUG - 2015-07-21 08:23:28 --> Global POST, GET and COOKIE data sanitized INFO - 2015-07-21 08:23:28 --> Input Class Initialized INFO - 2015-07-21 08:23:28 --> Language Class Initialized INFO - 2015-07-21 08:23:28 --> Loader Class Initialized INFO - 2015-07-21 08:23:28 --> Helper loaded: url_helper INFO - 2015-07-21 08:23:28 --> Controller Class Initialized INFO - 2015-07-21 08:23:28 --> Database Driver Class Initialized INFO - 2015-07-21 08:23:28 --> File loaded: C:\Bitnami\wampstack-5.4.35-0\apache2\htdocs\application\views\test.php INFO - 2015-07-21 08:23:28 --> Final output sent to browser DEBUG - 2015-07-21 08:23:28 --> Total execution time: 0.1250 |
코드10
/
2015/07/22 01:18:58 /
추천
0
function fovorite_add($option){
$this->db->insert('test',$option); } 자세히보니 model의 함수명이 favorite이 아니라 fovorite으로 잘못 적혀있었네요... 물의를 일으켜 죄송합니다... 답변주신 변종원님, 한대승님 정말 감사드립니다!!! |
mysql 연결이 되는지 확인해보세요.
$data = $this->input->post('house_id',true);
$option = array('favorite' => $house_id);
$this->db->insert('test',$option);
값을 $data 변수로 받았는데 할당은 $house_id로 해서 빈값을 전달해서 문제가 된것 같네요.
그리고 위 구문은 test 테이블의 favorite필드에 값을 넣는 것입니다.
$house_id = $this->input->post('house_id',true);
$option = array('favorite' => $house_id);
$this->db->insert('test',$option);