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 表名( 列名 数据类型 是否为空 自动排序/默认值 主键/外键/唯一键, 列名 数据类型 ...
随机推荐
- python整理1992、2009国家标准学科分类及代码数据并存入MySQL数据库
文件内容 处理结果 代码 1 import pandas as pd 2 import pymysql 3 4 5 def get_subject_1992(): 6 res={} 7 the_for ...
- MybatisPlus的那些坑
1.实体类属性会被错误解析,需要加上注解@TableField @TableField("front_of_id_card") //身份证正面 private String fro ...
- #树状数组,dp#SGU 521 North-East
题目 在平面上有 \(n\) 个点,现在有一个人要从某个点出发, 每次只能到达横纵坐标都超过原坐标的点,也就是 \(x_j<x_i,y_j<y_i\) 如果他要经过最多的点,那么哪些点是可 ...
- 新零售SaaS架构:客户管理系统架构设计(万字图文总结)
什么是客户管理系统? 客户管理系统,也称为CRM(Customer Relationship Management),主要目标是建立.发展和维护好客户关系. CRM系统围绕客户全生命周期的管理,吸引和 ...
- OpenHarmony轻松玩转GIF数据渲染
OpenAtom OpenHarmony(以下简称"OpenHarmony")提供了Image组件支持GIF动图的播放,但是缺乏扩展能力,不支持播放控制等.今天介绍一款三方库--o ...
- OpenHarmony Liteos_A内核之iperf3移植心得
一.iperf3工作原理 iperf3主要的功能是测试基于特定路径的带宽,在客户端和服务器端建立连接(三次握手)后,客户端发送一定大小的数据报并记下发送的时间,或者客户端在一定的时间内发送数据并记下发 ...
- Matplotlib绘图设置--- 图例设置
plt.legend()和ax.legend()参数设置 自动会将每条线的标签与其风格.颜色进行匹配. plt.legend(*args, **kwargs) Place a legend on th ...
- 聊聊ChatGLM3多用户并发API调用的问题
转载请备注出处:https://www.cnblogs.com/zhiyong-ITNote 背景 目前在公司内部4张A10的GPU服务器上部署了ChatGLM3开源模型:然后部署了官方默认的web_ ...
- HMS Core 3D Engine助您实现逼真3D渲染效果,构筑大型3D数字世界
HMS Core 3D Engine是一款高性能.高画质.高可靠的实时3D引擎,旨在帮助开发者制作高品质的3D应用.3D Engine将为您提供可编程渲染管线,多维粒子系统,3D角色与动画,超大地形地 ...
- 阿里开源的32B大模型到底强在哪里?
阿里巴巴最近开源了一个320亿参数的大语言模型Qwen1.5-32B,网上都说很强很强,那么它到底强在哪里呢? 更高的性价比 Qwen1.5-32B中的B是billion的意思,也就是10亿,32B就 ...