php 在同一个表单中加入和改动
大家写站点的时候可能都会遇到这样的情况,就是写一个表单,这个表单是用来加入一篇文章的,我们屁颠屁颠的在后台接收数据,然后存入数据库.如今有个问题.当你要对该文章进行改动的时候,你是怎么处理的?
我的方法是在同一个表单中做文章,以下的样例是我用 Thinkphp框架写的代码,假设你不懂Thinkphp,没有关系,我仅仅是想说说我的解决方式.
前台假设是这种.
<form method="POST" action="{:U('article/add')} >
<input type="text" name="title" />
<textarea name="content" ></textarea>
<input type="submit" name="submit" />
</form>
说明,表示提交到article控制器的add方法.进行接收操作.
就是这样一个简单的表单,
我们在后台直接接收数据.
public function add{
if(IS_POST){
//这里事实上能够使用在button上加一个name="submit"属性.然后使用if(isset($_POST['submit'])来推断post提交.
$title = $_POST['title'];
$content = $_POST['content'];
if($title&&$content){
//插入数据.
$flag = 模型->add(post 过来的数据.);
if($flag) $str = "成功";
else $sttr="失败";
}else{
$str = "失败,标题或者内容不能为空!";
$this->error($str,U('article/index'));
exit;
}
//返回操作结果.
$this->success("加入".$str,U('article/index')); //跳转到文章列表 页
exit;
}
$this->display();//假设不是提交,则显示我们的模板.
}
操作成功失败,跳回加入页面.这里注意一点,我在有些地方加入了一个exit 结构.主要是由于假设不加,会显示以下的模板文件.由于我没实用在那个if(IS_POST)后面加else.
//好,假设要进行改动.我们通过url连接,将其指向article 控制器的add方法,将id传递过去.,也就是上面的方法.
表单中,我们须要这样改动.
<form method="POST" action="{:U('article/add')} ><!--//action提交地址不变.-->
<input type="text" name="title" value="{$ret.title}"/><!--//加入内容.-->
<textarea name="content" >{$ret.content}</textarea>
<if condition="$ret">
<input type="hidden" name="id" value="{$ret.id}" /><!--//假设有该文章变量,则加入隐藏域id-->
</if>
<input type="submit" name="submit" />
</form>
我在表单中加入了一个隐藏域.假设有那个变量,则加入该id
后台处理页面.
public function add{
if(IS_POST){
$title = $_POST['title'];
$content = $_POST['content'];
if($title&&$content){
//插入数据.
//这里我先建立一个数组,将数据放入
$data = array(
'title' => $title,
'cntent'=> $content
);
if($id = $_POST['id']){
//表示有id...
$flag = 模型改动数据;
}else{
$flag = 模型加入数据;
$type = "加入";
}
if($flag) $str = "成功";
else $sttr="失败";
}else{
$str = "失败,标题或者内容不能为空!";
$this->error($str,U('article/index'));
exit;
}
//返回操作结果.
$this->success($type.$str,U('article/index')); //跳转到文章列表 页
exit;
}
//这里模板输出我们相同要注意.
if($id = $_GET['id']){
$this->ret = 模型通过$id 查询数据,放入模板中.
}
$this->display();//假设不是提交,则显示我们的模板.
}
好吧,逻辑比較混乱...以下拓展一点,假设有附件之类的呢?
该怎样处理呢.事实上原理类似.仅仅是你必须推断是否有附件提交过来. 使用 if($_FILES['file']['name'])来推断,由于假设仅仅写if($_FILES['file'])是不能推断确实有附件提交过来的.由于假设没有附件,该数组不为空,而是Array ( [name] => [type] => [tmp_name]
=> [error] => 4 [size] => 0 )这种内容.这个在if推断语句中当然是为真了.
所以我们要加上名字来推断...
好了,说了一堆渣渣,谢谢你能看完.
May it helpful to you .
Best Wishes.
php 在同一个表单中加入和改动的更多相关文章
- spring boot:单文件上传/多文件上传/表单中多个文件域上传(spring boot 2.3.2)
一,表单中有多个文件域时如何实现说明和文件的对应? 1,说明和文件对应 文件上传页面中,如果有多个文件域又有多个相对应的文件说明时, 文件和说明如何对应? 我们在表单中给对应的file变量和text变 ...
- 表单中Readonly和Disabled的区别(转载)
Readonly和Disabled是用在表单中的两个属性,它们都能够做到使用户不能够更改表单域中的内容.但是它们之间有着微小的差别,总结如下: Readonly只针对input(text / pass ...
- 表单中Readonly和Disabled的区别(转)
今天做form提交的时候,用到了disabled,form提交的时候怎么获取都是null,后来用hidden解决了这个问题,但是考虑到为什么,最后找到了原因,转载一篇文章,说明一下 原文:http:/ ...
- 使用val()方法设置表单中的默认选中项
有时候我们展示给用户的表单中的checkbox,radio,selec等标签的一些项是默认选中的.比方:当用户改动文章的时候,假设相应的栏目为下拉框的话,那么它的默认选中值应该是原来的栏目位置. 能够 ...
- 【转载】表单中 Readonly 和 Disabled 的区别
今天写代码,遇到表单提交的问题,某个字段在不同的情况下,要传递不同的值进行赋值,试过一些方法都有些问题,后来请教前端同学,使用 disabled 这个属性终于搞定了问题,查到一篇讲解 readonly ...
- 关于表单中Readonly和Disabled
Readonly和Disabled是用在表单中的两个属性,它们都能够做到使用户不能够更改表单域中的内容.但是它们之间有着微小的差别,总结如下: Readonly只针对input(text / pass ...
- SqlServer垂直分表 如何减少程序改动
当单表数据太多时,我们可以水平划分,参考 SqlServer 分区视图实现水平分表 ,水平划分可以提高表的一些性能. 而 垂直分表 则相对很少见到和用到,因为这可能是数据库设计上的问题了.如果数据库中 ...
- 表单中的ngModelController
测试表单中的ngController.直接看红字结论部分即可 <!DOCTYPE html> <html lang="en"> <head> & ...
- 多线程并发同一个表问题(li)
现有数据库开发过程中对事务的控制.事务锁.行锁.表锁的发现缺乏必要的方法和手段,通过以下手段可以丰富我们处理开发过程中处理锁问题的方法.For Update和For Update of使用户能够锁定指 ...
随机推荐
- 基于Myeclipse+Axis2的WebService开发实录
最近开始学习了下在Myeclipse开发工具下基于WebSerivce的开发,下面将相关相关关键信息予以记录 Myeclipse的安装,本文以Myeclipse2014-blue为开发环境,相关配置执 ...
- 笔记《javascript高级程序设计》 第12章 DOM2和DOM3
DOM2 级核心:在 1 级基础上构建,为节点添加更多方法和属性 DOM2 级视图:为文档定义了基于样式信息的不同视图 DOM2 级事件:说明了如何使用事件和DOM文档交互 DOM2 级样式:如何以编 ...
- Zeppelin0.6.2+sparkR2.0.2环境搭建
0.序 先吐槽一下网上旧版本的Zeppelin和R的安装,让我折腾了几个小时. 不过最终还是调通了也不容易,其实我现在一点R都没有学呢,只是刚看了一节课,但是这个工具既然出现在了Spark中,我想它还 ...
- DeltaFish 校园物资共享平台 第二次小组会议
软工第二周小组会议 会议地点:三教讨论区 会议时间:9:00 ~ 10:00 与会人员:软工小组成员 请假人员:刘鼎乾 整理人:艾寅中 会议记录 一.小组分工 在经过一周的调研后,组长根据调研结果和对 ...
- Dynamics CRM查询实体共享给哪些人
在mscrm中,如果想查询一条记录共享给了哪些人,需要用到PrincipalObjectAccess 表,sql如下: select u.FullName,a.RC_name,sup.SystemUs ...
- 用一条mysql语句插入多条数据
这篇文章主要介绍了在mysql中使用一条sql语句插入多条数据,效率非常高,但是原理其实很简单,希望对大家有所帮助 假如有一个数据表A: id name title addtime 如果需要插入n条数 ...
- Arduino 控制超声波测距模块
一.实物图 二.例子代码 用到数字2 和3 引脚,还有两个就是vcc GND两个阴脚,用模块连线比较简单
- 怎样批量删除PDF文件中的注释
日常我们在阅读一些PDF文章时候,我们会发现有些PDF文章带有非常多的注释,显得非常不美观,影响了阅读体验.那么PDF文章里的批注应该怎么进行删除呢?怎样批量删除PDF文件中的注释? 操作教程: ...
- bzoj 4994: [Usaco2017 Feb]Why Did the Cow Cross the Road III 树状数组_排序
Description 给定长度为2N的序列,1~N各处现过2次,i第一次出现位置记为ai,第二次记为bi,求满足ai<aj<bi<bj的对数 题解: 方法一: 搞一个KDtree, ...
- 微信小程序 PDF下载打印
在开发微信小程序时,需要打印生成的PDF,实现思路是:后端生成相应的PDF,微信小程序下载并打开. 但是微信小程序并不可以打印,所以需要借助其他APP比如:WPS,但是发现微信小程序down的PDF在 ...