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 表名( 列名 数据类型 是否为空 自动排序/默认值 主键/外键/唯一键, 列名 数据类型 ...
随机推荐
- Spark技术生态
Spark的技术生态 Spark的技术生态包含了各种丰富的组件,而不同的组件提供了不同功能,以适应不同场景. Spark core spark core包含Spark的基本功能,定义了RDD的API以 ...
- Python---flask框架实现修改密码功能
数据库部分: 1 #重置密码 2 def reset_pass(phone,password): 3 conn,cursor=get_conn() 4 sql="update userdat ...
- 到底什么是AQS?面试时你能说明白吗!
写在开头 上篇文章写到CAS算法时,里面使用AtomicInteger举例说明,这个类在java.unit.concurrent.atomic包中,存储的都是一些原子类,除此之外,"java ...
- nginx启用HTTP2特性
本文于2017年2月底完成,发布在个人博客网站上. 考虑个人博客因某种原因无法修复,于是在博客园安家,之前发布的文章逐步搬迁过来. 查看当前nginx的编译选项 #./nginx -V nginx v ...
- 给蚂蚁金服 antv 提个 PR, 以为是改个错别字, 未曾想背后的原因竟如此复杂!
前言 什么? 你不了解G2Plot? 没关系, 今天咱们要分享的内容和G2Plot的关系, 就像雷锋和雷峰塔的关系. 因此, 不必担心听不懂. 我一直觉得, 如果我写的文章有人看不懂, 那一定是我写的 ...
- 手动给docusaurus添加一个搜索
新版博客用docusaurus重构已经有些日子了,根据docusaurus的文档上也申请了Algolia,想一劳永逸的解决博客的搜索问题.但是流水有意,落花无情. algolia总是不给我回复,我只能 ...
- 力扣434(java)-字符串中的单词个数(简单)
题目: 统计字符串中的单词个数,这里的单词指的是连续的不是空格的字符. 请注意,你可以假定字符串里不包括任何不可打印的字符. 示例: 输入: "Hello, my name is John& ...
- 力扣915(java&python)-分割数组(中等)
题目: 给定一个数组 nums ,将其划分为两个连续子数组 left 和 right, 使得: left 中的每个元素都小于或等于 right 中的每个元素.left 和 right 都是非空的.le ...
- CSS选择器练习--餐厅选择
1.题目:Select the plates 答案:plate 1 <div class="table"> 2 <plate></plate> ...
- 新型DDoS来袭 | 基于STUN协议的DDoS反射攻击分析
简介: 作为新型反射类型,目前仍存绕过防御可能性. 阿里云安全近期发现利用STUN(Session Traversal Utilities for NAT,NAT会话穿越应用程序)服务发起的DDoS反 ...