1.情境:如果你新建了个网站,却没有数据库服务器,如何把你的表单信息,提交到服务端后台,收集数据。

2.思路:如果用传统的form action 提交到一个form.php页面,此时只能存储一次数据,再次提交会覆盖之前的数据。

第一种方法:此时考虑新建一个文件可以存放数据。txt文件可以存储数据,json文件也可以存储数据,此案例采用把收集到的数据为数组格式,直接存入php文件中,并在另一个文件中读取存入的数组。

异步提交form表单数据,使用$ajax

表单样式和数据呈现表单:

1.使用Vuejs和Element-UI组件设计表单验证

    <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
<el-form-item label="NAME & SURNAME*" prop="name">
<el-input v-model="ruleForm.name" name="username"></el-input>
</el-form-item>
<el-form-item
prop="email"
label="EMAIL*"
>
<el-input v-model="ruleForm.email" name="email"></el-input>
</el-form-item>
<el-form-item
prop="phone"
label="PHONE"
>
<el-input v-model="ruleForm.phone" name="phone"></el-input>
</el-form-item>
<el-form-item label="POSITION*" prop="position">
<el-select v-model="ruleForm.position" name="position">
<el-option v-for="item in options" :key="item.value" :value="item.value" :label="item.label"></el-option>
</el-select>
</el-form-item>
<input name="submitdate" type="hidden" id="inittime" value=""/>
<el-form-item>
<el-button type="primary" @click="register">提交</el-button>
</el-form-item>
</el-form>
//此时表单验证的一些设定
<script>
// 创建根实例,使用vuejs和Element-UI
new Vue({
el: '#app',
data() {
return {
options: [{
value: 'CustomerRepresentative',
label: 'Customer Representative'
}, {
value: 'RetentionRepresentative',
label: 'Retention Representative'
}, {
value: 'HumanResources',
label: 'HumanResources'
}],
default: 'CustomerRepresentative',
ruleForm: {
name: '',
email: '',
phone:'',
position:'CustomerRepresentative',
},
rules: {
name: [
{ required: true, message: 'Please enter your name and surname *', trigger: 'blur' },
],
email:[
{ required: true, message: 'Please enter your email *', trigger: 'blur' },
{ type: 'email', message: 'Please enter your correct email *', trigger: ['blur', 'change'] }
],
phone:[
{ required: true, message: 'Please enter your phone *', trigger: 'blur' },
]
},
position: [
{ required: true, message: '请选择活动区域', trigger: 'change' }
],
}
},
</script>

创建form表单

2。收集表单数据,并使用formData,使用Jquery的ajax提交数据给新的文件

<script>
methods: {
register: function () {
/**date**/
var date = new Date();
var seperator1 = "-";
// var seperator2 = ":";
var month = date.getMonth() + 1;
var strDate = date.getDate();
if (month >= 1 && month <= 9) {
month = "0" + month;
}
if (strDate >= 0 && strDate <= 9) {
strDate = "0" + strDate;
}
//时间格式为YY-MM-DD HH:mm:ss
var currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate
// + " " + date.getHours() + seperator2 + date.getMinutes()
// + seperator2 + date.getSeconds();
$('#inittime').val(currentdate); let data=this.ruleForm;
let formData=new FormData();
formData.append('name',data.name);
formData.append('email',data.email);
formData.append('phone',data.phone);
formData.append('position',data.position);
formData.append('submitdate',currentdate);
// console.log(formData.get('submitdate'));
$.ajax({
url:"form.php",
type:'post',
cache:false,
processData: false,
contentType: false,
data:formData, success: function(msg){
alert('Thanks,Your information has submitted');
// console.log(msg);
// $("#result").append("你的名字是:"+msg.name+"");
}
}); }
},
</script>

定义FormData数据,ajax提交表单

!!!:此时的dataType可以省略不写,会自动读取所提交的数据格式。

3.定义提交的form.php文件,并把收集到的数组保存到新的php文件中(此时我的文件:menugroup.php)

<?php
header("Content-type:text/html;charset=utf-8");
$username = $_POST['name']; //获取索引
$email = $_POST['email'];
$phone = $_POST['phone'];
$position = $_POST['position'];
$submitdate = $_POST['submitdate'];
$dd = array('username'=>$username,'email'=>$email ,'phone'=>$phone,'position'=>$position,'date'=>$submitdate); //转换成数组类型
$cachefile ='menugroup.php';
echo (var_export($dd,true));
//exit();
$arr = include('menugroup.php');
$arr[] =$dd;
$str = "<?php return ".var_export($arr,true).';';
echo $str;
file_put_contents($cachefile,$str);
//alert("保存成功!"); ?>

提交数据的form.php文件

4.messages.php读取数组为table表单在页面中。

<?php
// 从文件中读取数据到PHP变量
header("Content-type:text/html;charset=utf-8");
$json_string = include('menugroup.php');
// $json_string=stripslashes(html_entity_decode($json_string)); // 把JSON字符串转成PHP数组
// $data =json_decode($json_string, true ); // 显示出来看看
// var_dump($json_string);
// echo $data['name'];
echo '<table border="1" width="700" align="center" cellpadding="0" cellspacing="0">';
echo '<caption><h1>Application Information</h1></caption>';
echo '<tr bgcolor="#dddddd">';
echo '<th>ID</th><th>NAME</th><th>EMAIL</th><th>PHONE</th><th>POSITION</th><th>DATE</th>';
echo '</tr>';
foreach($json_string as $k => $v){
// echo $k . '<br>';
// print_r($v);
// echo '<br>';
echo '<tr><td>'.($k+1).'</td>';
foreach ($json_string[$k] as $index => $value) {
// echo $k . '<br>';
// echo $index . '<br>';
echo '<td align="center">'.$value.'</td>';
}
echo '</tr>';
}
echo '</table>';
?>

读取数据到页面中

下面是尝试使用纯JavaScript实现ajax异步提交数据

var xmlHttp = new XMLHttpRequest();
xmlHttp.onreadystatechange = function()
{
if(xmlHttp.readyState == 4 && xmlHttp.status == 200)
{
var formresult = xmlHttp.responseText;
alert('sussess');
// console.log(formresult);
}
}
xmlHttp.open("post", "form.php",true);
xmlHttp.send(formData);

PHP实现没有数据库提交form表单到后台并且显示出数据列表(Vuejs和Element-UI前端设计表单)的更多相关文章

  1. form enctype:"multipart/form-data",method:"post" 提交表单,后台获取不到数据

    在解决博问node.js接受参数的时候,发现当form中添加enctype:"multipart/form-data",后台确实获取不到数据,于是跑到百度上查了一下,终于明白为什么 ...

  2. multipart/form-data post 方法提交表单,后台获取不到数据

    这个和servlet容器有关系,比如tomcat等. 1.get方式 get方式提交的话,表单项都保存在http header中,格式是 http://localhost:8080/hello.do? ...

  3. vue2.0+Element UI 实现动态表单(点击按钮增删一排输入框)

    对于动态增减表单项,Element UI 官方文档表单那一节已经介绍得很清楚了,我之前没有看见,绕了很多弯路,这里针对点击按钮增删一排输入框的问题做一个总结. 效果图如下 存在一排必填的姓名与手机号, ...

  4. Element ui 中的表单提交按钮多次点击bug修复

  5. vue 使用 element ui动态添加表单

    html部分 <div class="hello"> <el-form :model="dynamicValidateForm" ref=&q ...

  6. element ui动态生成表单数据与校验(后台传入数据)

    前言 最近有一个需求是通过后台返回的数据,生成表单并添加校验.在做的过程中,动态表单挺好做,关键是校验.困扰了我2天,最后通过查找资料和"运气"终于解决了.解决问题关键点:vue的 ...

  7. Jquery通过Ajax方式来提交Form表单

    今天刚好看到Jquery的ajax提交数据到服务器的方法,原文是: 保存数据到服务器,成功时显示信息. jQuery 代码: $.ajax({ type: "POST", url: ...

  8. AJAX异步提交form表单

    记录: 网上有说怎么做,没说怎么接收,打印了一下数据,记录一下取值: 比如说有如下form: <form id="form1" name="form1" ...

  9. html表单通过关联数组向php后台传多条数据并遍历输出

    通过表单向php后台传多条数据,以关联数组方式呈现,废话不多说,代码附上: html表单代码,方式我设置为get: <form action="php/cart.php" m ...

  10. 数据库之mysql篇(3)—— mysql创建/修改数据表/操作表数据

    创建数据表:create table 数据表名 1.创建表规范 create table 表名( 列名   数据类型    是否为空   自动排序/默认值  主键/外键/唯一键, 列名   数据类型 ...

随机推荐

  1. Make It Equal 题解

    Problem Link 简要题意 翻译很清楚. 思路 提供一种简单直接的思路. 可以发现最多会操作 \(n\) 次. 那么就可以每次直接枚举切的高度 \(h\),检查更改是否超过 \(k\),之后暴 ...

  2. Rust 实现日志记录功能

    目录 log 日志库标准 简单示例 使用方法 库的开发者 应用开发者 日志库开发者 使用 log4rs 添加依赖 配置文件 运行项目 参考文章 log 日志库标准 log 是 Rust 的日志门面库, ...

  3. #线性筛,哈希#CF1225D Power Products

    题目 给定一个长度为 \(n\) 的正整数序列 \(a\),问有多少对 \((i,j),i<j\) 使得存在一个整数 \(x\) 满足 \(a_i\times a_j=x^k\) 分析 将 \( ...

  4. 今晚19:00知识赋能第2期直播丨OpenHarmony智能家居项目之控制面板界面设计

    OpenAtom OpenHarmony(以下简称"OpenHarmony")开源开发者成长计划项目自 2021 年 10 月 24 日上线以来,在开发者中引发高度关注. 成长计划 ...

  5. Matplotlib绘图设置---坐标轴刻度和标签设置

    每个axes对象都有xaxis和yaxis属性,且xaxis和yaxis的每一个坐标轴都有主要刻度线/标签和次要刻度线/标签组成,标签位置通过一个Locator对象设置,标签格式通过一个Formatt ...

  6. Quanto: PyTorch 量化工具包

    量化技术通过用低精度数据类型 (如 8 位整型 (int8)) 来表示深度学习模型的权重和激活,以减少传统深度学习模型使用 32 位浮点 (float32) 表示权重和激活所带来的计算和内存开销. 减 ...

  7. C++ 获取数组大小、多维数组操作详解

    获取数组的大小 要获取数组的大小,可以使用 sizeof() 运算符: 示例 int myNumbers[5] = {10, 20, 30, 40, 50}; cout << sizeof ...

  8. 重走py 之路 ——列表(一)

    前言 因为最近公司有python项目维护,所以把python的基础入门的书整理一遍,因为有些忘记了,同时在看<<python编程>>这本书的时候觉得对有基础的有很多的赘余,打算 ...

  9. chrome浏览器代理插件SwitchyOmega使用

    第一步:下载SwitchyOmega插件 Proxy_SwitchyOmega_2.5.21.crx 第二步:安装插件, 1,在chrome扩展程序开启开发者模式: 2,将插件拖过来: 第三步:设置代 ...

  10. K8s集群nginx-ingress监控告警最佳实践

    本文分享自华为云社区<K8s集群nginx-ingress监控告警最佳实践>,作者:可以交个朋友. 一 背景 nginx-ingress作为K8s集群中的关键组成部分.主要负责k8s集群中 ...