>백엔드 개발 >PHP 튜토리얼 >PHP는 기능적 예를 실현하기 위해 QQ 공간을 모방합니다.

PHP는 기능적 예를 실현하기 위해 QQ 공간을 모방합니다.

零下一度
零下一度원래의
2017-06-15 14:29:304025검색

본 글은 주로 QQ 공간이나 모멘트를 흉내내어 업데이트 게시, 업데이트에 댓글 달기, 댓글에 답하기, 업데이트나 댓글 삭제(중) 기능을 소개하고 있습니다. 다이나믹스가 제시되었으니 이제 남은 댓글 다이나믹스, 댓글 답글, 다이나믹스 삭제, 댓글 기능을 살펴보도록 하겠습니다~~

1. 아이디어는 다음과 같습니다. (1) 게시물을 게시한 후 누군가가 게시물에 댓글을 달면 댓글에도 답글을 달게 됩니다. (여기의 댓글은 별도의 테이블에 있어야 하며 답변도 별도의 테이블에 있어야 합니다.)

(2) 업데이트 삭제: 예 업데이트, 댓글, 답글 모두 삭제, 댓글 삭제: 댓글만 삭제됩니다.

2. 코드를 작성하기 전에 프로세스를 검토하고 싶습니다.

( 1) 게시물 업데이트 --- 댓글 --- 답글 --- 다시 답글

(2) 위 과정을 구체화하기 위해 먼저 종이에 작성한 후 코드 단어로는 명확하게 표현할 수 없습니다. 내가 원하는 기능 구현, 꼭 같지 않음)

셋째, 먼저 코드를 덩어리로 설명하고 마지막으로 메인 페이지 코드를 완전히 첨부하겠습니다 (이전 기사 포함)

이전 기사에서 이미 게시 업데이트 및 팝업 댓글 상자를 구현하려면 아래로 이동하세요.

qqfriends, qqdongtai, qqpinglun, qqhuifu 테이블을 각각 살펴보세요. 초기 상태는

입니다.

첫 번째 사용자 Li Si가 로그인합니다. 데이터베이스의 qqfriends 테이블에서 Li Si의 친구가 zhangsan과 zhaoliu라는 것을 알 수 있습니다. 그러면 그의 공간에 표시되는 친구 역학은 다음과 같습니다.

이전 기사와 비교하면 여기 한 기사에서 누가 중국어로 로그인했는지 표시했습니다.

<?php
   session_start();
   $uid = "";
   if(empty($_SESSION["uid"]))
   {
    header("location:login.php");
    exit;
   }
   $uid = $_SESSION["uid"];
   require "../DB.class.php";
   $db = new DB();
   $sql = "select name from qqusers where uid=&#39;{$uid}&#39;";
   $name = $db->strquery($sql);
   echo "欢迎:"."<span class=&#39;qid&#39; yh=&#39;{$uid}&#39;>{$name}</span>";
   ?>

1단계: 댓글

1. "확인"을 클릭하면 댓글이 표시됩니다. 두 번째 사진~

2. 댓글 내용을 데이터베이스에 작성하세요

 //定义空字符串,容纳评论的id  
  var code=""; 
 $(".pl").click(function(){     
    code = $(this).attr("code"); //将评论的id重新赋值                 
    }) 
//将评论写进数据库 
$("#tjpl").click(function(){
  var plnr = $(".pldt").val();
  var plid = code; //取发动态的id
  $.ajax({
  url:"pl-cl.php",
  data:{plnr:plnr,plid:plid},
  type:"POST",
  dataType:"TEXT",
  success:function(data){
   alert("评论成功!");
   window.location.href="main.php" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" ;
  }      
  });            
 })

pl-cl.php 페이지 0c6dc11e160d3b678d68754cc175188a 행복하세요?":

3. 읽기 댓글 내용:

<?php
require "../DB.class.php";
$db = new DB();
session_start();
$uid = $_SESSION["uid"];
$plnr = $_POST["plnr"];
$dtid = $_POST["plid"];
$time = date("Y-m-d H:i:s", time());
$sql = "insert into qqpinglun values (&#39;&#39;,&#39;{$dtid}&#39;,&#39;{$uid}&#39;,&#39;{$plnr}&#39;,&#39;{$time}&#39;)";
$db->query($sql,0);
?>

2단계: 답변

1. 방금 댓글에 답변:

2 답변 내용을 데이터베이스


<!--读取评论内容--> 
<p id="dqpl">
<?php
 $sql = "select * from qqpinglun";
 $arr = $db->query($sql);
 foreach($arr as $v)
 {
  $sql = "select * from qqdongtai where dtid=&#39;{$v[1]}&#39;";
  $arr2 = $db->query($sql);
  foreach($arr2 as $m)
  {
   //取发动态的姓名
   $sql = "select name from qqusers where uid=&#39;{$v[2]}&#39;";
   $name = $db->strquery($sql);
   //若果是登录者评论则显示“我”
   if($v[2]==$uid)
   {
    $name ="我";
   }
   //获取被评论者的姓名
   $sql = "select name from qqusers where uid=(select uid from qqdongtai where dtid=&#39;{$v[1]}&#39;)";
   $bpl = $db->strquery($sql);
   echo "<p class=&#39;a&#39;><span class=&#39;xm&#39;>{$name}</span>评论<span class=&#39;xm&#39;>{$bpl}</span>的动态:{$m[2]}<p>
    <p class=&#39;b&#39;>{$v[3]}</p>
   <p class=&#39;c&#39;>发表评论时间:{$v[4]}</p>
   <p class=&#39;d&#39;><button class=&#39;btn btn-primary hf&#39; ids =&#39;{$v[0]}&#39;>回复
   </button><span><a href=&#39;scpl-cl.php?code={$v[0]}&#39;>删除评论</a></span></p>";
  }
 }  
?>    
</p>

hf-cl.php 페이지

에 작성합니다.

   //定义空字符串,容纳回复评论的id  
    var ids=""; 
    $(".hf").click(function(){     
       ids = $(this).attr("ids"); //将评论的id重新赋值  
//       alert((ids)); 
       $(&#39;#mM&#39;).modal(&#39;show&#39;);              
       }) 
   //将回复评论写进数据库 
   $("#tjhf").click(function(){
     var hfnr = $(".hfpl").val();
//     alert(hfnr);
//     alert(ids);
     $.ajax({
     url:"hf-cl.php",
     data:{hfnr:hfnr,ids:ids},
     type:"POST",
     dataType:"TEXT",
     success:function(data){
     alert("回复成功!");
    window.location.href="main.php" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" ;
     }      
     });            
    })

qqhuifu 테이블을 확인하세요. 추가 행이 있나요?

3. 답글 내용 읽기:

<?phprequire "../DB.class.php";
$db = new DB();
session_start();
$uid = $_SESSION["uid"];
$hfnr = $_POST["hfnr"];
$cid = $_POST["ids"];
$time = date("Y-m-d H:i:s", time());
$sql = "insert into qqhuifu values (&#39;&#39;,&#39;{$cid}&#39;,&#39;{$uid}&#39;,&#39;{$hfnr}&#39;,&#39;{$time}&#39;)";
$db->query($sql,0);
?>

답글 내용이 표시되었습니다.

3단계: 삭제

1. 업데이트 삭제:

scdt-cl.php

<p id="dqhf"> 
     <!--取一次回复-->
    <?php
    $sql = "select * from qqhuifu where cid in (select cid from qqpinglun)";
    $arr = $db->query($sql);
    foreach($arr as $a)
    {
     $sql = "select * from qqpinglun where cid=&#39;{$a[1]}&#39;";
     $arr2 = $db->query($sql);
     foreach($arr2 as $n)
     {
      //取评论动态的姓名
      $sql = "select name from qqusers where uid=&#39;{$a[2]}&#39;";
      $name = $db->strquery($sql);
      //若果是登录者评论则显示“我”
      if($a[2]==$uid)
      {
       $name ="我";
      }
      //获取被回复评论的姓名
      $sql = "select name from qqusers where uid=(select uid from qqpinglun where cid=&#39;{$a[1]}&#39;)";
      $bpl = $db->strquery($sql);
      echo "<p class=&#39;a&#39;><span class=&#39;xm&#39;>{$name}</span>回复<span class=&#39;xm&#39;>{$bpl}</span>的评论:{$n[3]}<p>
       <p class=&#39;b&#39;>{$a[3]}</p>
      <p class=&#39;c&#39;>回复时间:{$a[4]}</p>
      <p class=&#39;d&#39;><button class=&#39;btn btn-primary hf&#39; ids =&#39;{$a[0]}&#39;>回复
      </button><span><a href=&#39;schf-cl.php?code={$a[0]}&#39;>删除回复</a></span></p>"; 
     }
     }
    ?>
   </p>

2. 댓글 삭제: (답글 포함)

scpl-cl.php

<?php
$code = $_GET["code"];
require "../DB.class.php";
$db = new DB();
$sql = "delete from qqdongtai where dtid=&#39;{$code}&#39;";
$db->query($sql,0);
$sql2 = "delete from qqpinglun where dtid=&#39;{$code}&#39;";
$db->query($sql2,0);
$sql3 = "delete from qqhuifu where cid=(select cid from qqpinglun where dtid=&#39;{$code}&#39;)";
$db->query($sql3,0);
header("location:main.php");
?>

3. 댓글 삭제: (본인만)

schf-cl.php

<?php
$code = $_GET["code"];
require "../DB.class.php";
$db = new DB();
$sql2 = "delete from qqpinglun where cid=&#39;{$code}&#39;";
$db->query($sql2,0);
$sql3 = "delete from qqhuifu where cid=&#39;{$code}&#39;";
$db->query($sql3,0);
header("location:main.php");
?>

삭제에 대해서는 하나씩 해보진 않겠습니다~~포괄관계만 주의하세요

메인페이지의 모든 코드 :

<?php
$code = $_GET["code"];
require "../DB.class.php";
$db = new DB();
$sql2 = "delete from qqpinglun where cid=&#39;{$code}&#39;";
$db->query($sql2,0);
$sql3 = "delete from qqhuifu where cid=&#39;{$code}&#39;";
$db->query($sql3,0);
header("location:main.php");
?>

여기까지는 다이나믹 퍼블리싱 , 동적 댓글, 동적 답글, 동적 삭제 등을 작성했지만 아직 해결되지 않은 문제가 하나 있는데 바로 답글 문제입니다. 아래 도표를 봐주세요:

즉, 답글 양식의 일부는 답글 댓글이고, 나머지 부분은 답글 답글입니다(약간 복잡함). 더 보고 싶으시면 계속해서 관심을 가져주세요( 아래) 계속됩니다~~

먼저 발생한 문제를 요약해 보겠습니다.

(1) Ajax의 버튼 출력에 클릭 이벤트를 추가할 수 없는 이유는 무엇입니까?

ajax는 비동기식 ajax이므로 바로 따라야 합니다.

(2) 왜 버튼의 값을 얻을 수 없나요------this

(3) PHP 페이지에서 Ajax는 언제 사용해야 하나요? PHP는 언제 사용하나요?

이 예에서는 ajax를 사용하여 데이터베이스에 데이터를 쓰고, PHP를 사용하여 데이터베이스의 콘텐츠를 읽습니다. (이전 기사에서는 ajax를 사용하여 역학을 읽었습니다. 이 기사에서는 두 가지 방법을 모두 사용할 수 있습니다. 자세한 내용은 전체 코드를 참조하십시오.)

(4) 마지막으로, 특히 테이블 간 연결에 대한 명확한 논리가 중요합니다.

위 내용은 PHP는 기능적 예를 실현하기 위해 QQ 공간을 모방합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.