如何用phpstudy給網(wǎng)站做留言板功能(含可視化面板+代碼講解)
時(shí)間:2023-10-13 05:54:02 | 來源:網(wǎng)站運(yùn)營
時(shí)間:2023-10-13 05:54:02 來源:網(wǎng)站運(yùn)營
如何用phpstudy給網(wǎng)站做留言板功能(含可視化面板+代碼講解):上次的文章說到,我給單位做了個(gè)內(nèi)網(wǎng)網(wǎng)站,目前暫時(shí)需要包含首頁展示、視頻播放、下載文件、留言板功能。前三個(gè)功能都很簡單,你直接用靜態(tài)html代碼連接對(duì)應(yīng)的視頻和文件就能實(shí)現(xiàn)。比較麻煩的是這個(gè)留言板功能,它需要連接數(shù)據(jù)庫,把提交的內(nèi)容上傳到數(shù)據(jù)庫的表中,實(shí)現(xiàn)動(dòng)態(tài)的插入信息,同時(shí)每次提交后還能再顯示出所有已經(jīng)提交了的信息。
level1:簡單地讀取提交的信息,給操作人一個(gè)反饋,表示我們收到你提交的信息啦!
效果如下:
HTML代碼如下:
當(dāng)然你可以根據(jù)自己的情況更改里面的代碼,比如多加幾個(gè)文本輸入框<input>,或者加一些類似于性別選項(xiàng)的單選框,又或者是其他的一些,但是調(diào)用本質(zhì)都是一樣的。
<form method="post" action="XXXXXX">
method="post"是指你提交的表單是以POST這種形式的方式傳輸?shù)?,action="XXXXXX",XXXX就是你存放調(diào)用的php的文件位置。
<option>是下拉菜單<select>的其中一個(gè)值,而且第一個(gè)<option>最好寫成提示語句“請(qǐng)選擇欄目”之類的,同時(shí)value屬性里面不要寫任何東西,這樣php調(diào)用的時(shí)候就不會(huì)生成任何的值。如果你第一個(gè)選項(xiàng)就設(shè)置了有用的下拉參數(shù),比如設(shè)置為“XX科室”,那么就算操作人沒有選擇任何的值,瀏覽器也會(huì)默認(rèn)操作人選擇了第一個(gè)選項(xiàng)。
不管是<select>還是<input><textarea>,它們都有一個(gè)name屬性,像這種:
<select name="department">
name是用來向PHP和MySQL傳輸信息的時(shí)候用以調(diào)用數(shù)據(jù)的。在這里我讓它們分別對(duì)應(yīng)department(科室),name(姓名),suggestion(意見)。
于是當(dāng)php調(diào)用它們的時(shí)候,在數(shù)據(jù)庫的表里它們就能分別插入到對(duì)應(yīng)的單元格里面。
數(shù)據(jù)庫面板中我提交的測(cè)試信息接下來新建一個(gè)php文件,然后數(shù)據(jù)如下:
因此當(dāng)留言者提交信息后, <form method="post" action="XXXXX.php">中的action會(huì)觸發(fā)這個(gè)php文件,運(yùn)行后的效果如下:
level2:在數(shù)據(jù)庫中創(chuàng)建表,然后往里面提交數(shù)據(jù)
雖然上述能夠進(jìn)行反饋,但事實(shí)上提交的資料并沒有傳遞到數(shù)據(jù)庫中,這時(shí)候我們還需要在數(shù)據(jù)庫中創(chuàng)建一張表,用于存放相關(guān)的信息,這個(gè)表就跟咱們平時(shí)做Excel一樣,表頭分別是你html表單里面的那些選項(xiàng),下方每一橫排就是每次提交的信息。
方法一:可視化新建表格
phpstudy里面有一個(gè)phpMyadmin的面板,可以可視化地操作數(shù)據(jù)庫,使用前先在左側(cè)軟件管理里面安裝phpmyadmin管理工具:
然后再在首頁點(diǎn)擊數(shù)據(jù)庫工具下拉菜單打開:
然后填寫你之前創(chuàng)建數(shù)據(jù)庫時(shí)候設(shè)置的賬號(hào)和密碼,登錄進(jìn)去
如果要新建表格,點(diǎn)擊左側(cè)這里的新建,然后再右側(cè)輸入對(duì)應(yīng)的欄目框,就可以了:
如果要?jiǎng)h除,需要點(diǎn)擊你設(shè)置的虛擬域名,然后點(diǎn)刪除這個(gè)表:
這里一定要注意你新建的這個(gè)表的名字,也就是上圖左側(cè)那一列,就是表名。它是你后續(xù)調(diào)用這個(gè)表的關(guān)鍵。方法二:代碼操作新建一個(gè)表
這里需要三個(gè)基本的函數(shù):
mysqli_connect()連接數(shù)據(jù)庫,輸入你在phpstudy面板中新建數(shù)據(jù)庫時(shí)設(shè)置的賬號(hào)密碼和數(shù)據(jù)庫名,localhost是指你的數(shù)據(jù)庫是在本地電腦上。
mysqli_query()操作數(shù)據(jù)庫
mysqli_close()關(guān)閉數(shù)據(jù)庫的連接
新建一個(gè)php文件,然后輸入以下代碼,打開瀏覽器運(yùn)行一次,就可以啦!
然后你在phpMyadmin里面刷新,就可以看到你創(chuàng)建的這個(gè)表(表名叫做suggestion)了。
接下來是往數(shù)據(jù)庫的這張表里面插入數(shù)據(jù):
先前創(chuàng)建表的那些代碼就不能再運(yùn)行了,因?yàn)槟愕谋硪呀?jīng)創(chuàng)建,不用重復(fù)創(chuàng)建表。你需要把那些代碼刪掉或者注釋掉,然后重新寫以下這些代碼,做數(shù)據(jù)插入:
由于你原先html文件里面調(diào)用的這個(gè)你寫的php文件,那么你在網(wǎng)頁上提交信息的時(shí)候,就會(huì)觸發(fā)這個(gè)php文件,然后它就能往數(shù)據(jù)庫的表里面?zhèn)鲾?shù)據(jù)。
html文件截圖網(wǎng)頁截圖數(shù)據(jù)庫中的信息截圖level3:提交完成后,將數(shù)據(jù)庫中的信息全部顯示出來
因?yàn)槭翘峤缓筝敵鋈康男畔?,因此你需要保留原先插入?shù)據(jù)的部分,然后再加上讀取數(shù)據(jù)的代碼,然后將它們用HTML的表格的形式在網(wǎng)頁上輸出,像這樣:
運(yùn)行后的效果:
到這里基本上一個(gè)簡單的留言功能就可以了,如果平時(shí)要求不高,這個(gè)表單已經(jīng)基本上能用了。level4:添加表單必填功能
上面這個(gè)表單存在一個(gè)問題,它是可以直接點(diǎn)擊提交的,哪怕它里面完全沒有輸入任何信息,也可以提交成功,但是在后臺(tái)就會(huì)形成空白的單元格。
所以如果要設(shè)置一些必填的選項(xiàng),需要把文件改一下。之前HTML和PHP是分開的兩個(gè)文件,這里需要把它們合并,把PHP的代碼穿插html文件中,并把html文件后綴變成.php
其中第一排if(isset($_POST['submit'])){}是用來檢查這個(gè)表單有沒有點(diǎn)擊過提交按鈕,如果點(diǎn)擊過,那么$_POST['submit']為真,執(zhí)行它下面的代碼,會(huì)開始檢查有沒有真的寫入數(shù)據(jù)到表但里面,這里就是把表單提交的東西賦值給這三個(gè)變量:
這里是任何一個(gè)為空,都要顯示提示信息,并把表單繼續(xù)顯示出來。同時(shí)表單原本的調(diào)用是調(diào)用的一個(gè)PHP文件,這里變成了action="<?php echo $_SERVER['PHP_SELF']?>",意思是直接調(diào)用自己。
這樣子的好處是可以在兩個(gè)輸入框中把value的值設(shè)置為上面的變量,也就是用戶已經(jīng)寫了的東西。用戶如果沒寫完就點(diǎn)擊了按鈕,那么他寫的東西可以直接存在這個(gè)變量里面,直接顯示出來,否則的話頁面會(huì)在點(diǎn)擊提交后變成一片空白,用戶又要重寫。
運(yùn)行效果如下: