php – 根据用户投票移动div

我是新来的,但我喜欢这个网站.我检查了其他类似的问题,但我没有看到我在寻找什么.

我是一名音乐家,而且我每天都会写一首“今日之歌”,我每天都会写一首小歌.我希望将歌曲发布为< div> s< li>.在div中,我只想要一个简单的MP3播放器和一个“喜欢”或“不喜欢”按钮.用户可以投票并且歌曲将向上或向下移动< li>根据投票数量.

我想用数学保持这个简单 – 只是从< li>中的喜欢中减去不喜欢的东西.数组并从最高到最低排序.

最好有一个简单的cookie系统,至少让一个人不必一次投票,但我不太关心它.

我一直在寻找一个简单的PHPJavascript教程.有人能指出我正确的方向吗?
谢谢!

最佳答案
你需要一个中心位置来存储这首歌曲信息,主要是投票,但你也可以通过其他歌曲信息(如标题,音乐文件路径等).我建议一个简单的MySQL表如下

CREATE TABLE daily_song (
    daily_song_id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,vote          INT          NOT NULL DEFAULT 0,title         VARCHAR(255) NOT NULL DEFAULT "" COMMENT "Name of the song",path          VARCHAR(255) NOT NULL DEFAULT "" COMMENT "Path to the song on the server",ctime         DATETIME     NOT NULL            COMMENT "Datetime the song was added",PRIMARY KEY(daily_song_id)
);

我使用了以下HTML结构:

    还有一点CSS

    #daily-songs li { clear: both; list-style: none; }
    #daily-songs h3 { margin: 0 10px 0 0; float: left; }
    #daily-songs .voting-controls { height: 1em; }
    #daily-songs .voting-controls * { float: left; }
    #daily-songs .voting-controls .votes { padding: 0 10px; }
    

    这是使用jQuery的JavaScript

    $(function() {
        var listContainer = $("#daily-songs"),songs         = [];
        var songSort = function(a,b) {
            return +b.vote.text() - +a.vote.text();
        };
    
        var submitVote = function(song,delta) {
            $.post("vote.php",{
                    id:    song.node.attr("id").match(/\d+$/)[0],delta: delta,votes: song.vote.text() // temporary
                },function(data) {
                    if ( isNaN(data) ) { return; }
                    song.vote.text(data);
    
                    // Re-order the song list
                    $.each(songs.sort(songSort),function() {
                        listContainer.append(this.node);
                    });
                }
            );
        };
    
        listContainer.find("li").each(function() {
            var $this = $(this); 
            var song  = {
                node: $this,vote: $this.find(".votes")
            };
            $this.find(".vote-up").click(function() {
                submitVote(song,1);
            });
            $this.find(".vote-down").click(function() {
                submitVote(song,-1);
            });
    
            songs.push(song);
        });
    });
    

    还有一些用于vote.php的存根PHP:

    我将离开PHP让你填写.不应该太过分.如果您有任何疑问,请告诉我.

    相关文章

    前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
    前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
    前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
    前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
    前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
    前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...