大家写站点的时候可能都会遇到这样的情况,就是写一个表单,这个表单是用来加入一篇文章的,我们屁颠屁颠的在后台接收数据,然后存入数据库.如今有个问题.当你要对该文章进行改动的时候,你是怎么处理的?

我的方法是在同一个表单中做文章,以下的样例是我用 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 在同一个表单中加入和改动的更多相关文章

  1. spring boot:单文件上传/多文件上传/表单中多个文件域上传(spring boot 2.3.2)

    一,表单中有多个文件域时如何实现说明和文件的对应? 1,说明和文件对应 文件上传页面中,如果有多个文件域又有多个相对应的文件说明时, 文件和说明如何对应? 我们在表单中给对应的file变量和text变 ...

  2. 表单中Readonly和Disabled的区别(转载)

    Readonly和Disabled是用在表单中的两个属性,它们都能够做到使用户不能够更改表单域中的内容.但是它们之间有着微小的差别,总结如下: Readonly只针对input(text / pass ...

  3. 表单中Readonly和Disabled的区别(转)

    今天做form提交的时候,用到了disabled,form提交的时候怎么获取都是null,后来用hidden解决了这个问题,但是考虑到为什么,最后找到了原因,转载一篇文章,说明一下 原文:http:/ ...

  4. 使用val()方法设置表单中的默认选中项

    有时候我们展示给用户的表单中的checkbox,radio,selec等标签的一些项是默认选中的.比方:当用户改动文章的时候,假设相应的栏目为下拉框的话,那么它的默认选中值应该是原来的栏目位置. 能够 ...

  5. 【转载】表单中 Readonly 和 Disabled 的区别

    今天写代码,遇到表单提交的问题,某个字段在不同的情况下,要传递不同的值进行赋值,试过一些方法都有些问题,后来请教前端同学,使用 disabled 这个属性终于搞定了问题,查到一篇讲解 readonly ...

  6. 关于表单中Readonly和Disabled

    Readonly和Disabled是用在表单中的两个属性,它们都能够做到使用户不能够更改表单域中的内容.但是它们之间有着微小的差别,总结如下: Readonly只针对input(text / pass ...

  7. SqlServer垂直分表 如何减少程序改动

    当单表数据太多时,我们可以水平划分,参考 SqlServer 分区视图实现水平分表 ,水平划分可以提高表的一些性能. 而 垂直分表 则相对很少见到和用到,因为这可能是数据库设计上的问题了.如果数据库中 ...

  8. 表单中的ngModelController

    测试表单中的ngController.直接看红字结论部分即可 <!DOCTYPE html> <html lang="en"> <head> & ...

  9. 多线程并发同一个表问题(li)

    现有数据库开发过程中对事务的控制.事务锁.行锁.表锁的发现缺乏必要的方法和手段,通过以下手段可以丰富我们处理开发过程中处理锁问题的方法.For Update和For Update of使用户能够锁定指 ...

随机推荐

  1. gdb打印vector

    1.gdb版本大于7.0 (gdb) p yourVector 2.打印整个vector (gdb) p *(yourVector._M_impl._M_start)@yourVector.size( ...

  2. chapter6 数据结构基础之习题 Parentheses Balance

    You are given a string consisting of parentheses () and []. A string of this type is said to be corr ...

  3. 常用MIME类型(Flv,Mp4的mime类型设置)

    也许你会在纳闷,为什么我上传了flv或MP4文件到服务器,可输入正确地址通过http协议来访问总是出现“无法找到该页”的404错误呢?这就表明mp4格式文件是服务器无法识别的,其实,这是没有在iis中 ...

  4. Mysql Event 自动分表

    create table TempComments Like dycomments; 上述 SQL语句创建的新表带有原表的所有属性,主键,索引等. 自动分表怎么做呢? 使用上述语句自动创建分表. 那么 ...

  5. SqlSever2005 一千万条以上记录分页数据库优化经验总结【索引优化 + 代码优化】

    对普通开发人员来说经常能接触到上千万条数据优化的机会也不是很多,这里还是要感谢公司提供了这样的一个环境,而且公司让我来做优化工作.当数据库中的记录不超过10万条时,很难分辨出开发人员的水平有多高,当数 ...

  6. 三维重建面试4:Jacobian矩阵和Hessian矩阵

    在使用BA平差之前,对每一个观测方程,得到一个代价函数.对多个路标,会产生一个多个代价函数的和的形式,对这个和进行最小二乘法进行求解,使用优化方法.相当于同时对相机位姿和路标进行调整,这就是所谓的BA ...

  7. OpenCV实现灰度直方图和直方图拉伸

    原文链接:http://blog.csdn.net/xiaowei_cqu/article/details/7600666 如有疑问或者版权问题,请移步原作者或者告知本人. 灰度直方图是数字图像中最简 ...

  8. sql 导入excel 遇到问题

    ALTER TABLE tab1 add id int identity primary key (注意:必须加identity,否则添加会失败) //导入excel时候 先把主键去掉 变为可为空,之 ...

  9. springboot 多数据源的实现

    相关的依赖 yml配置 java配置类: DataSourceConfigurerjava /** * Created by zhiqi.shao on 2017/11/20. */ @Configu ...

  10. Can't find variable: SockJS vue项目

    用的vue-cli(webpack-simple模板),在开发环境运行(npm run dev),一直都没有问题,突然在ios的safari中调试,出现报错:Can't find variable: ...