3 回答
TA贡献1830条经验 获得超3个赞
在你 dataAll.php
如果您选择了All available industries
不检查部门,因为您需要所有部门(最终您应该检查国家/地区),因此您应该避免检查这种情况
<?php
$conn = mysqli_connect("localhost", "root", "", "love");
$result = mysqli_query($conn, "SELECT * FROM meed");
$data = [];
$wynik = [];
$totalProjects = 0;
$totalBudget = 0;
while ($row = mysqli_fetch_array($result)) {
$totalProjects += $row['SumofNoOfProjects'];
$totalBudget += $row['SumofTotalBudgetValue'];
}
echo json_encode([$totalProjects, $totalBudget]);
TA贡献1884条经验 获得超4个赞
您可以使用 SQL JOIN 运算符,或者在这种情况下,隐式连接将是最干净的:
$result = mysqli_query($conn, "SELECT * FROM construction, power, oil_and_gas, industrial WHERE construction.Countries = power.Countries AND power.Countries = oil_and_gas.Countries AND oil_and_gas.Countries = industrial.Countries");
您需要 WHERE 条件,以便它知道每个不同表的行是如何相互关联的。您可以使用表的别名将其缩短一点:
$result = mysqli_query($conn, "SELECT * FROM construction as C, power as P, oil_and_gas as G, industrial as I WHERE C.Countries = P.Countries AND P.Countries = G.Countries AND G.Countries = I.Countries");
但是,在这种情况下,我认为您可能需要考虑更改数据库的结构。似乎您在它们之间重复了很多列。也许这些都可以在一个表中,有一个“类型”列,指定它是电力、建筑等。然后您可以只查询一个表并按国家/地区名称分组以获得所有结果,而无需跨 4 的混乱连接表。
TA贡献1853条经验 获得超6个赞
单表看起来还可以。
(本答案的其余部分不完整,但可能有用。)
首先,让我们设计将请求数据的 URL。
.../foo.php?industry=...&country=...
但是,不是在客户端中对“全部”进行特殊的外壳,而是在服务器中进行。也就是说,工业的最后一个按钮将生成
?industry=all
并且 PHP 代码不会将其包含在WHERE子句中:
AND industry IN (...)
同样对于&country=all对&country=egypt,iran,iraq
现在,让我简要地关注一下 PHP:
$wheres = array();
$industry = @$_GET['industry'];
if (! isset($industry)) { ...issue error message or use some default... }
elseif ($industry != 'all') {
$inds = array();
foreach (explode(',', $industry) as $ind) {
// .. should test validity here; left to user ...
$inds[] = "'$ind'";
}
$wheres[] = "industry IN (" . implode(',', $inds) . )";
}
// ... repeat for country ...
$where_clause = '';
if (! empty($wheres)) {
$where_clause = "WHERE " . implode(' AND ', $wheres);
}
// (Note that this is a generic way to build arbitrary WHEREs from the data)
// Build the SQL:
$sql = "SELECT ... FROM ...
$where_clause
ORDER BY ...";
// then execute it via mysqli or pdo (NOT mysql_query)
现在,让我们谈谈使用 AJAX。或不。有2个选择:
您可以通过 a 调用 PHPGET并让 PHP 显示一个新页面。这意味着 PHP 将构建结果表。
您可以使用 AJAX 来请求数据。这意味着 Javascript 将构建结果数据。
选择哪个选项可能取决于您更熟悉哪种语言。
- 3 回答
- 0 关注
- 145 浏览
添加回答
举报