PHP+Mysql 實現留言板的功能

來源:互聯網
上載者:User
最近看了下PHP基礎文法,就想利用這些基本東西實現留言板,也是對基礎知識的一個鞏固。

什麼是留言板?一種可以用來記錄,展示文字資訊的載體。


現切入正題,說說本次留言板是怎麼實現!

首先使用者提交留言後,相關內容存入伺服器,當他想看的時候後台再把所有留言讀出來,最後顯示在瀏覽器上,使用者就可以看到留言了。

這其中後台需要便於讀寫資料的一個工具,我選擇MySQL資料庫來協助我完成這些事。


我寫了主要是三個php檔案,分別是:

conn.php 串連資料庫;

addmsg.php php從頁面讀取留言相關內容,並且把它存入(Insert)資料庫;

listmsg.php 從資料庫中讀取留言內容,然後把它顯示在頁面上;


1.準備建立資料庫表的結構,下面是我的表結構在phpMyAdmin下的:


建表文法

SQL CREATE TABLE 文法

CREATE TABLE 表名稱(列名稱1 資料類型,列名稱2 資料類型,列名稱3 資料類型,....)

2.php串連mysql資料庫,然後選擇其中一個資料庫,我這裡選的是bbs資料庫(ps 之前建立的) 下面介紹幾個要用到的php庫函數,


①mysql_connect("localhost", "root", "")

php串連mysql,參數分別是mysql地址(localhost代表本機),使用者名稱,密碼

傳回值:如果串連失敗返回false,成功返回一個串連標識符

②mysql_select_db($dbName, $conn);

mysql裡可以有很多db,所以你需要選擇一個其中一個db進行接下來的操作。

參數:第一個是資料庫名稱,第二個是連結標識符,可以把①中的傳回值放這裡,代表的是我將使用①中的mysql。

傳回值:false 串連失敗,true串連成功。

③mysql_query(query,connection)

參數:query代表你要mysql執行的語句

connection 可選,SQL串連標識符同上面所講

傳回值:mysql_query() 僅對 SELECT,SHOW,EXPLAIN或DESCRIBE語句返回一個資源標識符,如果查詢執行不正確則返回 FALSE。

對於其它類型的 SQL 陳述式,mysql_query() 在執行成功時返回 TRUE,出錯時返回 FALSE。

個人對這個傳回值的總結:此函數執行失敗就返回false;執行成功要看是什麼語句,如果是SELECT,SHOW,EXPLAIN 或 DESCRIBE 語句,那麼就會返回資源標識符,其他的語句就返回true ;

說了這麼多, 留言板的脈絡已經出來了

下面開始上代碼

conn.php

<span style="font-family:Comic Sans MS;font-size:14px;"><?php      include("head.php");      $dbName = "bbs";      $conn = @ mysql_connect("localhost", "root", "") or die("資料庫連結錯誤");      $flag = mysql_select_db($dbName, $conn);      mysql_query("set names 'GBK'"); //使用GBK中文編碼;            function toHtmlcode($content)      {          return $content = str_replace("\n","<br>",str_replace(" ", "&nbsp;", $content));      }  ?></span>

上面有一個toHtmlcode自訂函數功能是把字串中斷行符號(\n)替換成html中的換行<br>,把空格替換成html中的空格(&nbsp;)


其中有一個函數介紹如下

文法

str_replace(find,replace,string,count)

addmsg.php

<span style="font-family:Comic Sans MS;font-size:14px;"><?php  // 引用之前寫好的串連資料庫檔案  include("conn.php");    if(@$_POST['submit']){      $sql = "insert into message (id,user,title,content,lastdate)" .      "values ( '','$_POST[userName]','$_POST[title]','$_POST[content]',now())";      mysql_query($sql);      echo "添加成功";  }       ?>    <SCRIPT language=javascript>  function CheckPost()  {      if (myform.userName.value=="")      {          alert("請填寫使用者名稱");          myform.user.focus();          return false;      }      if (myform.title.value.length<5)      {          alert("標題不能少於5個字元");          myform.title.focus();          return false;      }      if (myform.content.value=="")      {          alert("必須要填寫留言內容");          myform.content.focus();          return false;      }        }  </SCRIPT>    <form action="addmsg.php"  method="post" name = "myform" onsubmit="return CheckPost();">      用名:<input type="text" size="10" name="userName" /><br/>      標題:<input type="text" name="title" /><br/>      內容:<textarea  name="content" cols="60" rows="9" ></textarea><br/>      <input type="submit" name="submit" value="提交留言" />  </form>        </span>

include 是引入conn.php,類似於c語言中include


$_POST 變數是一個數組,此變數用於收集來自 method="post" 的表單中的值,post發出的鍵

值對存於此$_POST數組中$_POST['submit'] 取鍵submit的值,如果觸發submit,也就是CheckPost返回為true時,會post值,

顯然$_POST['submit']不為空白,非空即為真,那麼就執行if裡面的插入語句。使留言內容儲存在mysql資料庫中。

listmsg.php

<span style="font-family:Comic Sans MS;font-size:14px;"><?php    include("conn.php");  ?>  <table width=500 border="0" align="center" cellpadding="5" cellspacing="1" bgcolor="#add3ef">  <?php       $sql = "SELECT * FROM message order by lastdate desc";    $query = mysql_query($sql);    while($row = mysql_fetch_array($query)){  ?>      <tr bgcolor="#eff3ff">    <td><b><big>      標題:<?= $row['title']?></big><b/>     <b><sub>      使用者:<?= $row['user']?></sub></b></td>    </tr>    <tr bgColor="#ffffff">    <td>內容:<?= toHtmlcode($row['content'])?></td>    </tr>  <?php     }  ?>  </table>    </span>

php與html代碼混編看起來還是比較亂的。

php從mysql中擷取留言內容,並把它顯示在頁面上,我這裡顯示在table裡。主要代碼就上面這些。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.