微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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结构:

    Vote-up">UpVotes">8Vote-down">DownVote-up">UpVotes">5Vote-down">DownVote-up">UpVotes">4Vote-down">Down

还有一点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

$songId = !empty($_POST['id'])    ? (int)$_POST['id']    : 0;
$delta  = !empty($_POST['delta']) ? (int)$_POST['delta'] : 0;

if ( !$songId || !$delta ) {
    die("Invalid parameters");
}

// Make sure the voting value is within the valid rang
$delta = $delta > 0 ? 1 : -1;

// Check to see if user has already Voted for this song,// If they haven't Voted yet,connect to the database

// If the database connection is succesful,update song entry
// UPDATE daily_song SET Votes=Votes+$delta WHERE daily_song_id=$songId

// If the UPDATE is successful,SELECT the new Vote value
// SELECT Vote FROM daily_song WHERE daily_song_id=$songId

// Output the new Vote value

// But for Now,just accept the current Vote and apply the delta
echo $_POST['Votes'] + $delta;

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


什么是深拷贝与浅拷贝?深拷贝与浅拷贝是js中处理对象或数据复制操作的两种方式。‌在聊深浅拷贝之前咱得了解一下js中的两种数据类型:
前言 今天复习了一些前端算法题,写到一两道比较有意思的题:重建二叉树、反向输出链表每个节点 题目 重建二叉树: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列 {1,2,4,7,3,5,6,8} 和中序遍历序列 {
最近在看回JavaScript的面试题,this 指向问题是入坑前端必须了解的知识点,现在迎来了ES6+的时代,因为箭头函数的出现,所以感觉有必要对 this 问题梳理一下,所以刚好总结一下JavaScript中this指向的问题。
js如何实现弹出form提交表单?(图文+视频)
js怎么获取复选框选中的值
js如何实现倒计时跳转页面
如何用js控制图片放大缩小
JS怎么获取当前时间戳
JS如何判断对象是否为数组
JS怎么获取图片当前宽高
JS对象如何转为json格式字符串
JS怎么获取图片原始宽高
怎么在click事件中调用多个js函数
js如何往数组中添加新元素
js如何拆分字符串
JS怎么对数组内元素进行求和
JS如何判断屏幕大小
js怎么解析json数据
js如何实时获取浏览器窗口大小
原生JS实现别踩白块小游戏(五)