大家寫網站的時候可能都會遇到這種情況,就是寫一個表單,這個表單是用來添加一篇文章的,我們屁顛屁顛的在後台接收數據,然後存入數據庫.現在有個問題.當你要對該文章進行修改的時候,你是怎麼處理的?
我的方法是在同一個表單中做文章,下面的例子是我用 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.