Blog
Post to a MySQL Database Using a jQuery AJAX Form with CodeIgniter
Posted on July 10, 2015 in AJAX, CodeIgniter, MVC, MySQL, PHP by Matt Jennings
Model Example
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Quote extends CI_Model
{
public function all()
{
return $this->db->query("SELECT * FROM quotes")->result_array();
}
public function create($new_quote)
{
$query = "INSERT INTO quotes (author, quote) VALUES (?, ?)";
$values = array($new_quote['author'], $new_quote['quote']);
return $this->db->query($query, $values);
}
}
Controller Example
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Quotes extends CI_Controller {
public function index_json()
{
$this->load->model('Quote');
$data['quotes'] = $this->Quote->all();
echo json_encode($data);
}
public function index_html()
{
$this->load->model('Quote');
$data['quotes'] = $this->Quote->all();
$this->load->view('partials/quotes', $data);
}
public function create()
{
$this->load->model('Quote');
$new_quote = $this->input->post();
$this->Quote->create($new_quote);
redirect(base_url());
}
public function index()
{
$this->load->view('index');
}
}
jQuery AJAX to Read from and Insert into a MySQL Database
$(function() {
// Get an HTML string to dump into the
// #quotes DIV later
$.get('/quotes/index_html', function(result) {
$('#quotes').html(result);
});
// Submit form, add new quote and author into DB,
// & add show new DB row without reloading page
$('#add-quote').on('submit', function() {
$.post('/quotes/create', $(this).serialize(), function(result) {
});
});
// Prevents double-form submission
// by removing all event handlers from
// form#add-quote after the form is submitted
$('#add-quote').off();
});
View that Shows PHP and HTML for the Form
<h1>Quotsy</h1>
<p>Test Image to Ensure Page Doesn't Reload:<br />
<img src="https://upload.wikimedia.org/wikipedia/commons/b/ba/Soccerball1.png" alt="soccer ball test image"/>
</p>
<form action="<?php echo base_url() . 'quotes/create'; ?>" method="post" id="add-quote">
<p>
<label>Author: </label>
<input type="text" name="author"/>
</p>
<p>
<label>Quote: </label>
<input type="text" name="quote"/>
</p>
<p>
<input type="submit" value="Add Quote"/>
</p>
</form>
<div id="quotes">
</div>
Leave a Reply