Heim  >  Artikel  >  Backend-Entwicklung  >  PHP imitiert den QQ-Raum, um seine Funktionsbeispiele zu realisieren

PHP imitiert den QQ-Raum, um seine Funktionsbeispiele zu realisieren

零下一度
零下一度Original
2017-06-15 14:29:303996Durchsuche

In diesem Artikel werden hauptsächlich die Funktionen zum Nachahmen von QQ Space oder Moments zum Posten von Updates, Kommentieren von Updates, Antworten auf Kommentare, Löschen von Updates oder Kommentaren vorgestellt (Mitte). Im Aufsatz wurde bereits vorgestellt, wie man Updates veröffentlicht. Schauen wir uns nun die verbleibenden Kommentar-Updates, das Antworten auf Kommentare, das Löschen von Updates und die Kommentarfunktionen an. Diese Funktionen sind etwas verwirrend.

1. Die Idee ist wie folgt: (1) Nachdem Sie einen Beitrag gepostet haben, wird jemand den Beitrag kommentieren und auf den Kommentar antworten. (Kommentare müssen hier eine separate Tabelle und eine separate Tabelle für Antworten sein)

(2) Updates löschen: Alle Updates, Kommentare und Antworten werden gelöscht. Kommentare löschen: Nur der Kommentar wird gelöscht

2. Bevor ich den Code schreibe, möchte ich noch den Prozess erklären: (1) Updates posten---Kommentare---Antworten ---noch einmal antworten

(2) Um den obigen Prozess zu verfeinern, habe ich ihn zuerst auf Papier geschrieben und dann hochgeladen. Die Codewörter können ihn nicht klar ausdrücken (beachten Sie, dass die Implementierung der von mir gewünschten Funktionen nicht der Fall ist). genau das gleiche Ha)

Drittens erklären Sie zuerst den Code in Teilen und hängen Sie schließlich die Hauptseite an Code vollständig (einschließlich des vorherigen Artikels) Im vorherigen Artikel haben Sie bereits Updates gepostet und das Kommentarfeld geöffnet, also gehen Sie jetzt nach unten:

Schauen Sie sich an qqfriends separat, qqdongtai, qqpinglun, qqhuifu-Tabelle, dies ist der Ausgangszustand:

Melden Sie sich zuerst als Benutzer Li Si an. Aus der qqfriends-Tabelle in der Datenbank wissen wir, dass Li Sis Freunde zhangsan und zhaoliu sind. Dann sind die in seinem Bereich angezeigten Freundesdynamiken wie folgt:

Im Vergleich zum vorherigen Artikel zeige ich in diesem Artikel, wer sich auf Chinesisch angemeldet hat:


Schritt 1: Kommentieren
<?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. Kommentieren Sie die Updates von Zhang San. Nachdem Sie auf „OK“ geklickt haben, wird es das zweite Bild sein~

2. Schreiben Sie den Inhalt des Kommentars in die Datenbank


pl-cl.php-Seite0c6dc11e160d3b678d68754cc175188a0c6dc11e160d3b678d68754cc175188a
 //定义空字符串,容纳评论的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" ;
  }      
  });            
 })


Überprüfen Sie, ob in der qqpinglun-Tabelle ein zusätzliches „Warum sind Sie glücklich?“ steht:
<?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);
?>

3. Lesen Sie der Kommentarinhalt:


Schritt 2: Antworten
<!--读取评论内容--> 
<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>

1. Jetzt auf den Kommentar antworten:

2 den Antwortinhalt in die Datenbank


hf-cl.php-Seite
   //定义空字符串,容纳回复评论的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" ;
     }      
     });            
    })


Überprüfen Sie die qqhuifu-Tabelle, um zu sehen, ob es eine zusätzliche Reihe Wolltuch gibt?
<?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. Lesen Sie den Antwortinhalt:


Der Antwortinhalt wurde angezeigt:
<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>

Schritt 3: Löschen

1. Updates löschen: (einschließlich Kommentare und Antworten)

scdt-cl.php


2. Kommentare löschen: (einschließlich Antwort)
<?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");
?>

scpl-cl.php


3. Antwort löschen: (nur Sie selbst)
<?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");
?>

schf-cl.php


Ich werde es nicht einzeln mit dem Löschen versuchen ~ ~~Hinweis Fügen Sie einfach die Beziehung ein
<?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");
?>

Alle Codes der Hauptseite:


Bis zu diesem Punkt dynamische Veröffentlichung, dynamische Kommentare, und dynamische Antworten, dynamisches Löschen wurden geschrieben, aber es gibt ein Problem, das noch nicht gelöst wurde, nämlich das Antwortproblem. Schauen Sie sich bitte das Diagramm unten an:

 
 
  
  
   
  
  
  
  
  
       
 
 
  

strquery($sql); //这种方法可以取到uid。 echo "欢迎:"."{$name}"; ?>

发表动态:

朋友动态:

query($sql); // var_dump($arr); foreach($arr as $v) { $sql = "select name from qqusers where uid='{$v[1]}'"; $name = $db->strquery($sql); if($v[1]==$uid) { $name = "我"; } echo "

{$name}发表动态:

{$v[2]}

发表动态时间:{$v[3]}

删除动态

"; } ?>

query($sql); foreach($arr as $v) { $sql = "select * from qqdongtai where dtid='{$v[1]}'"; $arr2 = $db->query($sql); foreach($arr2 as $m) { //取发动态的姓名 $sql = "select name from qqusers where uid='{$v[2]}'"; $name = $db->strquery($sql); //若果是登录者评论则显示“我” if($v[2]==$uid) { $name ="我"; } //获取被评论者的姓名 $sql = "select name from qqusers where uid=(select uid from qqdongtai where dtid='{$v[1]}')"; $bpl = $db->strquery($sql); echo "

{$name}评论{$bpl}的动态:{$m[2]}

{$v[3]}

发表评论时间:{$v[4]}

删除评论

"; } } ?>

query($sql); // var_dump($arr); foreach($arr as $a) { $sql = "select * from qqpinglun where cid='{$a[1]}'"; $arr2 = $db->query($sql); // var_dump($arr2); foreach($arr2 as $n) { //取评论动态的姓名 $sql = "select name from qqusers where uid='{$a[2]}'"; $name = $db->strquery($sql); //若果是登录者评论则显示“我” if($a[2]==$uid) { $name ="我"; } //获取被回复评论的姓名 $sql = "select name from qqusers where uid=(select uid from qqpinglun where cid='{$a[1]}')"; $bpl = $db->strquery($sql); echo "

{$name}回复{$bpl}的评论:{$n[3]}

{$a[3]}

回复时间:{$a[4]}

删除回复

"; } } ?>

<script> //ajax方法:刷新页面时将内容读取出来,并按发表时间读出来 // $.ajax({ // url:"sx-cl.php", // dataType:"TEXT", // success:function(data){ // var hang = data.trim().split("|"); // var str=""; // for(var i=0;i<hang.length;i++) // { // var lie = hang[i].split("^"); // str = str + "<p class=&#39;a&#39;><span class=&#39;xm&#39;>"+lie[1]+"</span>发表动态:</p><p class=&#39;b&#39;><p>"+lie[2]+"</p><p class=&#39;c&#39;>发表动态时间:"+lie[3]+"</p>"; // str =str+"<p id=&#39;d&#39;><button class=&#39;btn btn-primary pl&#39; data-toggle=&#39;modal&#39; data-target=&#39;#myModal&#39; code =&#39;"+lie[0]+"&#39;>评论</button><span><a href=&#39;del.php?code="+lie[0]+"&#39;>删除动态</a></span></p>"; // } // $("#nr").html(str); // //点击“评论按钮”实现将code值传到模态框的“提交按钮” // //为什么放在此处:因为ajax是异步的,如果不放在此处会加不上点击事件 // $(".pl").click(function(){ // code = $(this).attr("code"); //将评论的id重新赋值 // }) // } // }); // //php方法: 当发表动态时,将动态内容写进数据库,并刷新页面 $("#fb").click(function(){ var dt= $(".xdt").val(); var uid = $(".qid").attr("yh"); $.ajax({ url:"main-cl.php", data:{dt:dt}, 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" ; } }); }) //定义空字符串,容纳评论的id var code=""; $(".pl").click(function(){ code = $(this).attr("code"); //将评论的id重新赋值 }) //将评论写进数据库 $("#tjpl").click(function(){ var plnr = $(".pldt").val(); var plid = code; //取发动态的id // alert(plnr); // alert(plid); $.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" ; } }); }) //定义空字符串,容纳回复评论的id var ids=&quot;&quot;; $(&quot;.hf&quot;).click(function(){ ids = $(this).attr(&quot;ids&quot;); //将评论的id重新赋值 // alert((ids)); $(&amp;#39;#mM&amp;#39;).modal(&amp;#39;show&amp;#39;); }) //将回复评论写进数据库 $(&quot;#tjhf&quot;).click(function(){ var hfnr = $(&quot;.hfpl&quot;).val(); // alert(hfnr); // alert(ids); $.ajax({ url:&quot;hf-cl.php&quot;, data:{hfnr:hfnr,ids:ids}, type:&quot;POST&quot;, dataType:&quot;TEXT&quot;, success:function(data){ alert(&quot;回复成功!&quot;); window.location.href=&quot;main.php&quot; rel=&quot;external nofollow&quot; rel=&quot;external nofollow&quot; rel=&quot;external nofollow&quot; rel=&quot;external nofollow&quot; rel=&quot;external nofollow&quot; ; } }); }) </script>

Das heißt, ein Teil der Antworttabelle enthält die Antworten auf die Kommentare und der verbleibende Teil sind die Antworten auf die Antworten (etwas verworren). Wenn Sie es sehen möchten mehr, bitte achten Sie weiterhin darauf (unten) Fortsetzung folgt ~~~

Fassen wir zunächst die aufgetretenen Probleme zusammen:

(1) Warum kann die von Ajax ausgegebene Schaltfläche kein Klickereignis hinzufügen?

Da Ajax ein asynchrones Ajax ist, muss es sofort befolgt werden.

(2) Warum kann ich den Wert von button------this nicht erhalten

(3) Wann sollte Ajax in einer PHP-Seite verwendet werden? Wann sollte PHP verwendet werden?

In diesem Beispiel verwende ich Ajax, um Daten in die Datenbank zu schreiben; ich verwende PHP, um Inhalte aus der Datenbank zu lesen. (Im vorherigen Artikel wurde die Dynamik mit Ajax gelesen. In diesem Artikel sind beide Methoden verfügbar. Weitere Informationen finden Sie im gesamten Code.)

(4) Schließlich ist eine klare Logik von entscheidender Bedeutung, insbesondere Assoziationen zwischen Tabellen .

Das obige ist der detaillierte Inhalt vonPHP imitiert den QQ-Raum, um seine Funktionsbeispiele zu realisieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn