• 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.



  • 相关阅读:
    HDU 4348 To the moon(可持久化线段树)
    HDU 5875 Function 大连网络赛 线段树
    HDU 5877 2016大连网络赛 Weak Pair(树状数组,线段树,动态开点,启发式合并,可持久化线段树)
    HDU 5876 大连网络赛 Sparse Graph
    HDU 5701 中位数计数 百度之星初赛
    CodeForces 708B Recover the String
    Java实现 蓝桥杯 算法提高 套正方形(暴力)
    ASP.NET生成验证码
    ASP.NET生成验证码
    ASP.NET生成验证码
  • 原文地址:https://www.cnblogs.com/liguangsunls/p/6899423.html
Copyright © 2020-2023  润新知