「ajaxCRUD」クラス ( http://ajaxcrud.com/ ) を WordPress に統合しようとしています。私が達成したかったのは、この特定のクラスを利用してデータベースからの値を表示するページ テンプレートを持つことでした。
ajaxCRUD 自体は堅実で、単体でも十分に機能します。ただし、WordPress には何か競合があると思います。ページ テンプレートに落とし込むと、レコードを更新する機能が失われるからです。この時点でデータテーブルが表示されていますが、値を編集/送信すると、代わりにワードプレスのホームページ/インデックスページが読み込まれます。奇妙なことに、値を更新する代わりにインデックス ページを読み込むと、更新しようとしていた列名と値を含むパラメーターが URL に含まれています。
例: リンクが表示されます: localhost/dealerwp/?text_tblDemofldField11=myupdatetext ここで、fldField1 は更新しようとしている列です (pkID は 1) & tblDemo はテーブルの名前です & myupdatetext は更新しようとしたときに入力したテキストです値
ここで何が起こっているのでしょうか?
私は道に迷い、残りの髪を引き抜いています... WordPress との ajax の衝突でしょうか? または多分.htaccess?以前は機能していたコードが壊れており、テーブルの更新に使用する必要がある URL パラメータにデータを投稿している wordpress ページ テンプレートにラップされた理由を、私の人生では理解できません。
私が使用しているコードは以下のとおりです。
繰り返しになりますが、正しい方向への支援/指摘をよろしくお願いします。
<?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);
}
?>