Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以得到一些关于php/javascript投票代码的帮助吗?_Php_Javascript_Mysql_Vote Up Buttons - Fatal编程技术网

我可以得到一些关于php/javascript投票代码的帮助吗?

我可以得到一些关于php/javascript投票代码的帮助吗?,php,javascript,mysql,vote-up-buttons,Php,Javascript,Mysql,Vote Up Buttons,这是这个问题的继续: 我先是以未注册用户的身份发布了这个问题,然后又注册了,所以我无法编辑或添加到我的原始问题中 贾斯汀·约翰逊在代码方面帮了我很大的忙,但我在尝试如何集成vote.php页面时仍然遇到问题 我不想在这里重复这个问题,我希望有人会看到这一点,看看上面的问题(我在“进一步回答”中添加了更多内容),1)帮助我解决问题,2)增加Justin的工作,因为我不能再做了,因为注册的事 谢谢! 乔尔: CREATE TABLE song ( song_id INT UNSIGNED

这是这个问题的继续:

我先是以未注册用户的身份发布了这个问题,然后又注册了,所以我无法编辑或添加到我的原始问题中

贾斯汀·约翰逊在代码方面帮了我很大的忙,但我在尝试如何集成vote.php页面时仍然遇到问题

我不想在这里重复这个问题,我希望有人会看到这一点,看看上面的问题(我在“进一步回答”中添加了更多内容),1)帮助我解决问题,2)增加Justin的工作,因为我不能再做了,因为注册的事

谢谢! 乔尔:

CREATE TABLE song (
    song_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
    vote INT NOT NULL DEFAULT 0,
    PRIMARY KEY(song_id)
);
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,
            }, 
            function(data) {
                if ( data != 'success' ) { alert(data); }
            }
        );

        $.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);
    });
});
PHP:


向SO团队(SO.com团队)发送电子邮件以回复您的问题。谢谢Cletus…我在几个小时前就这样做了,以合并两个帐户…但我仍然无法使用此脚本:(不耐烦,我知道:-DThanks Dmitri。你能为我澄清一下吗:我已经创建了第一个问题中提出的数据库…我们可以用它来代替你的吗?我需要更改哪些值?谢谢!基本上,我只是删除并重命名了一堆列。如果你愿意,你可以完全保留它们-如果是的话,只需更改$dbh->prepare语句:$sth=$dbh->prepare('updatedaily\u song SET vows=vows+:delta其中daily\u song\u id=:song\u id'));然后,它应该可以工作,而不会更改数据库谢谢你Dmitri。我仍然遇到一些错误,但我知道这是我在这里缺乏经验。我设法将我的帐户合并在一起,因此我将结束此问题,以便我们可以将所有内容保留在一页上。
<?php

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

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

// Make sure the voting value is within the valid range.
if ($delta != -1 && $delta != 1) {
  exit("Invalid delta");
}


// Check to see if user has already voted for this song
session_start();
if (isset($_SESSION['voted'])) {
  exit("You already voted!");
}

// If they haven't voted yet, connect to the database
// YOU NEED TO CHANGE THIS INFOMATION TO WHATEVER APPLYS TO YOU.
$dsn = 'mysql:dbname=testdb;host=127.0.0.1';
$user = 'dbuser';
$password = 'dbpass';

try {
  $dbh = new PDO($dsn, $user, $password);
}
catch (PDOException $e) {
  exit('Connection failed: ' . $e->getMessage());
}


// If the database connection is succesful, update song entry
// UPDATE daily_song SET votes=votes+$delta WHERE daily_song_id=$songId
$sth = $dbh->prepare('UPDATE song SET votes = votes + :delta WHERE song_id = :song_id');
$sth->bindParam(':delta', $delta);
$sth->bindParam(':song_id', $song_id);
if (!$sth->execute()) {
  exit("Unable to update votes");
}

exit("success");