最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

php實(shí)現(xiàn)網(wǎng)站留言板功能

 更新時(shí)間:2021年08月23日 14:29:00   投稿:lijiao  
這篇文章主要介紹了php實(shí)現(xiàn)網(wǎng)站留言板功能,主要仿照了暢言留言板和網(wǎng)易跟帖樣式進(jìn)行制作,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

我要實(shí)現(xiàn)的就是下圖的這種樣式,可參考下面這兩個(gè)網(wǎng)站的留言板,他們的實(shí)現(xiàn)原理都是一樣的

暢言留言板樣式:

網(wǎng)易跟帖樣式:

原理

需要在評(píng)論表添加兩個(gè)主要字段 id 和 pid ,其他字段隨意添加,比如文章id、回復(fù)時(shí)間、回復(fù)內(nèi)容、回復(fù)人什么的。
其中pid就是當(dāng)前已經(jīng)回復(fù)過(guò)的評(píng)論的id。

從上圖可以看出,里面每一層的pid就是就是他上一層評(píng)論的id。仔細(xì)觀察下上面的布局。是不是很像PHP中的多維數(shù)組?如果你能想到,那么就簡(jiǎn)單了。

實(shí)現(xiàn)方法

1.前臺(tái):這個(gè)比較簡(jiǎn)單 就是div嵌div。然后設(shè)置div的border和margin  padding就行了

<div class="comment"> 
 <div class="comment"> 
  <div class="comment"> 
 
  </div> 
 </div> 
</div> 
 
<div class="comment"> 
 
</div> 

2、后臺(tái) :用到了兩次遞歸,首先用遞歸把數(shù)據(jù)庫(kù)中的結(jié)果重組下,重組之后,然后用遞歸輸出上面的那種前臺(tái)代碼即可
comment表結(jié)構(gòu)和內(nèi)容如下

然后直接讀出這個(gè)表中的所有評(píng)論。可以得到如下數(shù)組

Array 
( 
 [0] => Array 
  ( 
   [id] => 1 
   [pid] => 
   [content] => 評(píng)論1 
  ) 
 
 [1] => Array 
  ( 
   [id] => 2 
   [pid] => 
   [content] => 評(píng)論2 
  ) 
 
 [2] => Array 
  ( 
   [id] => 3 
   [pid] => 
   [content] => 評(píng)論3 
  ) 
 
 [3] => Array 
  ( 
   [id] => 4 
   [pid] => 1 
   [content] => 評(píng)論4回復(fù)評(píng)論1 
  ) 
 
 [4] => Array 
  ( 
   [id] => 5 
   [pid] => 1 
   [content] => 評(píng)論5回復(fù)評(píng)論1 
  ) 
 
 [5] => Array 
  ( 
   [id] => 6 
   [pid] => 2 
   [content] => 評(píng)論6回復(fù)評(píng)論2 
  ) 
 
 [6] => Array 
  ( 
   [id] => 7 
   [pid] => 4 
   [content] => 評(píng)論7回復(fù)評(píng)論4 
  ) 
 
 [7] => Array 
  ( 
   [id] => 8 
   [pid] => 7 
   [content] => 評(píng)論8回復(fù)評(píng)論7 
  ) 
 
 [8] => Array 
  ( 
   [id] => 9 
   [pid] => 8 
   [content] => 評(píng)論9回復(fù)評(píng)論8 
  ) 
 
 [9] => Array 
  ( 
   [id] => 10 
   [pid] => 8 
   [content] => 評(píng)論10回復(fù)評(píng)論8 
  ) 
 
) 

然后我們就需要把這個(gè)數(shù)組重組成上面的那種留言板形式的
其中$array就是上面讀取出來(lái)的數(shù)組,首先取出pid默認(rèn)為空的,然后遞歸,在取出pid為當(dāng)前評(píng)論id的數(shù)組

public static function tree($array,$child="child", $pid = null) 
{ 
 $temp = []; 
 foreach ($array as $v) { 
  if ($v['pid'] == $pid) { 
   $v[$child] = self::tree($array,$child,$v['id']); 
   $temp[] = $v; 
  } 
 } 
 return $temp; 
} 

重組后,可以得到下面的這個(gè)數(shù)組,可以看到,這個(gè)數(shù)組的樣式已經(jīng)和前臺(tái)評(píng)論樣式很像了

Array 
( 
 [0] => Array 
  ( 
   [id] => 1 
   [pid] => 
   [content] => 評(píng)論1 
   [child] => Array 
    ( 
     [0] => Array 
      ( 
       [id] => 4 
       [pid] => 1 
       [content] => 評(píng)論4回復(fù)評(píng)論1 
       [child] => Array 
        ( 
         [0] => Array 
          ( 
           [id] => 7 
           [pid] => 4 
           [content] => 評(píng)論7回復(fù)評(píng)論4 
           [child] => Array 
            ( 
             [0] => Array 
              ( 
               [id] => 8 
               [pid] => 7 
               [content] => 評(píng)論8回復(fù)評(píng)論7 
               [child] => Array 
                ( 
                 [0] => Array 
                  ( 
                   [id] => 9 
                   [pid] => 8 
                   [content] => 評(píng)論9回復(fù)評(píng)論8 
                   [child] => Array 
                    ( 
                    ) 
 
                  ) 
 
                 [1] => Array 
                  ( 
                   [id] => 10 
                   [pid] => 8 
                   [content] => 評(píng)論10回復(fù)評(píng)論8 
                   [child] => Array 
                    ( 
                    ) 
 
                  ) 
 
                ) 
 
              ) 
 
            ) 
 
          ) 
 
        ) 
 
      ) 
 
     [1] => Array 
      ( 
       [id] => 5 
       [pid] => 1 
       [content] => 評(píng)論5回復(fù)評(píng)論1 
       [child] => Array 
        ( 
        ) 
 
      ) 
 
    ) 
 
  ) 
 
 [1] => Array 
  ( 
   [id] => 2 
   [pid] => 
   [content] => 評(píng)論2 
   [child] => Array 
    ( 
     [0] => Array 
      ( 
       [id] => 6 
       [pid] => 2 
       [content] => 評(píng)論6回復(fù)評(píng)論2 
       [child] => Array 
        ( 
        ) 
 
      ) 
 
    ) 
 
  ) 
 
 [2] => Array 
  ( 
   [id] => 3 
   [pid] => 
   [content] => 評(píng)論3 
   [child] => Array 
    ( 
    ) 
 
  ) 
 
) 

得到上面的數(shù)組后 ,再用遞歸輸出即可

public static function traverseArray($array) 
{ 
 foreach ($array as $v) { 
  echo "<div class='comment' style='width: 100%;margin: 10px;background: #EDEFF0;padding: 20px 10px;border: 1px solid #777;'>"; 
  echo $v['content']; 
  if ($v['child']) { 
   self::traverseArray($v['child']); 
  } 
  echo "</div>"; 
 
 } 
 
} 

然后即可看到

原理就是這樣,就是重組下數(shù)組,然后遍歷輸出就行了。

以上就是php實(shí)現(xiàn)暢言留言板和網(wǎng)易跟帖樣式的全部過(guò)程,大家也可以嘗試進(jìn)行創(chuàng)新,希望這篇文章對(duì)大家的學(xué)習(xí)有所幫助。

相關(guān)文章

  • PHP laravel中的多對(duì)多關(guān)系實(shí)例詳解

    PHP laravel中的多對(duì)多關(guān)系實(shí)例詳解

    數(shù)據(jù)表之間是縱橫交叉、相互關(guān)聯(lián)的,laravel的一對(duì)一,一對(duì)多比較好理解,本文重點(diǎn)通過(guò)實(shí)例給大家講解 laravel中的多對(duì)多關(guān)系,感興趣的朋友一起看看吧
    2017-06-06
  • php生成縮略圖填充白邊(等比縮略圖方案)

    php生成縮略圖填充白邊(等比縮略圖方案)

    上傳圖片直接縮放的話就會(huì)導(dǎo)致圖片變形,這樣體驗(yàn)肯定就不好了。下面提供一種解決方法,縮小后添加白邊的方法看下面的代碼實(shí)現(xiàn)
    2013-12-12
  • ThinkPHP中使用ajax接收json數(shù)據(jù)的方法

    ThinkPHP中使用ajax接收json數(shù)據(jù)的方法

    這篇文章主要介紹了ThinkPHP中使用ajax接收json數(shù)據(jù)的方法,包括了前臺(tái)js代碼與對(duì)應(yīng)的PHP處理代碼,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2014-12-12
  • PHP解密Unicode及Escape加密字符串

    PHP解密Unicode及Escape加密字符串

    在json中不支持中文,用它傳送中文數(shù)據(jù)就會(huì)出現(xiàn)數(shù)據(jù)丟失或者亂碼,必須在傳送前對(duì)要發(fā)送的字符串進(jìn)行編碼,由于傳送過(guò)去需要用js進(jìn)行數(shù)據(jù)解析,考慮 到j(luò)s中有unescape函數(shù),故若在php中有個(gè)escape函數(shù),對(duì)數(shù)據(jù)進(jìn)行編碼,在客戶端用unescape進(jìn)行 解碼,這樣就會(huì)方便很多。
    2015-05-05
  • Ha0k 0.3 PHP 網(wǎng)頁(yè)木馬修改版

    Ha0k 0.3 PHP 網(wǎng)頁(yè)木馬修改版

    Ha0k 0.3 PHP 網(wǎng)頁(yè)木馬修改版,大家可以看下,對(duì)于此類文件的防御方法,可以參考腳本之家發(fā)布的文章。
    2009-10-10
  • PHP命令行執(zhí)行整合pathinfo模擬定時(shí)任務(wù)實(shí)例

    PHP命令行執(zhí)行整合pathinfo模擬定時(shí)任務(wù)實(shí)例

    下面小編就為大家?guī)?lái)一篇PHP命令行執(zhí)行整合pathinfo模擬定時(shí)任務(wù)實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-08-08
  • php+ajax導(dǎo)入大數(shù)據(jù)時(shí)產(chǎn)生的問(wèn)題處理

    php+ajax導(dǎo)入大數(shù)據(jù)時(shí)產(chǎn)生的問(wèn)題處理

    介紹:就是想實(shí)現(xiàn)簡(jiǎn)單的ajax上傳數(shù)據(jù),但是當(dāng)數(shù)據(jù)量較大的時(shí)候,問(wèn)題就一個(gè)一個(gè)接著來(lái)了,其實(shí)數(shù)據(jù)也不是很大,就是csv格式數(shù)據(jù) 不到5w條數(shù)據(jù)。大小5M,一開(kāi)始認(rèn)為這個(gè)很簡(jiǎn)單,就是先上傳一下文件,然后讀取一下,存到數(shù)據(jù)庫(kù)就好了,結(jié)果,可能我比較菜,弄了半天做出這個(gè)功能。環(huán)境是linux.
    2014-06-06
  • Yii調(diào)試查看執(zhí)行SQL語(yǔ)句的方法

    Yii調(diào)試查看執(zhí)行SQL語(yǔ)句的方法

    這篇文章主要介紹了Yii調(diào)試查看執(zhí)行SQL語(yǔ)句的方法,涉及Yii配置文件的相關(guān)設(shè)置方法,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2016-07-07
  • php結(jié)合ajax實(shí)現(xiàn)手機(jī)發(fā)紅包的案例

    php結(jié)合ajax實(shí)現(xiàn)手機(jī)發(fā)紅包的案例

    發(fā)紅包功能,當(dāng)我們輸入紅包數(shù)量和總金額后,PHP會(huì)根據(jù)這兩個(gè)值進(jìn)行隨機(jī)分配每個(gè)金額,保證每個(gè)人都能領(lǐng)取到一個(gè)紅包,每個(gè)紅包金額不等,就是要求紅包金額要有差異,所有紅包金額總額應(yīng)該等于總金額。
    2016-10-10
  • 分享5個(gè)非常有用的Laravel Blade指令

    分享5個(gè)非常有用的Laravel Blade指令

    這篇文章主要給大家分享介紹了5個(gè)非常有用的Laravel Blade指令,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-05-05

最新評(píng)論

那曲县| 东莞市| 华容县| 宾川县| 富源县| 明溪县| 唐山市| 德保县| 桃源县| 磐石市| 凉山| 乐业县| 长治市| 保山市| 茂名市| 山阴县| 长顺县| 靖安县| 梅河口市| 华池县| 华坪县| 镇康县| 宁城县| 宜章县| 潼关县| 乌拉特中旗| 仲巴县| 桦甸市| 潮州市| 杨浦区| 浏阳市| 卢湾区| 利辛县| 慈利县| 凤凰县| 隆昌县| 太保市| 库车县| 靖远县| 凌海市| 望都县|