jTable で検索メソッドを実装するのは困難です。コード:
generaterecords.php:
<?php
$page_title = "Generate Reports";
require_once('template/header.php');
require_once('template/navmenu.php');
require_once('template/content-top.php');
?>
<div class="filtering">
<form>
<select name="year" >
<option value="0000">Year</option>
<?php
for($i=date('Y'); $i>2012; $i--) {
echo '<option value="'.$i.'"'.'>'.$i.'</option>'."\n";
}
?>
</select>
<select name="month">
<option value="0">Month</option>
<option value="1">January</option>
<option value="2">February</option>
<option value="3">March</option>
<option value="4">April</option>
<option value="5">May</option>
<option value="6">June</option>
<option value="7">July</option>
<option value="8">August</option>
<option value="9">September</option>
<option value="10">October</option>
<option value="11">November</option>
<option value="12">December</option>
</select>
<button type="submit" id="LoadRecordsButton">Load records</button>
</form>
<div id="PeopleTableContainer" style="width: 850px;"></div>
<script type="text/javascript">
$(document).ready(function () {
//Prepare jTable
$('#PeopleTableContainer').jtable({
title: 'Payment Records',
paging: true,
pageSize: 10,
sorting: true,
defaultSorting: 'payment.paymentdate ASC',
actions: {
listAction: 'payment.php?action=list'
},
fields: {
paymentid: {
key: true,
create: false,
edit: false,
list: false
},
lname: {
title: 'Last Name',
width: '20%',
create: false,
edit: false
},
fname: {
title: 'First Name',
width: '20%',
create: false,
edit: false
},
mname: {
title: 'Middle Name',
width: '20%',
create: false,
edit: false
},
paymenttype: {
title: 'Type',
width: '20%',
create: false,
edit: false
},
paymentdate: {
title: 'Date',
width: '20%',
create: false,
edit: false
},
totalrate: {
title: 'Total Rate',
width: '20%',
create: false,
edit: false
},
paymentamt: {
title: 'Amount',
width: '20%',
create: false
},
balance: {
title: 'Balance',
width: '20%',
create: false,
edit: false
}
}
});
//Load person list from server
//$('#PeopleTableContainer').jtable('load');
//Re-load records when user click 'load records' button.
// Backup
$('#LoadRecordsButton').click(function (e) {
e.preventDefault();
$('#PeopleTableContainer').jtable('load', {
year: $('#year').val(),
month: $('#month').val()
});
});
//Load all records when page is first shown
// $('#LoadRecordsButton').click();
});
</script>
<br>
<br>
<?php
// footer
require_once('template/footer.php');
?>
payment.php:
<?php
include_once ('database_connection.php');
try
{
$con = mysql_connect("localhost","kureido","tnx4standinstillwanker");
mysql_select_db("kureido", $con);
//Getting records (listAction)
if($_GET["action"] == "list")
{
//Get record count
$offresult = mysql_query("SELECT COUNT(*) AS OLRecordCount FROM official;");
$offrow = mysql_fetch_array($offresult);
$allresult = mysql_query("SELECT COUNT(*) AS AllRecordCount FROM lodger;");
$allrow = mysql_fetch_array($allresult);
$resresult = mysql_query("SELECT COUNT(*) AS ResRecordCount FROM reservation;");
$resrow = mysql_fetch_array($resresult);
$recordCount = $allrow['AllRecordCount'] - $offrow['OLRecordCount'] - $resrow['ResRecordCount'];
$year = "";
$month = "";
if (empty($_POST['year']) && empty($_POST['month']))
$year = $month = "";
else
{
$year = $_POST['year'];
$month = $_POST['month'];
}
//Get records from database
$result = mysql_query("SELECT payment.paymentid, lodger.ssn, lodger.lname, lodger.fname, lodger.mname, payment.paymenttype, payment.paymentdate, payment.totalrate, payment.paymentamt, payment.totalrate - payment.paymentamt AS balance FROM payment, lodger WHERE lodger.ssn = payment.lodger_ssn AND YEAR(paymentdate) = '" . $_POST["year"] . "' AND MONTH(paymentdate) = '" . $_POST["month"] . "' ORDER BY " . $_GET["jtSorting"] . " LIMIT " . $_GET["jtStartIndex"] . "," . $_GET["jtPageSize"] .";");
//Add all records to an array
$rows = array();
while($row = mysql_fetch_array($result))
{
$rows[] = $row;
}
//Return result to jTable
$jTableResult = array();
$jTableResult['Result'] = "OK";
$jTableResult['TotalRecordCount'] = $recordCount;
$jTableResult['Records'] = $rows;
print json_encode($jTableResult);
}
//Creating a new record (createAction)
/* else if($_GET["action"] == "create")
{
//Insert record into database
$result = mysql_query("INSERT INTO people(Name, Age, RecordDate) VALUES('" . $_POST["Name"] . "', " . $_POST["Age"] . ",now());");
//Get last inserted record (to return to jTable)
$result = mysql_query("SELECT * FROM people WHERE PersonId = LAST_INSERT_ID();");
$row = mysql_fetch_array($result);
//Return result to jTable
$jTableResult = array();
$jTableResult['Result'] = "OK";
$jTableResult['Record'] = $row;
print json_encode($jTableResult);
} */
//Updating a record (updateAction)
else if($_GET["action"] == "update")
{
//Update record in database
$result = mysql_query("UPDATE official SET room_code = '" . $_POST["room_code"] . "', appliancerate = '" . $_POST["appliancerate"] . "', monthlybal = '" . $_POST["monthlybal"] . "' WHERE lodger_ssn = " . $_POST["ssn"] . ";");
//Return result to jTable
$jTableResult = array();
$jTableResult['Result'] = "OK";
print json_encode($jTableResult);
}
//Deleting a record (deleteAction)
else if($_GET["action"] == "delete")
{
//Delete from database
$result = mysql_query("DELETE FROM official WHERE lodger_ssn = " . $_POST["ssn"] . ";");
//Return result to jTable
$jTableResult = array();
$jTableResult['Result'] = "OK";
print json_encode($jTableResult);
}
else if($_GET["action"] == "view")
{
}
//Close database connection
mysql_close($con);
}
catch(Exception $ex)
{
//Return error message
$jTableResult = array();
$jTableResult['Result'] = "ERROR";
$jTableResult['Message'] = $ex->getMessage();
print json_encode($jTableResult);
}
?>
サーバーがエラーを返すことがあります。これを修正する方法についてのアイデアはありますか? generaterecords.php はクライアント側で、payment.php はサーバー側です。