简体   繁体   中英

Conflict with stand-alone Ajax CRUD script only when used within WordPress - Can't update values

I'm trying to integrate the "ajaxCRUD" class ( http://ajaxcrud.com/ ) with WordPress. What I was hoping to achieve was to have a page template that displayed values from a database utilizing this specific class.

ajaxCRUD itself is solid, and works great alone. However, I think there is some conflict with something in WordPress, because once I slop it into a page template I loose the ability to update records. At this point the datatable is being displayed but upon editing / submitting any value, the wordpress homepage / index page is being loaded instead. The strange thing is that upon loading the index page instead of updating the value, there is a parameter in the URL containing the column name and value I was trying to update!

EX: the link shows: localhost/dealerwp/?text_tblDemofldField11=myupdatetext where fldField1 is the column I'm attempting to update, (pkID is 1) & tblDemo is the name of the table & myupdatetext is the text I inputted when trying to update the value

What could be going on here?

I am lost, pulling out the remainder of my hair... Could it be some ajax conflict with WordPress? or maybe the .htaccess? I cannot for the life of me figure out why once wrapped in a wordpress page template that the previously working code is now broken and posting the data to the URL parameter that it should be using to update the table with.

The code I'm working with is below should anyone wish to take a gander.

Again, thank you in advance for any assistance / pointing in the right direction.

<?php
/**
 * Template Name: DealerCRUD Template
 * Description: A Page Template that showcases Sticky Posts, Asides, and Blog Posts
 *
 * The showcase template in Twenty Eleven consists of a featured posts section using sticky posts,
 * another recent posts area (with the latest post shown in full and the rest as a list)
 * and a left sidebar holding aside posts.
 *
 * We are creating two queries to fetch the proper posts and a custom widget for the sidebar.
 *
 * @package WordPress
 * @subpackage Twenty_Eleven
 * @since Twenty Eleven 1.0
 */
require_once('./preheader.php'); // <-- this include file MUST go first before any HTML/output

#the code for the class
include ('./ajaxCRUD.class.php'); // <-- this include file MUST go first before any HTML/output

#this one line of code is how you implement the class
########################################################
##

$tblDemo = new ajaxCRUD("Item", "tblDemo", "pkID", "/");

##
########################################################

## all that follows is setup configuration for your fields....
## full API reference material for all functions can be found here - http://ajaxcrud.com/api/
## note: many functions below are commented out (with //). note which ones are and which are not

#i can define a relationship to another table
#the 1st field is the fk in the table, the 2nd is the second table, the 3rd is the pk in the second table, the 4th is field i want to retrieve as the dropdown value
#http://ajaxcrud.com/api/index.php?id=defineRelationship
//$tblDemo->defineRelationship("fkID", "tblDemoRelationship", "pkID", "fldName", "fldSort DESC"); //use your own table - this table (tblDemoRelationship) not included in the installation script

#i don't want to visually show the primary key in the table
$tblDemo->omitPrimaryKey();

#the table fields have prefixes; i want to give the heading titles something more meaningful
$tblDemo->displayAs("fldField1", "Field1");
$tblDemo->displayAs("fldField2", "Field2");
$tblDemo->displayAs("fldCertainFields", "Certain Fields");
$tblDemo->displayAs("fldLongField", "Long Field");
$tblDemo->displayAs("fldCheckbox", "Is Selected?");

#set the textarea height of the longer field (for editing/adding)
#http://ajaxcrud.com/api/index.php?id=setTextareaHeight
$tblDemo->setTextareaHeight('fldLongField', 150);

#i could omit a field if I wanted
#http://ajaxcrud.com/api/index.php?id=omitField
//$tblDemo->omitField("fldField2");

#i could omit a field from being on the add form if I wanted
//$tblDemo->omitAddField("fldField2");

#i could disallow editing for certain, individual fields
//$tblDemo->disallowEdit('fldField2');

#i could set a field to accept file uploads (the filename is stored) if wanted
//$tblDemo->setFileUpload("fldField2", "uploads/");

#i can have a field automatically populate with a certain value (eg the current timestamp)
//$tblDemo->addValueOnInsert("fldField1", "NOW()");

#i can use a where field to better-filter my table
//$tblDemo->addWhereClause("WHERE (fldField1 = 'test'");

#i can order my table by whatever i want
//$tblDemo->addOrderBy("ORDER BY fldField1 ASC");

#i can set certain fields to only allow certain values
#http://ajaxcrud.com/api/index.php?id=defineAllowableValues
$allowableValues = array("Allowable Value 1", "Allowable Value2", "Dropdown Value", "CRUD");
$tblDemo->defineAllowableValues("fldCertainFields", $allowableValues);

//set field fldCheckbox to be a checkbox
$tblDemo->defineCheckbox("fldCheckbox");

#i can disallow deleting of rows from the table
#http://ajaxcrud.com/api/index.php?id=disallowDelete
//$tblDemo->disallowDelete();

#i can disallow adding rows to the table
#http://ajaxcrud.com/api/index.php?id=disallowAdd
//$tblDemo->disallowAdd();

#i can add a button that performs some action deleting of rows for the entire table
#http://ajaxcrud.com/api/index.php?id=addButtonToRow
//$tblDemo->addButtonToRow("Add", "add_item.php", "all");

#set the number of rows to display (per page)
$tblDemo->setLimit(3);

#set a filter box at the top of the table
//$tblDemo->addAjaxFilterBox('fldField1');

#if really desired, a filter box can be used for all fields
$tblDemo->addAjaxFilterBoxAllFields();

#i can set the size of the filter box
//$tblDemo->setAjaxFilterBoxSize('fldField1', 3);

#i can format the data in cells however I want with formatFieldWithFunction
#this is arguably one of the most important (visual) functions
$tblDemo->formatFieldWithFunction('fldField1', 'makeBlue');
$tblDemo->formatFieldWithFunction('fldField2', 'makeBold');

//$tblDemo->modifyFieldWithClass("fldField1", "zip required");  //for testing masked input functionality
//$tblDemo->modifyFieldWithClass("fldField2", "phone");         //for testing masked input functionality

//$tblDemo->onAddExecuteCallBackFunction("mycallbackfunction"); //uncomment this to try out an ADD ROW callback function

?>
            <div style="float: left">
            Total Returned Rows: <b><?=$tblDemo->insertRowsReturned();?></b>    <br />
    </div>

    <div style="clear:both;"></div>

<?

     #actually show the table
     $tblDemo->showTable();

    #my self-defined functions used for formatFieldWithFunction
    function makeBold($val){
    return "<b>$val</b>";
  }

    function makeBlue($val){
    return "<span style='color: blue;'>$val</span>";
  }

    function myCallBackFunction($array){
    echo "THE ADD ROW CALLBACK FUNCTION WAS implemented";
    print_r($array);
  }
?>

Is your script located inside ajaxCRUD directory? Check your settings for $ajaxcrud_root in ajaxCRUD.class.php (around line 307) Once you set it up you can get rid of , "/" in:

$tblDemo = new ajaxCRUD("Item", "tblDemo", "pkID", "/");

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM