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



  • 相关阅读:
    爬虫与自动化实战,帮助小姐姐刷抖音完全解放掉双手
    推荐 5 个实用的黑科技网站,建议收藏!
    最全总结!聊聊 Python 发送邮件的几种方式
    推荐 iOS 上的一款黑科技自动化脚本:捷径
    拒绝降权!教你用 Python 确保制作的短视频独一无二
    推荐几款优质 Chrome 摸鱼插件,带你畅快划水
    再推荐 5 款私藏的优质 Chrome 插件
    如何利用 Python 爬虫实现给微信群发新闻早报?(详细)
    暑期辅导java方向计划(针对大二大三等小白)
    我用数据结构花了一夜给女朋友写了个h5走迷宫小游戏
  • 原文地址:https://www.cnblogs.com/liguangsunls/p/6899423.html
Copyright © 2020-2023  润新知