javascript - HTML表单本地存储

标签 javascript php mysql

我最近为我的 FRC 团队(FIRST 机器人团队)制作了一个快速 HTML 表单,以在比赛中评估其他团队及其机器人。目前,表单提交到MySQL服务器,这正是我们想要的,问题是,我们不会一直连接到互联网,所以我们希望能够在本地存储多个表单的信息,然后一次用户有 WiFi 连接,他们将填写的表格的整个集合转储到 MySQL 上。我在编程方面经验不是很丰富,因此首选简单的解决方案,但任何有效的解决方案都将受到赞赏。当前状态的表单可以在以下位置找到:

www.avirez.com/scouting

PHP 看起来像这样:

 <?php

// Create connection
$con=mysqli_connect("sqlStuff","moreSQL","evenMore","lastOne");

// Check connection
 if (mysqli_connect_errno())
   {
   echo "Failed to connect to MySQL: " . mysqli_connect_error();
   }

 $sql="INSERT INTO scouting_data (teamName, teamNumber, auto, truss, high, low, human, self, robotNotes, togethor, others, teamNotes)
 VALUES
 ('$_POST[teamName]','$_POST[teamNumber]','$_POST[auto]','$_POST[truss]','$_POST[high]','$_POST[low]','$_POST[human]','$_POST[self]','$_POST[robotNotes]','$_POST[togethor]','$_POST[others]','$_POST[teamNotes]')";

 if (!mysqli_query($con,$sql))
   {
   die('Error: ' . mysqli_error($con));
   }
mail("MyEmail@gmail.com","New data submission","A form has been submitted to the FRC        Scouting database","");
header("Location: thanks.html");

mysqli_close($con);

?>

最佳答案

如果没有互联网连接,他们如何获取表格?它在本地运行吗?

如果是,那么也许一个好的解决方案是在“无法访问数据库”的情况下添加对 csv 的简单写入,然后在表单中添加一个用于“发送无连接数据”的按钮。使用您的代码的示例可以是:

 if (mysqli_connect_errno())
   {
   //echo "Failed to connect to MySQL: " . mysqli_connect_error();
   $handle = fopen("noconnection.txt",'w+');
   fputcsv($handle, [
    $_POST[teamName],$_POST[teamNumber],
    $_POST[auto],$_POST[truss],
    $_POST[high],$_POST[low],
    $_POST[human],$_POST[self],
    $_POST[robotNotes],$_POST[togethor],
    $_POST[others],$_POST[teamNotes]
    ]);
   fclose($handle);
   }

然后为新按钮创建另一个脚本,该脚本将读取文件并将其保存到数据库:

if (($handle = fopen("noconnection.csv", "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
        $sql="INSERT INTO scouting_data (teamName, teamNumber, auto, truss, high, low, human, self, robotNotes, togethor, others, teamNotes)
             VALUES
             (".$data[0].",".data[1]....and so on...

             if (!mysqli_query($con,$sql))
               {
               die('Error: ' . mysqli_error($con));
               }
    }
    fclose($handle);
}

这不是最优雅的解决方案,但我认为它更容易。 希望有帮助。

关于javascript - HTML表单本地存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22393827/

相关文章:

javascript - 为什么我的展开运算符返回 SyntaxError : Unexpected Token?

javascript - $.when.apply 应用于 Promise 数组

java - 没有值从 php 返回到 android 应用程序

php - 如何使用 javascript 更改表单的输入值

javascript - 当 <a> 在另一页上单击并在另一页上打开特定选项卡时如何打开特定选项卡

javascript - 如果人们建议我不应该使用 .innerHTML,那么我应该改用什么?

php - 松散耦合与封装。平衡设计的最佳方法

php - 如何在 PHP 中设计一个对象

php - 如何在 php 中保持 mysql 连接

mysql - 出现错误 - 每个派生表都必须有自己的别名错误