使用php,ajax从数据库中获取数据

我有一个简单的部分,我在其中显示数据库中的数据,我的数据库如下所示。


现在我有四个按钮看起来像这样


当用户单击上述按钮之一时,它会显示此


所以现在当用户例如选择construction和下一步选择例如Egypt' in the console and clicks button确认displays [855,599075], user can select multiple countries, this works as expected for建筑,电力,油`,


现在我想如果用户例如单击All available industries这四个按钮中的按钮然后选择例如Egypt并单击confirm它应该显示埃及在建筑,石油,电力部门的总项目 总和855+337+406=1598以及两个部门的总预算总和1136173


这是我的解决方案


HTML


<div id="interactive-layers">

    <div buttonid="43" class="video-btns">

        <span class="label">Construction</span></div>

    <div buttonid="44" class="video-btns">

        <span class="label">Power</span></div>

    <div buttonid="45" class="video-btns">

        <span class="label">Oil</span></div>

    <div buttonid="103" class="video-btns">

        <span class="label">All available industries</span>

    </div>

</div>

这是js ajax


$("#interactive-layers").on("click", ".video-btns", function(){

    if( $(e.target).find("span.label").html()=="Confirm" ) {


        var selectedCountries = [];


        $('.video-btns .selected').each(function () {

            selectedCountries.push( $(this).parent().find("span.label").html() ) ;

        });


        if( selectedCountries.length>0 ) {

            if(selectedCountries.indexOf("All available countries")>-1) {

                selectedCountries = [];

            }



        } else {


            return;

        }


        var ajaxurl = "";

        if(selectedCountries.length>0) {

            ajaxurl = "data.php";

        } else {

            ajaxurl = "dataall.php";


        }

现在,当用户单击All available industriesbtn 并选择一个国家/地区时,我会 [0,0]进入控制台。

我需要改变什么才能得到我想要的?任何帮助或建议将不胜感激,


牧羊人nacy
浏览 146回答 3
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)) {&nbsp; &nbsp; $totalProjects += $row['SumofNoOfProjects'];&nbsp; &nbsp; $totalBudget += $row['SumofTotalBudgetValue'];}echo json_encode([$totalProjects, $totalBudget]);

慕村9548890

您可以使用 SQL JOIN 运算符,或者在这种情况下,隐式连接将是最干净的:$result&nbsp;=&nbsp;mysqli_query($conn,&nbsp;"SELECT&nbsp;*&nbsp;FROM&nbsp;construction,&nbsp;power,&nbsp;oil_and_gas,&nbsp;industrial&nbsp;WHERE&nbsp;construction.Countries&nbsp;=&nbsp;power.Countries&nbsp;AND&nbsp;power.Countries&nbsp;=&nbsp;oil_and_gas.Countries&nbsp;AND&nbsp;oil_and_gas.Countries&nbsp;=&nbsp;industrial.Countries");您需要 WHERE 条件,以便它知道每个不同表的行是如何相互关联的。您可以使用表的别名将其缩短一点:$result&nbsp;=&nbsp;mysqli_query($conn,&nbsp;"SELECT&nbsp;*&nbsp;FROM&nbsp;construction&nbsp;as&nbsp;C,&nbsp;power&nbsp;as&nbsp;P,&nbsp;oil_and_gas&nbsp;as&nbsp;G,&nbsp;industrial&nbsp;as&nbsp;I&nbsp;WHERE&nbsp;C.Countries&nbsp;=&nbsp;P.Countries&nbsp;AND&nbsp;P.Countries&nbsp;=&nbsp;G.Countries&nbsp;AND&nbsp;G.Countries&nbsp;=&nbsp;I.Countries");但是,在这种情况下,我认为您可能需要考虑更改数据库的结构。似乎您在它们之间重复了很多列。也许这些都可以在一个表中,有一个“类型”列,指定它是电力、建筑等。然后您可以只查询一个表并按国家/地区名称分组以获得所有结果,而无需跨 4 的混乱连接表。

墨色风雨

单表看起来还可以。(本答案的其余部分不完整,但可能有用。)首先,让我们设计将请求数据的 URL。.../foo.php?industry=...&country=...但是,不是在客户端中对“全部”进行特殊的外壳,而是在服务器中进行。也就是说,工业的最后一个按钮将生成&nbsp; &nbsp; ?industry=all并且 PHP 代码不会将其包含在WHERE子句中:&nbsp; &nbsp; 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') {&nbsp; &nbsp; $inds = array();&nbsp; &nbsp; foreach (explode(',', $industry) as $ind) {&nbsp; &nbsp; &nbsp; &nbsp; // .. should test validity here; left to user ...&nbsp; &nbsp; &nbsp; &nbsp; $inds[] = "'$ind'";&nbsp; &nbsp; }&nbsp; &nbsp; $wheres[] = "industry IN (" . implode(',', $inds) . )";}// ... repeat for country ...$where_clause = '';if (! empty($wheres)) {&nbsp; &nbsp; $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 ...&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$where_clause&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ORDER BY ...";// then execute it via mysqli or pdo (NOT mysql_query)现在,让我们谈谈使用 AJAX。或不。有2个选择:您可以通过 a 调用 PHPGET并让 PHP 显示一个新页面。这意味着 PHP 将构建结果表。您可以使用 AJAX 来请求数据。这意味着 Javascript 将构建结果数据。选择哪个选项可能取决于您更熟悉哪种语言。
打开App,查看更多内容
随时随地看视频慕课网APP