如何在PHP和JS中定制动态网站

How to customize a dynamic website in PHP and JS?

本文关键字:动态 网站 JS PHP      更新时间:2023-09-26

我正在一个网站上工作,分析我从几个远程仪表获得的能源数据。我使用JS, PHP和mySQL。我开发的网站与一个客户的数据(具体类型和远程仪表的数量)。这是我做的第一个网站,我有很多东西要学。

有以下步骤:

  1. 登录表单//每个人都一样
  2. PHP检查登录//每个人都一样
  3. 索引页//每个人都一样
  4. Javascript与AJAX函数将数据(日期范围)发送到php文件(calculation.php)以计算内容//JS文件对每个人都是一样的
  5. PHP文件从mySQL获取数据,并做了很多关于能源的计算,然后返回
  6. JS文件获取数据(通过AJAX),然后通过谷歌图表库显示图形
问题是获得AJAX POST(第4步和第5步结束)的PHP文件不会为每个客户机执行相同的计算。所以我不知道该怎么办,我有点迷路了。我想:
  1. 在PHP文件中为每个客户端添加一个条件,比如"if "client_id=X"//这看起来太糟糕了,有几十个客户端
  2. 为每个客户端编写不同的PHP文件。写的名字这个PHP文件在mysql表"clients"中。编写一个中间php文件,该文件将根据然后将特定的PHP文件"包含"到临时文件中。
  3. 将PHP PDO请求以字符串类型写入表
    "clients",然后从PHP文件"calculation.php"中查询。PHP文件将执行正确的命令。

这些解决方案对我来说似乎不太好(也许是第三个?)你知道吗?提前谢谢你。

编辑php代码示例

第一个客户:

$reponse1 = $bdd->prepare("SELECT DATE_FORMAT(Date, '%H:%i') AS timekey, AVG(Value) FROM meter1 WHERE Date>='$from' AND Date<='$to' GROUP BY timekey");
$reponse1->execute();
$myArrayLP24temp1['Hour']= $reponse1->fetchAll(PDO::FETCH_COLUMN, 0);
$reponse1->execute();
$myArrayLP24temp1['Value']= $reponse1->fetchAll(PDO::FETCH_COLUMN, 1);
$reponse2 = $bdd->prepare("SELECT DATE_FORMAT(Date, '%H:%i')AS timekey, AVG(Value) FROM meter2 WHERE Date>='$from' AND Date<='$to' GROUP BY timekey");
$reponse2->execute();
$myArrayLP24temp2['Value']= $reponse2->fetchAll(PDO::FETCH_COLUMN, 1);

for ($ii=0; $ii<24*4; ++$ii){    
    $meter1NoRound=$myArrayLP24temp1['Value'][$ii]*4;
    $meter2NoRound=$myArrayLP24temp2['Value'][$ii]*4;
    $meter1=round($meter1NoRound,1);
    $meter2=round($meter2NoRound,1);
    $myArrayLP24['rows'][]= array('c' => array( array('v'=>$myArrayLP24temp1['Hour'][$ii]), array('v'=>($meter1)), array('v'=>($meter2))));  

第二客户端:

$reponse1 = $bdd->prepare("SELECT DATE_FORMAT(Date, '%H:%i') AS timekey, AVG(Value) FROM meter1 WHERE Date>='$from' AND Date<='$to' GROUP BY timekey");
$reponse1->execute();
$myArrayLP24temp1['Hour']= $reponse1->fetchAll(PDO::FETCH_COLUMN, 0);
$reponse1->execute();
$myArrayLP24temp1['Value']= $reponse1->fetchAll(PDO::FETCH_COLUMN, 1);
for ($ii=0; $ii<24*4; ++$ii){    
    $meter1NoRound=$myArrayLP24temp1['Value'][$ii]*4;
    $meter1=round($meter1NoRound,1);
    $myArrayLP24['rows'][]= array('c' => array( array('v'=>$myArrayLP24temp1['Hour'][$ii]), array('v'=>($meter1))));  
上面的例子显示了两种不同的代码。第一个是两米的客户端,第二个是一米的客户端。它可以是10米,有时会有下标米我需要加起来有时不需要。因此,每个客户机的代码都是不同的(除了具有完全相同配置的客户机,但这种情况不会经常发生)。

为什么不在数据库中存储变量值?然后,当客户来的时候,你有所有需要的信息来进行计算。

尽可能地简化和标准化思考。永远不要忘记一个好的开发人员是一个懒惰的人;-)

编辑

当你说:

"问题是获取AJAX POST(步骤4和步骤5结束)的PHP文件不会对每个客户机进行相同的计算。"

你是什么意思?

  1. 每个客户端的计算公式不一样吗?
  2. 在公式中使用的值对于每个客户端是不同的吗?
我对你问题的理解是第一种情况。无论如何,对于这两种情况,将您需要的内容存储在DB中并使用它,因为它随客户端提供。

可能我没有很好地理解你需要什么。如果是,请发送一段代码来说明您的问题。