我使用CPanel将PHP服务器与SQL数据库一起使用。
我正在使用SQL查询从数据库中检索值(数字),并将它们传递给单独的javascript文件。 为了实现这一点,我首先在一个单独的PHP文件上创建了一个查询,该文件获取信息:
文件名:SQLamountofusers.php
<?php
$query = sprintf("SELECT COUNT( * ) as c
FROM `applications`
JOIN `users` ON ( users.id = applications.id_m )
WHERE `cdate` > CURRENT_DATE -30");
$result = mysql_query($query);
$res = mysql_fetch_assoc($result);
echo json_encode($res[c]);
mysql_free_result($result);
?>
然后使用AJAX将回显的结果传递给JS文件:
文件名:canvas.js
$(document).ready( function() {
$(usersreport).click(function() {
$.ajax({
type: 'POST',
url: 'js/SQLamountofusers.php',
data: 'id=usersreport',
dataType: 'json',
cache: false,
success: function(result) {
var num = Number(result);
{ label: "Active", y: num},
{ label: "Inactive", y: 0 },
});
});
现在这就是我想要实现的目标,但不知道如何:
我想向canvas.js文件传递两个值,一个是活动用户(需要一个来自DB的查询,上面已经写过),另一个是非活动用户(需要另一个查询) - 那么如何在JS文件中获得两个结果呢?
我应该用另一个查询创建另一个单独的PHP文件,还是有另一种方法来实现它?
答案 0 :(得分:0)
尝试将查询调整为:
<?php
$query = sprintf("SELECT
COUNT(DISTINCT IF(cdate > CURRENT_DATE - 30, users.id, NULL)) AS c,
COUNT(DISTINCT IF(cdate <= CURRENT_DATE - 30, users.id, NULL)) AS d
FROM applications
JOIN users ON users.id = applications.id_m");
$result = mysql_query($query);
$res = mysql_fetch_assoc($query);
echo json_encode($res);
mysql_free_result($result);
?>
然后您可以调整canvas.js以将结果拉为
$(document).ready( function() {
$(usersreport).click(function() {
$.ajax({
type: 'POST',
url: 'js/SQLamountofusers.php',
data: 'id=usersreport',
dataType: 'json',
cache: false,
success: function(result) {
var num = Number(result.c);
var num2 = Number(result.d);
{ label: "Active", y: num},
{ label: "Inactive", y: num2 },
});
});
免责声明:我没有测试过这段代码,只是将其作为您可能尝试的潜在解决方案。
答案 1 :(得分:0)
文件名:SQLamountofusers.php
<?php
$query = "SELECT COUNT( * ) as c
FROM `applications`
JOIN `users` ON ( users.id = applications.id_m )
WHERE `cdate` > CURRENT_DATE -30";
$result = mysql_query($query);
$res = mysql_fetch_assoc($result);
$data = array('active' => $res['c']);
$query2 = "SELECT ...";
$result2 = mysql_query($query2);
$res2 = mysql_fetch_assoc($result2);
$data['inactive'] = $res2['c']);
echo json_encode($data);
?>
文件名:canvas.js
$(document).ready( function() {
$(usersreport).click(function() {
$.ajax({
type: 'POST',
url: 'js/SQLamountofusers.php',
data: 'id=usersreport',
dataType: 'json',
cache: false,
success: function(result) {
{ label: "Active", y: result.active},
{ label: "Inactive", y: result.inactive},
});
});
只需将第二个sql查询替换为您需要的查询。
编辑:基本上你可以通过json数组和对象。因此,您可以轻松传递任意数量的数字。使用你需要的值准备php数组,然后使用json_encode()它,你将得到一个js方面值为的对象或数组。 如果你编码没有像$ arr = array(1,2,3)这样的键的php数组;你将获得js方面的数组。您可以将其引用为[0],[1]等。 如果编码关联的php数组,即使用$ arr = array('k1'=&gt; 1,'k2'=&gt; 2)等键;你将在js方面获得一个对象。并将其引用为o.k1,o.k2等。
答案 2 :(得分:-1)
尝试:
$query = "SELECT COUNT( * ) as c
FROM
applications
JOIN users
ON ( users.id = applications.id_m )
WHERE cdate
> CURRENT_DATE -30";
没有sprintf();