Heim > Artikel > Backend-Entwicklung > PHP imitiert den QQ-Raum, um seine Funktionsbeispiele zu realisieren
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:
<?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='{$uid}'"; $name = $db->strquery($sql); echo "欢迎:"."<span class='qid' yh='{$uid}'>{$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
//定义空字符串,容纳评论的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" ; } }); })
<?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 ('','{$dtid}','{$uid}','{$plnr}','{$time}')"; $db->query($sql,0); ?>
3. Lesen Sie der Kommentarinhalt:
<!--读取评论内容--> <p id="dqpl"> <?php $sql = "select * from qqpinglun"; $arr = $db->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 "<p class='a'><span class='xm'>{$name}</span>评论<span class='xm'>{$bpl}</span>的动态:{$m[2]}<p> <p class='b'>{$v[3]}</p> <p class='c'>发表评论时间:{$v[4]}</p> <p class='d'><button class='btn btn-primary hf' ids ='{$v[0]}'>回复 </button><span><a href='scpl-cl.php?code={$v[0]}'>删除评论</a></span></p>"; } } ?> </p>
1. Jetzt auf den Kommentar antworten:
2 den Antwortinhalt in die Datenbank
//定义空字符串,容纳回复评论的id var ids=""; $(".hf").click(function(){ ids = $(this).attr("ids"); //将评论的id重新赋值 // alert((ids)); $('#mM').modal('show'); }) //将回复评论写进数据库 $("#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" ; } }); })
<?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 ('','{$cid}','{$uid}','{$hfnr}','{$time}')"; $db->query($sql,0); ?>
3. Lesen Sie den Antwortinhalt:
<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='{$a[1]}'"; $arr2 = $db->query($sql); 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 "<p class='a'><span class='xm'>{$name}</span>回复<span class='xm'>{$bpl}</span>的评论:{$n[3]}<p> <p class='b'>{$a[3]}</p> <p class='c'>回复时间:{$a[4]}</p> <p class='d'><button class='btn btn-primary hf' ids ='{$a[0]}'>回复 </button><span><a href='schf-cl.php?code={$a[0]}'>删除回复</a></span></p>"; } } ?> </p>
Schritt 3: Löschen
1. Updates löschen: (einschließlich Kommentare und Antworten)
scdt-cl.php
<?php $code = $_GET["code"]; require "../DB.class.php"; $db = new DB(); $sql = "delete from qqdongtai where dtid='{$code}'"; $db->query($sql,0); $sql2 = "delete from qqpinglun where dtid='{$code}'"; $db->query($sql2,0); $sql3 = "delete from qqhuifu where cid=(select cid from qqpinglun where dtid='{$code}')"; $db->query($sql3,0); header("location:main.php"); ?>
scpl-cl.php
<?php $code = $_GET["code"]; require "../DB.class.php"; $db = new DB(); $sql2 = "delete from qqpinglun where cid='{$code}'"; $db->query($sql2,0); $sql3 = "delete from qqhuifu where cid='{$code}'"; $db->query($sql3,0); header("location:main.php"); ?>
schf-cl.php
<?php $code = $_GET["code"]; require "../DB.class.php"; $db = new DB(); $sql2 = "delete from qqpinglun where cid='{$code}'"; $db->query($sql2,0); $sql3 = "delete from qqhuifu where cid='{$code}'"; $db->query($sql3,0); header("location:main.php"); ?>
Alle Codes der Hauptseite:
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='a'><span class='xm'>"+lie[1]+"</span>发表动态:</p><p class='b'><p>"+lie[2]+"</p><p class='c'>发表动态时间:"+lie[3]+"</p>"; // str =str+"<p id='d'><button class='btn btn-primary pl' data-toggle='modal' data-target='#myModal' code ='"+lie[0]+"'>评论</button><span><a href='del.php?code="+lie[0]+"'>删除动态</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=""; $(".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" ; } }); }) </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!