sleepy_daze
sleepy_daze

Reputation: 551

Insert statement into custom WordPress database

I have a custom database that I want to insert items into from a WordPress front-end interface. When I submit the form, I can get the JSON values just fine, but for some reason, it doesn't seem to be inserting into the database. I do not get any error messages.

Here's what I'm doing (please note that I am testing the name variable, hence why it's not pulling from an input field):

I am using the auto_increment_id value from SHOW TABLE STATUS to create the commmittee_id value, and would prefer for that to be inserted as the primary key.

JavaScript

$(".addButton").click(function() {
    var commitAddID = $(this).attr('id');
    var name = "1name";
    var date_created = $("#addCommCreated_input_"+commitAddID).val();
    var status = $("#addCommStatus_input_"+commitAddID).val();
    var disbanded = $("#addCommDisbanded_input_"+commitAddID).val();

    var dataString = {
     'action': 'addCommittee',
     'committee_id': commitAddID,
     'old_id': commitAddID,
     'name': name,
     'description': '',
     'date_created': date_created,
     'status': status,
     'disbanded': disbanded
    };

    jQuery.ajax({
      url: addCommittee.ajaxurl,
      type: "POST",
      data: dataString,
      dataType: "json",
      success: function (response) {
        $("#name_"+commitAddID).html(name);
        $("#created_"+commitAddID).html(date_created);
        $("#status_"+commitAddID).html(status);
        $("#disbanded_"+commitAddID).html(disbanded);
      }
    });

functions.php

  // set up AJAX call for addCommittee
add_action('wp_ajax_addCommittee', 'addCommittee');
add_action('wp_ajax_nopriv_addCommittee', 'addCommittee');

function addCommittee() {
  global $wpdb;

  $committee_id = esc_sql($_POST['committee_id']);
  $old_id = esc_sql($_POST['old_id']);
  $name = esc_sql($_POST['name']);
  $created = esc_sql($_POST['date_created']);
  $status = esc_sql($_POST['status']);
  $disbanded = esc_sql($_POST['disbanded']);
  $desc= esc_sql($_POST['description']);


  $wpdb->insert('wp_bubu_committees',
              array(
              'old_id' => '',
              'name' => $name,
              'description' => '',
              'date_created' => $created,
              'status' => $status,
              'disbanded' => $disbanded
              )
            );
            exit();
  }

I have also localized the AJAX URL in functions.php. Any ideas?

Edit: Updated the code-- the action was set to the . I now am able to insert into the database, but it only allows me to insert one item. Attempting to insert additional items returns nothing, but the data does post to JSON.

Upvotes: 1

Views: 1310

Answers (1)

Vel
Vel

Reputation: 9341

Remove the data type json.

    jQuery.ajax({ 
        url: addCommittee.ajaxurl, 
        type: "POST", 
        data: dataString, 
        success: function (response) { 
            $("#name_"+commitAddID).html(name); 
            $("#created_"+commitAddID).html(date_created); 
            $("#status_"+commitAddID).html(status); 
            $("#disbanded_"+commitAddID).html(disbanded); 
            alert(response); 
        } 
    }); 

Upvotes: 3

Related Questions