php语言

php+mysql结合Ajax实现点赞功能完整实例

时间:2025-05-19 08:08:55 php语言 我要投稿
  • 相关推荐

php+mysql结合Ajax实现点赞功能完整实例

  文章主要介绍了php+mysql结合Ajax实现点赞功能,以一个完整实例形式详细分析了实现点赞功能中涉及的html页面、Ajax功能及php方法的使用技巧,非常具有实用价值,需要的朋友可以参考下。

  要实现点赞功能,有多种实现方式,这里总结一下利用Ajax,php和mysql来实现点赞的数据的功能。具体步骤如下:

  一、页面中的HTML代码部分:

  ?

  1

  2

  3

  4

  5

  6

  7

  8

  9

  10

  11

  <span>0</span>

  <button onclick="goodplus(1);">good+1</button>

  <span>0</span>

  <button onclick="goodplus(2);">good+1</button>

  <span>0</span>

  <button onclick="goodplus(3);">good+1</button>

  <span>0</span>

  <button onclick="goodplus(4);">good+1</button>

  二、写javascript

  1、实现上面的button的点击事件goodplus

  ?

  1

  2

  3

  4

  5

  6

  7

  8

  9

  10

  11

  12

  13

  14

  var span = document.getElementsByTagName('span');//获取存放点赞数的dom

  var num; //点赞数

  var flag = 0; //不同情况的标记

  function goodplus(gindex){

  flag = 1;

  num = parseInt(span.item(gindex-1).innerHTML);

  if(checkcookie(gindex) == true){

  num = num + 1;

  senddata(gindex); //通过Ajax修改页面上的数据

  }else{

  alert("你已经点过赞咯!")

  }

  }

  2、页面一打开时就应该更新点赞数据

  ?

  1

  2

  3

  for(var i = 1; i < span.length + 1; i++){

  senddata(i);

  }

  3、通过Ajax获取数据senddata函数

  ?

  1

  2

  3

  4

  5

  6

  7

  8

  9

  10

  11

  12

  13

  14

  15

  16

  17

  18

  function senddata(aindex){

  var xmlhttp;

  var txt;

  if(window.XMLHttpRequest){

  xmlhttp=new XMLHttpRequest();

  }else{

  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");

  }

  xmlhttp.onreadystatechange=function(){

  if(xmlhttp.readyState == 4 && xmlhttp.status == 200){

  txt = xmlhttp.responseText; //获取返回的数据

  var cookieindex = aindex - 1;

  document.getElementsByTagName('span').item(cookieindex).innerHTML = txt; //赋值

  }

  }

  xmlhttp.open("GET","路径/index.php?num=" + num + '&flag=' + flag + '&aindex=' + aindex,true);

  xmlhttp.send();

  }

  4、通过设置cookie来判断是否已经点赞,如果有cookie则提示已经点赞,如果没有cookie则允许点赞,而且会设置cookie

  ?

  1

  2

  3

  4

  5

  6

  7

  8

  9

  10

  11

  12

  13

  14

  15

  16

  17

  18

  19

  20

  21

  22

  23

  24

  25

  26

  27

  28

  29

  30

  31

  32

  33

  34

  35

  36

  //判断是否已经存在了cookie

  function checkcookie(gindex){

  var thiscookie = 'goodplus' + gindex;

  var mapcookie = getCookie(thiscookie)

  if (mapcookie!=null && mapcookie!=""){

  return false;

  }else {

  setCookie(thiscookie,thiscookie,365);

  return true;

  }

  }

  //获取cookie

  function getCookie(c_name){//获取cookie,参数是名称。

  if (document.cookie.length > 0){//当cookie不为空的时候就开始查找名称

  c_start = document.cookie.indexOf(c_name + "=");

  if (c_start != -1){           //如果开始的位置不为-1就是找到了、找到了之后就要确定结束的位置

  c_start = c_start + c_name.length + 1 ;

  //cookie的值存在名称和等号的后面,所以内容的开始位置应该是加上长度和1

  c_end = document.cookie.indexOf(";" , c_start);

  if (c_end == -1) {

  c_end = document.cookie.length;

  }

  return unescape(document.cookie.substring(c_start , c_end));//返回内容,解码。

  }

  }

  return "";

  }

  //设置cookie

  function setCookie(c_name,value,expiredays){

  //存入名称,值,有效期。有效期到期事件是今天+有效天数。然后存储cookie,

  var exdate=new Date();

  exdate.setDate( exdate.getDate() + expiredays )

  document.cookie = c_name + "=" + escape(value) + ((expiredays==null) ? "" : "; expires=" + exdate.toGMTString())

  }

  三、index.php页面:

  ?

  1

  2

  3

  4

  5

  6

  7

  8

  9

  10

  11

  12

  13

  14

  15

  16

  17

  18

  19

  20

  21

  22

  23

  24

  25

  26

  27

  28

  <?php

  $num = $_GET['num'];

  $aindex = $_GET['aindex'];

  $con = mysql_connect("localhost","root","");

  if (!$con){

  die('Could not connect: ' . mysql_error());

  }

  mysql_select_db("goodplus", $con);

  $sql0s = "SELECT * FROM `good` where `id` = ".$aindex;

  $sql0 = mysql_query($sql0s);

  if($_GET['flag'] == 0){

  while($row = mysql_fetch_array($sql0)){

  echo $row['value'];

  }

  }else if($_GET['flag'] == 1){

  $sql="UPDATE `goodplus`.`good` SET `value` = '".$num."' WHERE `good`.`id` = ".$aindex;

  if (!mysql_query($sql,$con)){

  die('Error: ' . mysql_error());

  }

  echo $num;

  }

  mysql_close($con)

  ?>

  四、最终的index.html页面如下:

  ?

  1

  2

  3

  4

  5

  6

  7

  8

  9

  10

  11

  12

  13

  14

  15

  16

  17

  18

  19

  20

  21

  22

  23

  24

  25

  26

  27

  28

  29

  30

  31

  32

  33

  34

  35

  36

  37

  38

  39

  40

  41

  42

  43

  44

  45

  46

  47

  48

  49

  50

  51

  52

  53

  54

  55

  56

  57

  58

  59

  60

  61

  62

  63

  64

  65

  66

  67

  68

  69

  70

  71

  72

  73

  74

  75

  76

  77

  78

  79

  80

  81

  82

  83

  84

  85

  86

  87

  88

  89

  90

  91

  92

  93

  94

  95

  96

  97

  98

  99

  100

  101

  102

  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

  <html xmlns="http://www.w3.org/1999/xhtml">

  <head>

  <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />

  <title>无标题文档</title>

  </head>

  <body>

  <span>0</span>

  <button onclick="goodplus(1);">good+1</button>

  <span>0</span>

  <button onclick="goodplus(2);">good+1</button>

  <span>0</span>

  <button onclick="goodplus(3);">good+1</button>

  <span>0</span>

  <button onclick="goodplus(4);">good+1</button>

  <script type="text/javascript">

  var span = document.getElementsByTagName('span');

  var num;

  var flag = 0;

  for(var i = 1; i < span.length + 1; i++){

  senddata(i);

  }

  function goodplus(gindex){

  flag = 1;

  num = parseInt(span.item(gindex-1).innerHTML);

  if(checkcookie(gindex) == true){

  num = num + 1;

  senddata(gindex);

  }else{

  alert("你已经点过赞咯!")

  }

  }

  function senddata(aindex){

  var xmlhttp;

  var txt;

  if(window.XMLHttpRequest){

  xmlhttp=new XMLHttpRequest();

  }else{

  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");

  }

  xmlhttp.onreadystatechange=function(){

  if(xmlhttp.readyState == 4 && xmlhttp.status == 200){

  txt = xmlhttp.responseText;

  var cookieindex = aindex - 1;

  document.getElementsByTagName('span').item(cookieindex).innerHTML = txt;

  }

  }

  xmlhttp.open("GET","/ajax/json/index.php?num=" + num + '&flag=' + flag + '&aindex=' + aindex,true);

  xmlhttp.send();

  }

  //判断是否已经存在了cookie

  function checkcookie(gindex){

  var thiscookie = 'sdcity_foodmap_goodplus' + gindex;

  var mapcookie = getCookie(thiscookie)

  if (mapcookie!=null && mapcookie!=""){

  return false;

  }else {

  setCookie(thiscookie,thiscookie,365);

  return true;

  }

  }

  //获取cookie

  function getCookie(c_name){

  //获取cookie,参数是名称。

  if (document.cookie.length > 0){

  //当cookie不为空的时候就开始查找名称

  c_start = document.cookie.indexOf(c_name + "=");

  if (c_start != -1){

  //如果开始的位置不为-1就是找到了、找到了之后就要确定结束的位置

  c_start = c_start + c_name.length + 1 ;

  //cookie的值存在名称和等号的后面,所以内容的开始位置应该是加上长度和1

  c_end = document.cookie.indexOf(";" , c_start);

  if (c_end == -1) {

  c_end = document.cookie.length;

  }

  return unescape(document.cookie.substring(c_start , c_end));//返回内容,解码。

  }

  }

  return "";

  }

  //设置cookie

  function setCookie(c_name,value,expiredays){

  //存入名称,值,有效期。有效期到期事件是今天+有效天数。然后存储cookie,

  var exdate=new Date();

  exdate.setDate( exdate.getDate() + expiredays )

  document.cookie = c_name + "=" + escape(value) + ((expiredays==null) ? "" : "; expires=" + exdate.toGMTString())

  }

  </script>

  </body>

  </html>

  希望本文所述对大家的php程序设计有所帮助。

【php+mysql结合Ajax实现点赞功能完整实例】相关文章:

php+mysql实现无限分类实例详解07-23

php中实现回删功能实例01-26

ThinkPHP实现支付宝接口功能实例04-13

php+mysql查询优化简单实例06-22

PHP中检测ajax请求的代码实例03-16

Java实现多继承的实例07-18

基于PHP+Ajax实现表单验证的详解05-19

c#实现sunday算法实例08-07

php实现伪静态的方法实例11-30