I am using the following script to retrieve all the invoices in a particular month / year. The php pulls all the years and dates from the database, groups them together and puts them into a select menu, giving a result similar to :
June - 2013
July - 2013
August - 2013
September - 2013
This is the 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>
This is the select.php which the ajax uses to lookup the results and send them back to the main script :
<?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);
?>
The problem I am having is im not sure how to convert the text such as 'July-2013' into something the select.php can use. As at the moment if I use chrome developer tools to see whats going on I get the following :
select.php?monthyear=July-2013
/manda/salessummary
So the date is going out ok, but im not sure how to then use it at the other end to select the dates in that month / year as its in the wrong format.
The database is as follows :
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
EDIT >>>>
select.php now looks like this:
<?php include '../connectmysqli.php';
$date_convert = date('Y-m-d', strtotime($_POST['monthyear']));
// Or, use LIST which would allow you to use the two date parts later.
list($month, $year) = explode('-', $_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);
?>