簡體   English   中英

如何在不重新加載的情況下更新號碼

[英]how to update number without reloading

我正在使用jquery中的投票系統。 我擁有它,用戶可以在上面投票,或者如果他們改變主意,則從投票中扣除,然后付諸表決。 但是我的問題是,選擇投票后,我無法同時刷新兩個數字,因此它僅使用原始數字而不是更新的數字。

投票頁

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/
libs/jquery/1.3.0/jquery.min.js"></script>
<script type="text/javascript">
$(function() {
    $(".vote").click(function() {
        var id = $(this).attr("id");
        var name = $(this).attr("name");
        var dataString = 'id=' + id;
        var parent = $(this);

        if (name == 'up') {

            $.ajax({
                type: "POST",
                url: "up_vote.php",
                data: dataString,
                cache: false,

                success: function(html) {
                    parent.html(html);
                }
            });
        } else {
            $.ajax({
                type: "POST",
                url: "down_vote.php",
                data: dataString,
                cache: false,

                success: function(html) {
                    parent.html(html);
                }
            });
        }
        return false;
    });
});
</script>
<?php
$sql=mysql_query("SELECT * FROM uploads LIMIT 9");
while($row=mysql_fetch_array($sql))
{
    $msg=$row['title'];
    $mes_id=$row['id'];
    $up=$row['up'];
    $down=$row['down'];
?>
<a href="" class="vote" id="
    <?php echo $mes_id; ?>" name="up">
    <?php echo $up; ?> up
</a>
<div class='down'>
    <a href="" class="vote" id="
        <?php echo $mes_id; ?>" name="down">
        <?php echo $down; ?>
    </a>
</div>
<div class='box2' >
    <?php echo $msg; ?>
</div>undefined</div>undefined
<?php } ?>

up_vote.php頁面..

(down_vote.php與up_vote完全相同,只是它只是向上或向下更改。)

<?php
include("config.php");
$ip = $_SERVER['REMOTE_ADDR'];

if ($_POST['id']) {
    $id     = $_POST['id'];
    $id     = mysql_escape_String($id);
    //Verify IP address in Voting_IP table
    $ip_sql = mysql_query("select ip from votes where img_id='$id' and ip='$ip'");
    $count  = mysql_num_rows($ip_sql);

    if ($count == 0) {
        // Update Vote.
        $sql = "UPDATE uploads SET up=up+1 WHERE id='$id'";
        mysql_query($sql);
        // Insert IP address and Message Id in Voting_IP table.
        $sql_in = "insert into votes (id,img_id,ip,type) values ('','$id','$ip','up')";
        mysql_query($sql_in);
    } else {

        //if already voted change it..
        $result = mysql_query("SELECT * FROM votes WHERE img_id='$id' AND ip='$ip'");
        while ($row = mysql_fetch_array($result)) {
            $vote_type = $row['type'];
        }
        if ($vote_type == 'down') {
            $up   = mysql_query("UPDATE uploads SET up=up+1 WHERE id='$id'");
            $down = mysql_query("UPDATE uploads SET down=down-1 WHERE id='$id'");
            $vote = mysql_query("UPDATE votes SET type=up WHERE img_id='$id' AND ip='$ip'");
        }
    }

    $result   = mysql_query("select up from uploads where id='$id'");
    $row      = mysql_fetch_array($result);
    $up_value = $row['up'];
    echo $up_value;
}
?>

沒有答案,但評論太久。 該腳本:

while ($row = mysql_fetch_array($result)) {
        $vote_type = $row['type'];
    }    
if ($vote_type == 'down') {
  /* ... */
  }

我不認為您現在需要它。 實際上,您實際上僅使用最后獲取的行,而不是全部。 如果這是您的意圖(因為只有一個),那么您根本就不需要while() 您可以將其更改為:

$row = mysql_fetch_row($result);
$vote_type = $row['type'];
if ($vote_type == 'down') {
  /* ... */
  }

此外,我建議將您的代碼更改為PDO。 更安全,不建議使用mysql_ *。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM