PHP+Ajax implementiert die Abstimmungsfunktion für die Artikelstimmung (Codebeispiel)

藏色散人
Freigeben: 2023-04-08 11:04:01
nach vorne
2138 Leute haben es durchsucht

PHP+Ajax implementiert die Abstimmungsfunktion für die Artikelstimmung (Codebeispiel)

Ein Beispiel für die Implementierung der Artikelstimmungs-Abstimmungsfunktion: Sie können den grundlegenden Prozess der Abstimmung erlernen und verstehen: Erhalten von Stimmungssymbolen und Histogramm-bezogenen Daten durch Ajax Senden Sie auf einem der Stimmungssymbole eine Anfrage an Ajax.php. PHP überprüft das Benutzercookie, um eine wiederholte Übermittlung zu verhindern, fügt dann 1 zum entsprechenden Datenstimmungsfeldinhalt in MySQL hinzu und kehrt nach Erfolg zur Front-End-Seite zurück aktualisiert das Histogramm und die statistischen Daten.

PHP+Ajax implementiert die Abstimmungsfunktion für die Artikelstimmung (Codebeispiel)

Stimmung posten:

$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; //数据出错  
}
Nach dem Login kopieren

Stimmung erzeugen:

$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数据  
}
Nach dem Login kopieren

Stimmungslisteninformationen abrufen und auf der Seite anzeigen:

$(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 implementiert die Abstimmungsfunktion für die Artikelstimmung (Codebeispiel)" >  
<br/>"+array[&#39;mood_name&#39;]+"</div></li>";  
                    $("#mood ul").append(str); //将数据加入到#mood ul列表中  
                   });   
            }  
        }  
    });  
    ...  
});
Nach dem Login kopieren

Um eine Datenbanktabelle zu erstellen, führen Sie den folgenden Code direkt aus:

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);
Nach dem Login kopieren

Weitere PHP-Kenntnisse finden Sie im PHP-Tutorial!

Das obige ist der detaillierte Inhalt vonPHP+Ajax implementiert die Abstimmungsfunktion für die Artikelstimmung (Codebeispiel). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:cnblogs.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage