程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> PHP和mysql+jqueyr建立類twitter站點

PHP和mysql+jqueyr建立類twitter站點

編輯:PHP綜合

介紹

通過twitter,用戶可以任何時候發布他們在做什麼,twitter會及時顯示這些信息。從而,每個朋友都能同時知道你在做什麼。twitter主頁如下:

在本教程中,我們將實現類似twitter的界面,並且會使用PHP實現信息發布功能,數據會保存到MySQL數據庫中。

第一步:界面布局

界面布局和twitter.com非常相似。本例中,只會顯示消息文本框和消息顯示區域,如上圖所示。Html代碼如下:

以下為引用的內容:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHtml 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xHtml1-transitional.dtd">
<Html XMLns="http://www.w3.org/1999/xHtml">
<head>
    <meta http-equiv="Content-Type" content="text/Html; charset=utf-8" />
    <title>jQuery Tutorial: Twitter-Like Site by Ji Guofei</title>
</head>
<body>
    <div id="title">
        <h1><a href="#"><img _fcksavedurl=""#"><img" _fcksavedurl=""#"><img" _fcksavedurl=""#"><img" _fcksavedurl=""#"><img" src="twilike.png" alt="Twitter-Like Site" ></a></h1>
    </div>
    <div id="arrow"><img src="images/arrow-up.gif" alt="arrow"/></div>
    <div id="container">
        <form id="commentForm">
            <fIEldset>
            <legend><span id="counter"></span> Characters</legend>
            <textarea id="message" name="message" ></textarea>
            <input name="btnSign" class="submit" type="submit" id="submit" value="Update" />
            </fIEldset>
        </form>

        <div id="messagewindow">
            This area will be used to display the messages.
        </div>
    </div>
    <div id="footer">
        <div id="footer_a">
        This is just a example to learn jQuery.
        </div>
    </div>
</body>
</Html>

將代碼保存為index.php,我們將向文件中添加一些PHP代碼以便顯示消息。

接著,我們可以用CSS定義頁面的樣式。CSS文件命名為style.CSS:

以下為引用的內容:

body {
    font:0.8em/1.5 "Lucida Sans Unicode", "Lucida Grande", Arial, Helvetica;
    color:#333;
    background:#9AE4E8 url('bg.gif') no-repeat fixed left top;
}

#title{
    margin:20px 0px 10px 380px;
}

#title img {
    border:0;
    width:150px;
}

#title h2{
    margin-top:10px;
    font-size:small;
}

#footer {
    text-align:center;
    margin-top: 10px;
    padding-bottom: 4px;
    padding-top: 4px;
}

#arrow {
    margin-top: 8px;
    padding-left: 420px;
}

#container, #footer {
    background-color:white;
    padding-top: 10px;
    color: #000000;
width:560px;
    margin-left: auto;
    margin-right: auto;
}

#footer {
    margin-bottom:30px;
}

#container {
    padding-bottom: 30px;
    width:560px;
    margin-left: auto;
    margin-right: auto;
}

#container form {
    margin:10px 0px 10px 50px;
}

legend {
    padding:0px 0px 0px 320px;
}
legend span {
    font-weight:bold;
}

#footer_a {
    display:inline;
    Word-spacing: 2px;
    font-size: 14px;
    padding-left: 10px;
}

fIEldset {
    border: none;
}
textarea {
    border: 1px dotted #449F00;
    width: 400px;
    height: 50px;
    padding: 5px;
    font-weight:bold;
    color:green;
}

當然,請不要忘了引用外部CSS文件。

<link media="screen" href="css/style.css" type="text/CSS" rel="stylesheet" />

第二步:用MySQL創建數據庫

MySQL是一個非常強大的數據庫系統,最重要的是,可以免費使用在我們的例子中,我們將使用MySQL保存我們的消息數據。創建一個新表“message”,其字段如下所列:

id: key of this table, integer, auto-increment
message: the text of message, string
date: the message date, data format

該表設計如下:

創建該表的sql腳本如下:

CREATE TABLE  `microblog`.`message` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `message` text NOT NULL,
  `date` datetime NOT NULL,
  PRIMARY KEY  (`id`)
);

第三步:用PHP配置MySQL連接

在本教程中,我們建立一個配置文件用於保存數據庫配置信息,例如主機名、用戶名、密碼、數據庫名稱,等等。文件config.PHP如下:

以下為引用的內容:
<?PHP
// Configuration
$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = '';
$dbname = 'microblog';

$conn = mysql_connect ($dbhost, $dbuser, $dbpass) or dIE ('I cannot connect to the database because: ' . MySQL_error());
MySQL_select_db ($dbname);
?>

在代碼中,mysql_connect()函數用於麗娜接mysql數據庫服務器。該函數有三個參數:主機名、用戶名和密碼。連接數據庫後,我們可以用函數mysql_select_db()查詢活動的數據庫,MySQL_select_db()需要一個參數,數據庫名稱。

第四步:實現信息發布功能

發布和顯示消息是本教程的核心功能。我們將使用jquery庫來實現它。首先我們應在Html頁面中包含jquery庫。

<script type=“text/Javascript” src=“js/jquery.JS”></script>

所有jquery代碼將被保存在main.JS中,也應被包含在Html頁面:

<script type=“text/Javascript” src=“js/main.JS”></script>

在main.JS中,我們應在編寫jquery代碼之前定義函數$(document).ready()。

$(document).ready(function(){
    //Place your codes here
});

實現發布新消息的AJax代碼如下:

$(document).ready(function(){
    $.post("backend.PHP",{
        message: $("#message").val(),
        action: "postmsg"
            }, function(XML) {
                $("#comm").Html("The latest Update: ");
                addMessages(XML);
            });
        return false;
    });
});

在代碼中,$post()函數用於通過AJax發布信息到後台邏輯backend.PHP。返回數據是XML格式。addMessages()函數用於不刷新頁面顯示新更新的消息。

function addMessages(XML) {
    message = $("message",XML).get(0);
    $("#comments").prepend("<li><p class='info'>Added on Today:</p>    <div class='body'>"
+ $("text",message).text() + "</div></li>");
    $("#message").val("").focus();

}

返回數據是XML格式,從firebug中,我們能看到:

下面是該XML文件的一個例子:

那麼,在上面的jquery代碼中,$(”text”,message).text()用於得到消息。請注意如何使用Javascript/jquery得到XML文件節點的值。

第五步:實現backend.PHP

backend.PHP文件用於接收前台的AJax請求,並返回XML格式的消息。其內容如下:

以下為引用的內容:
<?PHP
include("config.PHP");
header("Content-type: text/XML");
header("Cache-Control: no-cache");

foreach($_POST as $key => $value)
{
    $$key = MySQL_real_escape_string($value);
}

if(@$action == "postmsg")
{
    // prepare the query string
    $query = "INSERT INTO message (message, date) VALUES ('$message', current_date)";
mysql_query($query) or dIE('Error, query failed. ' . MySQL_error());
}

echo "<?XML version=\"1.0\"?>\n";
echo "\t<message>\n";
echo "\t\t<text>$message</text>\n";
echo "\t</message>\n";
?>

前台會從backend.PHP得到xml相應,並解碼XML文件顯示在頁面上。

第六步:用樣式顯示消息

用戶每次載入頁面,我們應在頁面上顯示舊的消息。因此,我們需要查詢數據庫以便得到舊的消息並顯示他們:

以下為引用的內容:
<div id="messagewindow">
<?PHP
include("config.PHP");
// prepare the query string
$query = "SELECT id, message, DATE_FORMAT(date, '%Y-%m-%d') ".
"FROM message ".
"ORDER BY id DESC ";

// execute the query
$result = mysql_query($query) or dIE('Error, query failed. ' . MySQL_error());

// if the guestbook is empty show a message
if(MySQL_num_rows($result) == 0)
{
echo "<h3 id='comm'>No updates now.</h3>";
echo "<ul id='comments'></ul>";
}
else
{
echo "<h3 id='comm'>The latest Update: </h3>" .
"<ul id='comments'>";

while($row = MySQL_fetch_array($result))
{
list($id, $message, $date) = $row;

$message = Htmlspecialchars($message);

$message = nl2br($message);

echo "<li><p class='info'>Added on $date :</p>";
echo "<div class='body'><p>" . $message . "</p>";
echo "</div></li>";
}
echo "</ul>";
}
?>
</div>
</div>

這些代碼也位於在index.PHP中,同樣,我們應用CSS定義一個漂亮的消息顯示:

以下為引用的內容:
#comments, #comments li{
    margin:0;
    padding:0;
    list-style:none;
}
#comments li{
    padding:.5em;
    margin:.5em 0;
    background:#fcfcfc;
    border:1px solid #e1e1e1;
}
#comments li .info{
    padding:.2em 20px;
    background:#f1f1f1 url(images/ico_comments.gif) no-repeat 2px 50%;
    margin:0;
    color:#333;
    font-family:Georgia, "Times New Roman", Times, serif;
}
#comments li .body{
    padding:.5em 20px;
}
#commentForm {
    width: 550px;
}

#messagewindow {
    padding: 25px;
    overflow: auto;
}

現在,在我們添加一個新的更新後,頁面看起來如下:

第七步:為輸入框創建字符計算

在twitter中有個有趣的功能,只允許用戶輸入最多140個字符,當用戶輸入時,twitter會告訴用戶,他/她還能輸入多少字符。如下所示:

在我們的教程中,我們沒必要限制用戶輸入為140個字符,當我們也可以計算用戶輸入了多少字符,並且能在用戶輸入時即時顯示字符計數。

該功能實現代碼如下:

$(document).ready(function(){
    $("#counter").Html($("#message").val().length + "");
    $("#message").keyup(function(){
        // get new length of characters
        $("#counter").Html($(this).val().length);
    });
});

現在,當用戶輸入時,字符計數會同時增加,如下所示:

結論

現在,我們完成了教程。最終作品看起來如下圖:

在本教程中,代碼僅僅用於演示jquery, PHP和MySQL的用法,因此,有時候看來不那麼優雅

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved