Rumah  >  Artikel  >  php教程  >  php 在同一个表单中添加和修改

php 在同一个表单中添加和修改

WBOY
WBOYasal
2016-06-13 09:34:41863semak imbas

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

我的方法是在同一个表单中做文章,下面的例子是我用 Thinkphp框架写的代码,如果你不懂Thinkphp,没有关系,我只是想说说我的解决方案.

前台如果是这样的.

说明,表示提交到article控制器的add方法.进行接收操作.

就是这样一个简单的表单,

我们在后台直接接收数据.

public function add{

if(IS_POST){

//这里其实可以使用在按钮上加一个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传递过去.,也就是上面的方法.

表单中,我们需要这样修改.


我在表单中添加了一个隐藏域.如果有那个变量,则添加该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.



Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:PHP SPL被遗落的宝石Artikel seterusnya:PHP实现函数重载