PHP实现没有数据库提交form表单到后台并且显示出数据列表(Vuejs和Element-UI前端设计表单)
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前端设计表单)的更多相关文章
- form enctype:"multipart/form-data",method:"post" 提交表单,后台获取不到数据
在解决博问node.js接受参数的时候,发现当form中添加enctype:"multipart/form-data",后台确实获取不到数据,于是跑到百度上查了一下,终于明白为什么 ...
- multipart/form-data post 方法提交表单,后台获取不到数据
这个和servlet容器有关系,比如tomcat等. 1.get方式 get方式提交的话,表单项都保存在http header中,格式是 http://localhost:8080/hello.do? ...
- vue2.0+Element UI 实现动态表单(点击按钮增删一排输入框)
对于动态增减表单项,Element UI 官方文档表单那一节已经介绍得很清楚了,我之前没有看见,绕了很多弯路,这里针对点击按钮增删一排输入框的问题做一个总结. 效果图如下 存在一排必填的姓名与手机号, ...
- Element ui 中的表单提交按钮多次点击bug修复
- vue 使用 element ui动态添加表单
html部分 <div class="hello"> <el-form :model="dynamicValidateForm" ref=&q ...
- element ui动态生成表单数据与校验(后台传入数据)
前言 最近有一个需求是通过后台返回的数据,生成表单并添加校验.在做的过程中,动态表单挺好做,关键是校验.困扰了我2天,最后通过查找资料和"运气"终于解决了.解决问题关键点:vue的 ...
- Jquery通过Ajax方式来提交Form表单
今天刚好看到Jquery的ajax提交数据到服务器的方法,原文是: 保存数据到服务器,成功时显示信息. jQuery 代码: $.ajax({ type: "POST", url: ...
- AJAX异步提交form表单
记录: 网上有说怎么做,没说怎么接收,打印了一下数据,记录一下取值: 比如说有如下form: <form id="form1" name="form1" ...
- html表单通过关联数组向php后台传多条数据并遍历输出
通过表单向php后台传多条数据,以关联数组方式呈现,废话不多说,代码附上: html表单代码,方式我设置为get: <form action="php/cart.php" m ...
- 数据库之mysql篇(3)—— mysql创建/修改数据表/操作表数据
创建数据表:create table 数据表名 1.创建表规范 create table 表名( 列名 数据类型 是否为空 自动排序/默认值 主键/外键/唯一键, 列名 数据类型 ...
随机推荐
- https://codeforces.com/gym/496137
AB略. C:想复杂了. 只要判断最大的那个能不能继续吃即可. D:我的做法是建完全图然后跑生成树. 实际上可以这么考虑:和a[1]不同的直接连,相同的就和上一轮和a[1]不同的店去连可以O(n). ...
- Notion笔记汉化
Notion笔记汉化 参考:https://github.com/Reamd7/notion-zh_CN 关注我的订阅号[靠谱杨阅读人生]回复[Notion]获取中文包 1.进入notion的安装路径 ...
- 实现一个简单的echarts柱状图PythonFlask
bar.html 1 <!DOCTYPE html> 2 <html style="height: 100%"> 3 <head> 4 < ...
- JDBC复习:创建MySQL数据表
1 try { 2 conn=JDBCUtil.getConnection(); 3 preparedStatement = conn.prepareStatement(DROP_TABLE_1); ...
- 优先队列(PriorityQueue)
> 此代码是在最大堆的基础上二次封装,请先阅读底层代码MaxHeap 优先队列 普通队列:先进先出:后进后出 优先队列:出队顺序和⼊入队顺序无关:和优先级相关: 为什么使用堆 代码清单 Queu ...
- #差分约束系统,Spfa,SLF优化#HDU 3666 THE MATRIX PROBLEM
题目 多组询问,给定一个\(n*m\)的矩阵\(C\)和一个区间\([L,R]\), 问是否存在一个长度为\(n\)的序列\(A\)和一个长度为\(m\)的序列\(B\), 使得所有 \[\frac{ ...
- #线段树合并#JZOJ 5365 通信
分析 取出一段区间后答案就是虚树边的个数的两倍, 考虑计算\(x\)与父亲的边对答案的贡献, 那么不能够贡献的就是\(x\)的子树下标连续的一段或者是非\(x\)的子树连续的一段, 考虑将\(x\)的 ...
- Android与STM32通信中巧妙解决中文乱码问题
前言 网上一大堆都是要多种格式相互转换,并且要很大的字库文件,对于小应用工程,小容量的STM32芯片,额外多出这些开销会感到蛮不舒服的,而且绝大部分的乱码问题时发生在STM32这边,所以本文是从And ...
- C++ 获取数组大小、多维数组操作详解
获取数组的大小 要获取数组的大小,可以使用 sizeof() 运算符: 示例 int myNumbers[5] = {10, 20, 30, 40, 50}; cout << sizeof ...
- IIS applicationHost.config 查找历史
背景 iis 有时候需要修改配置,一般来说,我们会去修改applicationHost.config配置,当然,很多时候我们都需要去备份一个配置文件,但是可能忘记了,那么是否有补救的方式? 补救方式 ...