ホームページ >バックエンド開発 >PHPチュートリアル >PHP は QQ 空間を模倣してその機能例を実現します
この記事は主にQQスペースやモーメントを模倣して更新を投稿したり、更新にコメントしたり、コメントに返信したり、更新やコメントを削除したりする機能を紹介します(中)必要な友達はそれを参照してください
前のエッセイで公開する方法。ダイナミクスが表示されるので、残りのコメントのダイナミクス、コメントの返信、ダイナミクスの削除、およびコメントの機能を見てみましょう。これらの機能は少し混乱します~~~
1. アイデアは次のとおりです。 (1) 投稿を投稿した後、誰かがその投稿にコメントします。(ここでのコメントには別のテーブルが必要で、返信にも別のテーブルが必要です)
(2) 削除します。投稿: はい すべての更新、コメント、返信を削除します。コメントを削除: コメントのみが削除されます 2. コードを記述する前に、プロセスを確認しておきます:(1) 更新を投稿する--- コメント ---返信 ---再度返信
(2) 上記のプロセスを改良するために、まず紙に書いてからアップロードします (関数の実現はコードワードでは明確に表現できないことに注意してください)。欲しいのですが、まったく同じではありません) 3番目に、最初にコードをチャンクで説明し、最後にメインページのコードを完全に添付しましょう(前の記事を含む)前の記事 更新の公開とポップアップ コメント ボックスを実現するには、次に進みます:
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='{$uid}'"; $name = $db->strquery($sql); echo "欢迎:"."<span class='qid' yh='{$uid}'>{$name}</span>"; ?>
ステップ 1: コメント
1. 「OK」をクリックした後、2 番目になります。 pic~ 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 ('','{$dtid}','{$uid}','{$plnr}','{$time}')"; $db->query($sql,0); ?>
1. コメントへの返信:
2. 返信内容をデータベースに書き込みます
<!--读取评论内容--> <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>
hf-cl.php ページ
//定义空字符串,容纳回复评论的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" ; } }); })
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 ('','{$cid}','{$uid}','{$hfnr}','{$time}')"; $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='{$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>2. コメントを削除: (返信を含む)
scpl-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"); ?>3. 返信を削除: (自分のみ)
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"); ?>削除に関しては、いちいち試しません~~~包含関係にだけ注意してください
メインページの全コード:
<?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"); ?>ここまで、ダイナミックパブリッシング、動的コメント、動的返信、動的削除と書かれていますが、まだ解決されていない問題が1つあり、それは返信の問題です。以下の簡略図を見てください:
つまり、返信テーブルの一部が返信コメントで、残りの部分が返信返信です (少し複雑です) 見たい場合は、引き続き注目してください (下)続きます~~~
まず、発生した問題を要約しましょう:
(1) ajax によって出力されたボタンがクリック イベントを追加できないのはなぜですか?
ajax は非同期 ajax であるため、すぐに従う必要があります。
(2) ボタンの値を取得できないのはなぜですか-----これ
(3) PHP ページで、Ajax を使用する必要があるのはどのような場合ですか? php をいつ使用するか?
この例では、ajax を使用してデータベースにデータを書き込み、php を使用してデータベースからコンテンツを読み取ります。 (前回の記事では、ダイナミクスは ajax を使用して読み取られました。この記事では、両方の方法が利用可能です。詳細については、コード全体を参照してください)
(4) 最後に、特にテーブル間の接続において、明確なロジックが重要です。
以上がPHP は QQ 空間を模倣してその機能例を実現しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。