php 在同一個表單中添加和修改

來源:互聯網
上載者:User

標籤: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){

    //這裡其實可以使用在按鈕上加一個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個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.