Home > Backend Development > PHP Tutorial > PHP+Ajax implements article mood voting function (code example)

PHP+Ajax implements article mood voting function (code example)

藏色散人
Release: 2023-04-08 11:04:01
forward
2241 people have browsed it

PHP+Ajax implements article mood voting function (code example)

An example of PHP Ajax implementing the article mood voting function, you can learn and understand the basic process of voting: obtain mood icons and histogram related data through ajax, when the user clicks one of the mood icons When sending a request to Ajax.php, PHP verifies the user cookie to prevent repeated submission, and then adds 1 to the corresponding data mood field content in mysql. After success, it returns to the front-end page and updates the histogram and statistical data.

PHP+Ajax implements article mood voting function (code example)

Post a mood:

$id = (int)$_POST['id']; //文章或帖子id  
$mid = (int)$_POST['moodid']; //心情id(配置文件中提供8种心情)  
if(!$mid || !$id){  
    echo "此链接不存在";exit;  
}  
  
$havemood = chk_mood($id); //验证cookie  
if($havemood==1){  
    echo "您已经表达过心情了,保持平常心有益身心健康!";exit;  
}  
$field = 'mood'.$mid; //数据表中的心情字段,分别用mood0,mood1,mood2...表示不同的心情字段  
$query = mysql_query("update mood set ".$field."=".$field."+1 where id=".$id); //对应的心情字段值+1  
if($query){  
    setcookie("mood".$id, $mid.$id, time()+300); //设置cookie,为了测试我们设置cookie过期时间为300s  
    $query2 = mysql_query("select * from mood where id=$id");  
    $rs = mysql_fetch_array($query2);//获取该文章的心情数据  
    $total = $rs['mood0']+$rs['mood1']+$rs['mood2']+$rs['mood3']+$rs['mood4']+$rs['mood5']+  
$rs['mood6']+$rs['mood7'];  
    $height = round(($rs[$field]/$total)*$moodpicheight); //得到总量,并计算当前对应心情的柱状图的高度  
    echo $height; //返回当前心情柱状的高度  
}else{  
    echo -1; //数据出错  
}
Copy after login

Get a mood:

$mname = explode(',',$moodname);//心情说明  
$num = count($mname);  
$mpic = explode(',',$moodpic);//心情图标  
  
$id = (int)$_GET['id']; //文章或帖子id  
$query = mysql_query("select * from mood where id=$id"); //查询对应的心情数据  
$rs = mysql_fetch_array($query);  
if($rs){  
    //得到发表心情的总量  
    $total = $rs['mood0']+$rs['mood1']+$rs['mood2']+$rs['mood3']+$rs['mood4']+  
$rs['mood5']+$rs['mood6']+$rs['mood7'];  
    for($i=0;$i<$num;$i++){  
        $field = &#39;mood&#39;.$i; //字段名  
        $m_val = intval($rs[$field]); //心情对应的值(次数)  
        $height = 0; //柱图高度  
        if($total && $m_val){  
            $height=round(($m_val/$total)*$moodpicheight); //计算高度  
        }  
              
        $arr[] = array(  
            &#39;mid&#39; => $i, //对应心情id  
            &#39;mood_name&#39; => $mname[$i], //心情名称  
            &#39;mood_pic&#39; => $mpic[$i], //图标  
            &#39;mood_val&#39; => $m_val, //次数  
            &#39;height&#39; => $height //柱状图高度  
        );  
    }  
    echo json_encode($arr); //返回JSON数据  
}
Copy after login

Get mood list information and display it on the page:

$(function(){  
    $.ajax({  
        type: &#39;GET&#39;, //通过get方式发送请求  
        url: &#39;ajax.php&#39;, //目标地址  
        cache: false, //不缓存数据,注意文明发表心情的数据是实时的,需将cache设置为false,默认是true  
        data: &#39;id=1&#39;, //参数,对应文章或帖子的id,本例中固定为1,实际应用中是获取当前文章或帖子的id  
        dataType: &#39;json&#39;, //数据类型为json  
        error: function(){  
            alert(&#39;出错了!&#39;);  
        },  
        success: function(json){ //请求成功后  
            if(json){  
                $.each(json,function(index,array){ //遍历json数据列  
                    var str = "<li><span>"+array[&#39;mood_val&#39;]+"</span><div class=\"pillar\"   
style=\"height:"+array[&#39;height&#39;]+"px;\"></div><div class=\"face\"   
rel=\""+array[&#39;mid&#39;]+"\"><img  src=\"images/"+array[&#39;mood_pic&#39;]+"\" alt="PHP+Ajax implements article mood voting function (code example)" >  
<br/>"+array[&#39;mood_name&#39;]+"</div></li>";  
                    $("#mood ul").append(str); //将数据加入到#mood ul列表中  
                   });   
            }  
        }  
    });  
    ...  
});
Copy after login

To create a database table, run the following code directly:

CREATE TABLE IF NOT EXISTS `mood` (  
  `id` int(11) NOT NULL,  
  `mood0` int(11) NOT NULL DEFAULT &#39;0&#39;,  
  `mood1` int(11) NOT NULL DEFAULT &#39;0&#39;,  
  `mood2` int(11) NOT NULL DEFAULT &#39;0&#39;,  
  `mood3` int(11) NOT NULL DEFAULT &#39;0&#39;,  
  `mood4` int(11) NOT NULL DEFAULT &#39;0&#39;,  
  `mood5` int(11) NOT NULL DEFAULT &#39;0&#39;,  
  `mood6` int(11) NOT NULL DEFAULT &#39;0&#39;,  
  `mood7` int(11) NOT NULL DEFAULT &#39;0&#39;,  
  PRIMARY KEY (`id`)  
) ENGINE=MyISAM DEFAULT CHARSET=utf8;  
  
  
INSERT INTO `mood` (`id`, `mood0`, `mood1`, `mood2`, `mood3`, `mood4`, `mood5`, `mood6`, `mood7`)  
VALUES(1, 8, 6, 20, 16, 6, 9, 15, 21);
Copy after login

For more related PHP knowledge, please visit php tutorial!

The above is the detailed content of PHP+Ajax implements article mood voting function (code example). For more information, please follow other related articles on the PHP Chinese website!

Related labels:
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Issues
php data acquisition?
From 1970-01-01 08:00:00
0
0
0
PHP extension intl
From 1970-01-01 08:00:00
0
0
0
How to learn php well
From 1970-01-01 08:00:00
0
0
0
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template