将数据上传到网站

时间:2016-02-25 05:17:29

标签: javascript php html

我目前正在为我的网站制作网页。我的页面的目的是显示我的员工的每日统计信息。例如,他们的表现和客户满意度。我将按如下方式显示这些数据。

<body>

<table>
  <tr>
    <td>Bob</td> <!--Name-->
    <td>96%</td> <!--Customer Satisfaction-->
    <td>2%</td> <!--48 hour callback-->
  </tr>
  <tr>
    <td>Jack</td> <!--Name-->
    <td>98%</td> <!--Customer Satisfaction-->
    <td>5%</td> <!--48 hour callback-->
  </tr>
</table>

</body>

我想每天添加这些统计信息。我知道我可以每晚手动上传这些号码,但这似乎很乏味,因为我有30多名员工。我的问题是,是否有更简单的方法将数据上传到html文件?有没有办法向网络服务器发送电子邮件,让代码扫描数据,并获取这些数字并自动将这些数字更新到他们需要去的地方?任何建议或想法将不胜感激!谢谢。

2 个答案:

答案 0 :(得分:1)

您可以执行以下解决方案

  1. 使用监视工具(https://github.com/facebook/watchman)监视数据文件,您可以在其中更新数据,以便在更新该文件时将文件上传到您的网站。
  2. 在您的网站上编写一个端点来处理文件上传,这将保存上传的文件,从中解析数据并以所需的方式保存,以便在有人访问您的网站时显示它!
  3. 修改

    有关使用守望者的更多信息,请参阅this link

答案 1 :(得分:1)

是。有很多方法可以做到这一点。

最标准的方法是让员工将数据上传到服务器并将数据输入数据库,然后使用PHP根据数据库内容呈现HTML。

任务1 - 获取数据到服务器

您的第一个任务是获取服务器上的数据。 电子邮件不会成为这样做的方式。电子邮件使用SMTP / S和IMAP协议,这些协议可能非常棘手,需要知道错误(和庞大)的库来处理。使用非常友好的HTTP / S协议来发布数据,你会更高兴。

基本上HTTP帖子就是这样的。您在某个网页上添加了HTML form,您的员工可以将这些数据提交给您的服务器。它看起来像这样。

<form action="data_receiving_endpoint.php" method="post">
    Username:<br/>
    <input type="text" name="username" placeholder="Please input your full name."/>
    Password:<br/>
    <input type="password" name="password" placeholder="Please input your password."/>
    How You Feel About Working for Me Today:<br/>
    <input type="text" name="feelings" placeholder="Please input your feelings."/>
    <input type="submit" value="Submit"/>
</form>

您可以自己了解更多表格,但您应该注意的是

  1. action属性指向服务器上的某个页面。您可以更清楚地将action="data_receiving_endpoint.php视为<yourhostname>/data_receiving_endpoint.php
  2. method属性指定要使用的HTTP方法 - 在这种情况下为POST。
  3. 每个输入都有一个唯一标识它的name属性。
  4. 其中一个输入为type="submit"。这将是一个按钮,在点击时执行action
  5. 当用户点击&#34;提交&#34;浏览器将向您的服务器发出HTTP POST请求。该请求将包含一个看起来像这样的有效负载。

    username=Jimmy%20John&password=iamjimmyjohn&feelings=You%27re%20the%20worst%20boss%20in%20the%20world!
    

    &#34;%xx&#34;符号是HTML表单数据中不支持的字符的十六进制代码。翻译时,此数据变为

    username=Jimmy John
    &
    password=iamjimmyjohn
    &
    feelings=You're the worst boss in the world!
    

    任务2 - 在服务器中记录数据

    您的下一个任务是获取员工的数据,并将其存储在可用的地方,如数据库。对于这个例子,我假设你将使用MySQLi,你可能会使用TBH。

    接下来需要在HTML表单中action引用的URI处发生什么。您需要在/data_receiving_endpoint.php创建一个PHP文件。这将是一个脚本文件,将被执行以处理任何传入的请求。

    此PHP文件需要获取发布数据并将其提交到MySQLi数据库。它看起来像这样。如果您不熟悉SQL (Standard Query Language)语法,则需要了解它。

    <?php
        $dbhostname = 'localhost';
        $adminuser = 'thebossman';
        $adminpwd = 'secretPassword';
        $dbname = 'thebossmansdatabase';
        // connect to your database (it's its own server in a way)
        $connection = new mysqli($dbhostname, $adminuser, $adminpwd, $dbname);
        if ($connection->connect_error) {
            // if connection failed then abort
            header('HTTP/1.1 500 Internal Server Error');
            die('failed to establish connection');
        }
        // image you have a table named "DataTable"
        // first step is to validate the user's password
        // we can use variables from the post data by calling $_POST['variable name']
        $verifyCommand = 'SELECT * FROM DataTable WHERE username='.$_POST['username'];
        $result = $connection->query($verifyCommand);
        if ($result->num_rows == 0) {
            // the user is unknown, you should abort
            header('HTTP/1.1 403 Forbidden');
            die('user was not recognized.');
        }
        $row = $result->fetch_assoc();
        if ($row['password'] != $_POST['password']) {
            // the user cannot be authenticated
            header('HTTP/1.1 404 Unauthorized');
            die('The user was not authenticated.');
        }
        // now the user is authorized and you should update the database
        $updateCommand = 'UPDATE DataTable SET feelings='.$_POST['feelings'].' WHERE username='.$_POST['username'];
        if ($connection->query($updateCommand) !== TRUE) {
            // database update failed
            header('HTTP/1.1 500 Internal Server Error');
            die('database update failed');
        }
        // you're done. you can close the connection.
        $connection->close();
    php?>
    <!-- REMEMBER THE USER WILL BE SENT TO THIS PAGE SO THERE SHOULD BE SOME HTML BELOW THIS -->
    

    现在,您已将用户发布的数据安全地存储在您的服务器中。

    任务3 - 从数据库信息生成HTML

    这就是PHP的目的。在这里,您将设计一个脚本,根据服务器中数据库的内容动态创建网页。

    这是一个非常简单的过程。所有发生的事情是,<?php ... php?>包围的任何文本都将在HTML发送给用户之前执行。您可以使用echo方法将一行文本打印到HTML文件中。

    在页面开头你应该有这样的东西

    <?php
        $connection = new mysqli('localhost', 'thebossman', 'secretPassword', 'thebossmansdatabase');
        if ($connection->connect_error) {
            header('HTTP/1.1 500 Internal Server Error');
            die('failed to connect to database');
        }
    php?>
    

    然后,您将在脚本执行的整个时间内保持连接可用。记住你需要把底部放在

    <?php
        $connection->close();
    php?>
    

    从现在开始生成显示并不困难。基本上你只是想出一个系统的方法来填充数据。例如,而不是

    <table>
        <head>
            <th>Name</th>
            <th>Feelings</th>
        </thead>
        <tbody>
        <tr>
            <td>Jimmy John</td>
            <td>You&#39;re the worst boss in the world!</td>
        </tr>
        <tr>
            <td>Jenna Whatever</td>
            <td>I don&#39;t mind you.</td>
        </tr>
        </tbody>
    </table>
    

    您可以这样做来动态生成页面。

    <table>
        <head>
            <th>Name</th>
            <th>Feelings</th>
        </thead>
        <tbody>
    <?php
        $result = $connection->query('SELECT username, feelings FROM DataTable');
        while ($row = $result->fetch_assoc()) {
            echo '<tr><td>';
            // remember to escape special charaters
            echo htmlspecialchars($row['username']);
            echo '</td><td>';
            echo htmlspecialchars($row['feelings']);
            echo '</td></tr>';
        }
    php?>
    </tbody>
    </table>
    

    这基本上就是你所要求的。