gpt4 book ai didi

php - 如何使用ajax从mysql数据库中选择月份和年份

转载 作者:行者123 更新时间:2023-11-30 01:19:02 26 4
gpt4 key购买 nike

我正在使用以下脚本来检索特定月份/年份的所有发票。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 可以使用的内容。目前,如果我使用 chrome 开发人员工具来查看发生了什么,我会得到以下信息:

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']));

//或者,使用 LIST,这将允许您稍后使用两个日期部分。

列表($月, $年) = 爆炸('-', $_POST['月年']);

$SQL = "SELECT * FROM sales WHERE date = :date";$STH = $db->准备($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);

?>

最佳答案

试试这个。

使用strtotime() .

网址:select.php?monthyear=July-2013

$date = mysql_real_escape_string($_POST['monthyear']);

$mysql_date = date('Y-m-d', strtotime($_GET['monthyear']));

$sql = 'SELECT * FROM sales WHERE date = ' . $mysql_date;
  • P.S - 不要只将参数连接到 sql 命令。我们已经不再是 90 年代了。

更好的选择是使用 bind_param()

$mysql_date = date('Y-m-d', strtotime($_GET['monthyear']));

$sql = 'SELECT * FROM sales WHERE date = ?';

$sql->bind_param("s", $mysql_date);

关于php - 如何使用ajax从mysql数据库中选择月份和年份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18762450/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com