最近很多同學在學習的過程中遇到了亂碼問題。這很可能是因為大家疏忽了頁面編碼的問題。中文版的dreamweaver默認新建頁面是gb2312編碼格式,而我們用到的是utf-8格式。所以在編碼之間產生了沖突。
PS:第二章:文章管理系統【1】- 創建欄目(2)中提到過編碼修改為utf-8。
那如何解決這個問題呢?我們可以先在dw的菜單欄中選擇編輯>選擇參數進入設置頁面,選擇新建頁面,選擇默認編碼為utf-8并保存,以后創建的所有頁面都會已utf-8格式創建。
創建頁面之后可以看到默認代碼中有如下代碼:
我們只需要把如下代碼復制粘貼到已創建的所有界面,保存一次就可以解決舊頁面亂碼的問題。
修改欄目其實和創建欄目是差不多的。可以區別成創建欄目是提交一個新的數據到數據庫,修改欄目是對已有的數據編輯重新提交。
要對已有的數據進行編輯,首先要把已有的數據讀出來并在編輯頁面中顯示出來。
第一步就是要先告訴編輯頁面category_edit.php,我們需要讀出來的是具體哪一條數據。
那如何告訴編輯頁面具體是哪條數據呢?這時候就要用到我們的cat_id字段了,當然通過其他字段也可以實現。只不過cat_id這個字段是絕對不會重復的字段所以用這個字段是最保守的。
首先打開category_list.php頁面,我們在上一節中已經準備好了進入修改頁面的鏈接,其href的地址是?act=edit。
我們在鏈接地址后方加上&cat_id=$r[cat_id],改成?act=edit&cat_id=$r[cat_id]。
我們之前講到過在鏈接地址后方加問號“?”,后面可以跟上參數。當我們需要跟上多個參數的時候,在每個參數和參數值之間要用符號“&”來連接,就是鍵盤數字7上方的and符號。
保存好之后回到頁面把鼠標放在修改按鈕上方可以在瀏覽器左下方看到對應的連接地址后面多出來了cat_id=1這樣的結果。$r[cat_id]在上一節中已經用到過了就不再重復敘述了。
現在我們打開category_edit.php頁面,代碼改成如下:
第5、第6行與上一節課程學習到的內容大同小異,唯一的區別是SELECT * FROM 后面多出來了where cat_id=$_GET[cat_id]。
這是我們通過mysql語句查詢數據庫獲得結果集的時候指定條件的方法,where的后面cat_id=$_GET[cat_id]就是我們的查詢條件。
$_GET[cat_id]當然就是通過上面的鏈接?act=edit&cat_id=1格式點進來之后從url地址中獲取參數cat_id的值。
我們在這里沒有用到while循環,而把$r=mysql_fetch_array($category); 直接寫到了外面,這是因為我們在第5行的查詢代碼中已經指定了條件,所以獲取到的代碼集里只會有一個結果,我們只需要把這個唯一的結果轉換成數組的形式就可以,轉換成數組保存到變量$r之后我們就可以通過$r[cat_name]這種格式輸出出來了。我們把$r[cat_name]寫在了value中,目的是為了讓文本框顯示一個默認的值,當然你不去顯示這個默認值我們也是可以正常修改欄目的。
另外form的action部分變成了act=update&cat_id=$r[cat_id],act=update跟我們之前學過的提交頁面中的act=insert是一樣的道理,目的是為了提交之后執行對應的數據庫指令。后面跟上了cat_id=$r[cat_id]是為了提交之后告訴我們下一個需要執行update的頁面我們提交的是哪一條欄目。
我們點擊修改按鈕進入對應欄目的修改頁面可以看到如下結果:
我們所需要修改的欄目名稱已經可以正確顯示出來了。
下一步就是需要把這個頁面修改的內容重新提交到數據庫中。打開category.php頁面在代碼include(‘category_edit.php’);下方增加如下代碼:
基本跟創建欄目差不多,區別是mysql_query部分,我們通過“UPDATE 表名 SET 字段名=’更新值’ WEHRE 條件”的方式更新了數據表category中對應cat_id的數據。
修改欄目的功能就這樣就做好了。是不是灰常的簡單?
下面把刪除欄目的功能也一塊講了吧,也灰常簡單!
打開category_list.php頁面把a href=”?act=del”部分改成如下代碼:
href中的?act=del&cat_id=$r[cat_id],我相信不用我再解釋大家也能猜到了。
這里多了個onclick=””,onclick是HTML中的鼠標點擊事件,但鼠標點擊該鏈接的時候執行引號中的javascript語句。在點擊事件中寫javascript代碼的時候不需要在前后加上script和/script。通過該javascript代碼返回一個confirm確認提示,提示是否需要刪除對應的欄目。
像執行刪除這種不可挽回的操作的時候,我們在交互上需要把一步操作變成兩步操作。蘋果手機中左滑刪除是一樣的道理,用先左滑再刪除的方式變成了2步操作。
保存好之后點擊刪除按鈕可以看到如下提示:
現在就差在category.php頁面里增加act=del的時候需要執行的語句。在上面增加的修改代碼部分的下面增加如下代碼。
很簡單,DELETE FROM 表名 WHERE 條件,就可以在表中刪掉條件符合的數據了。
可能大家都聽程序猿同學們說過增刪改查,到這個階段我們就算是把最基本的增刪改查都學完了,以及條件語句和循環語句。
作業:通過“UPDATE 表名 SET”指令我們可以同時修改多個字段,格式如下:
UPDATE 表名 SET 字段名=”,字段名=”,字段名=” WHERE 條件
請在自己的欄目表里增加如備注 :之類的自定義字段,發布之后嘗試同時與名稱一起修改試試。