Maison  >  Article  >  développement back-end  >  PHP imite l'espace QQ pour réaliser ses exemples fonctionnels

PHP imite l'espace QQ pour réaliser ses exemples fonctionnels

零下一度
零下一度original
2017-06-15 14:29:303927parcourir

Cet article présente principalement les fonctions d'imitation de l'espace QQ ou des Moments pour publier des mises à jour, commenter les mises à jour, répondre aux commentaires, supprimer des mises à jour ou des commentaires (au milieu). Les amis dans le besoin peuvent se référer à l'article précédent

. L'essai a déjà présenté comment publier les mises à jour, examinons maintenant les mises à jour de commentaires restantes, répondons aux commentaires, supprimons les mises à jour et les fonctions de commentaires. Ces fonctions sont un peu déroutantes ~~~

. 1. L'idée est la suivante :

(1) Après avoir publié un message, quelqu'un commentera le message. Après avoir commenté, vous répondrez également au commentaire ; (Les commentaires ici doivent être un tableau séparé et un tableau séparé pour les réponses)

(2) Supprimer les mises à jour : toutes les mises à jour, commentaires et réponses seront supprimés. Supprimer les commentaires : seul le commentaire sera supprimé ; 🎜>

2. Avant d'écrire le code, je souhaite quand même expliquer le processus :

(1) Publier des mises à jour --- commentaires --- répondre --- encore une fois Répondre

(2) Pour affiner le processus ci-dessus, je l'ai d'abord écrit sur papier, puis je l'ai téléchargé. Les mots de code ne peuvent pas l'exprimer clairement (notez que l'implémentation des fonctions que je souhaite est. pas exactement le même Ha)

Troisièmement, expliquez d'abord le code en morceaux, et enfin attachez le code principal code de la page complètement (y compris l'article précédent)

Dans l'article précédent, vous avez déjà publié des mises à jour et affiché la zone de commentaire, alors maintenant descendez :

Regardez chez qqfriends séparément, qqdongtai, qqpinglun, qqhuifu table, voici l'état initial :

Connectez-vous d'abord en tant qu'utilisateur Li Si. Depuis la table qqfriends dans la base de données, nous savons que les amis de Li Si sont zhangsan et zhaoliu. Ensuite, la dynamique des amis affichée dans son espace est la suivante :

Par rapport à l'article précédent, dans cet article, je montre qui s'est connecté en chinois :


<?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>";
   ?>
Étape 1 : Commenter

1. Commentez les mises à jour de Zhang San après avoir cliqué sur "OK", ce sera la deuxième photo~

<.> 2. Écrivez le contenu du commentaire dans la base de données


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


Vérifiez s'il y a un élément supplémentaire "Pourquoi es-tu heureux ?" dans le tableau qqpinglun :
<?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 . Lisez le contenu du commentaire :


Étape 2 : Répondre
<!--读取评论内容--> 
<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. Répondez au commentaire tout à l'heure :

2. . Écrivez le contenu de la réponse dans la base de données


page 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" ;
     }      
     });            
    })


Vérifiez le tableau qqhuifu pour voir s'il y a une rangée supplémentaire de tissu en laine ?
<?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. Lire le contenu de la réponse :


Le contenu de la réponse a été affiché :
<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>

Étape 3 : Supprimer

1. Supprimer les mises à jour : (y compris les commentaires et les réponses)

scdt-cl.php


2. Supprimer les commentaires : (y compris la réponse)
<?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. Supprimer la réponse : (uniquement vous-même)
<?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


Je n'essaierai pas un par un à propos de la suppression~ ~~Note Il suffit d'inclure la relation
<?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");
?>

Tous les codes de la page principale :


Jusqu'à présent, publication dynamique, commentaires dynamiques, et des réponses dynamiques et des suppressions dynamiques ont été écrites, mais il y a un problème qui n'a pas encore été résolu, à savoir le problème de réponse. Veuillez jeter un œil au diagramme ci-dessous :

 
 
  
  
   
  
  
  
  
  
       
 
 
  

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>

Autrement dit, une partie du tableau des réponses est constituée des réponses aux commentaires, et la partie restante est constituée des réponses aux réponses (un peu alambiquée) Si vous voulez voir plus, continuez à faire attention (ci-dessous) À suivre ~~~

Résumons d'abord les problèmes rencontrés :

(1) Pourquoi le bouton sorti par ajax ne peut-il pas ajouter d'événement de clic ?

Parce qu'ajax est un ajax asynchrone, il doit être suivi immédiatement.

(2) Pourquoi ne puis-je pas obtenir la valeur de bouton------this

(3) Quand utiliser ajax dans une page php ? Quand utiliser php ?

Dans cet exemple, j'utilise ajax pour écrire des données dans la base de données ; j'utilise php pour lire le contenu de la base de données. (Dans l'article précédent, les dynamiques ont été lues en utilisant ajax. Dans cet article, les deux méthodes sont disponibles. Veuillez consulter l'intégralité du code pour plus de détails)

(4) Enfin, une logique claire est cruciale, en particulier les associations entre les tables .

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn