次のスクリプトを使用して、特定の月/年のすべての請求書を取得しています。PHP は、データベースからすべての年と日付を取得し、それらをグループ化して選択メニューに配置し、次のような結果を出します。
June - 2013
July - 2013
August - 2013
September - 2013
これは selectsummary.php です:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Sales Summary</title>
<script type="text/javascript" src="../js/jquery/jquery.js"></script>
<script type="text/javascript" src="../js/jqueryui/js/jquery-ui.js"></script>
<link href="../js/select2/select2.css" rel="stylesheet"/>
<script type="text/javascript" src="../js/select2/select2.js"></script>
<script type="text/javascript">
$(document).ready(function() { $("select").select2(); });
</script>
<?php
include '../connectmysqli.php';
include '../menu.php';
echo '<link rel="stylesheet" href="../css/template/template.css" />';
$salesID = rand().rand();
$today = date("Y-m-d");
?>
<script type="text/javascript" charset="utf-8">
$(document).ready(function(){
$('#selectmonth').on('change', function (){
// THIS IS WHERE I AM TRYING TO WORK OUT HOW TO RETRIEVE THE JSON AND THEN PLACE THE RESULTS INSIDE THE "summarycontent" DIV.
$.getJSON('select.php', {monthyear: $(this).val()}, function(data){
var invoicerow = '';
for (var x = 0; x < data.length; x++) {
invoicerow += '<p>' + data[x]['invoiceID'] + '">' + data[x]['date'] + ' - ' + data[x]['grandtotal'] + ' - ' + data[x]['customerID'] + '</p>';
}
$('#summarycontent').html(invoicerow);
$("select").select2();
});
});
});
</script>
</head>
<body>
<form method="post" action="addsalesubmit.php">
<p>
<select id="selectmonth">
<option>Please Select A Monthly Summary To View</option>
<?php
$sql = <<<SQL
SELECT YEAR(date) AS 'year', MONTHNAME(date) AS 'month'
FROM `sales`
GROUP BY YEAR(date), MONTHNAME(date) DESC
SQL;
if(!$result = $db->query($sql)){ die('There was an error running the query [' . $db->error . ']');}
while($row = $result->fetch_assoc()){
echo '<option value="'.$row['month'].'-'.$row['year'].'">'.$row['month'].' - '.$row['year'].'</option>';
}
echo '</select>';
?>
<br />
<br />
</form>
<div id="summarycontent"></div>
</body>
</html>
これは、結果を検索してメイン スクリプトに送り返すために ajax が使用する select.php です。
<?php include '../connectmysqli.php'; ?>
<?php
$monthyear = strtotime($_GET['monthyear']);
$sql = 'SELECT * FROM sales WHERE date = ' . (int)$monthyear;
$result = $db->query($sql);
$json = array();
while ($row = $result->fetch_assoc()) {
$json[] = array(
'invoiceID' => $row['invoiceID'],
'date' => $row['date'],
'grandtotal' => $row['grandtotal'],
'customerID' => $row['customerID']
);
}
echo json_encode($json);
?>
私が抱えている問題は、「July-2013」などのテキストを select.php が使用できるものに変換する方法がわからないことです。現時点で、クロム開発者ツールを使用して何が起こっているかを確認すると、次のようになります。
select.php?monthyear=July-2013
/manda/salessummary
したがって、日付は問題ありませんが、反対側でそれを使用してその月/年の日付を間違った形式で選択する方法がわかりません。
データベースは次のとおりです。
id invoiceID salesID customerID vehicleID date comments subtotal vat grandtotal description1 qty1T linetotal1T stock1T stock2T description2 qty2T linetotal2T stock3T description3 qty3T linetotal3T stock4T description4 qty4T linetotal4T stock5T description5 qty5T linetotal5T discount
68 1 1512428605 82428579 134722464 2013-07-08 22.48 4.50 26.98 Bridestone Pt34 - 175/55/18/W/63 - (99 In Stock) -... 1 22.48 711022407
編集 >>>>
select.php は次のようになります。
<?php include '../connectmysqli.php';
$date_convert = date('Y-m-d', strtotime($_POST['monthyear']));
// または、後で 2 つの日付部分を使用できるようにする LIST を使用します。
list($month, $year) = expand('-', $_POST['monthyear']);
$SQL = "SELECT * FROM sales WHERE date = :date"; $STH = $db->prepare($SQL); $STH->bindParam(':date', $date_convert);
$json = array();
while ($row = $result->fetch_assoc()) {
$json[] = array(
'invoiceID' => $row['invoiceID'],
'date' => $row['date'],
'grandtotal' => $row['grandtotal'],
'customerID' => $row['customerID']
);
}
echo json_encode($json);
?>