1

簡単な投票ページを作成しようとしています。両側にいくつかのリンクがあり、ユーザーが上矢印をクリックすると、投票がカウントされ、投票カウント値が増加します。投票が増えると、新しい値が賛成票の矢印の上に表示されることを除いて、すべてが現在機能しています(新しい値をエコーし​​ているので、これは理にかなっています)。更新された投票数を、投票数を表示する必要がある SPAN に設定する方法を理解できませんでした。

コードは次のとおりです: HTML

<?php
$sql=mysql_query("SELECT * FROM discussion_links WHERE link_side = 'Michigan'");
while($row = mysql_fetch_array($sql)) {
    $link_id=$row['link_id'];
    $url=$row['link_url'];
    $title=$row['link_title'];
    $source=$row['link_source'];
    $votes=$row['vote_count'];
?> 
<div class="top-links-wrapper">
    <div class="link-info">
        <a class="link-title" href="http://<?php echo $url ?>"><?php echo $title . "</a>"; ?>
        <p class="link-source"><?php echo $source . "</p>" ?>
    </div>
    <div class="link-vote-wrapper">
        <div class="link-votes">
            <span><?php echo $votes; ?></span>
        </div>
        <a href="#" class="vote" id="<?php echo $link_id; ?>" name="up" title="Up vote"></a>
    </div>
</div>
<?php   
    }
?>

以下の PHP 関数から返された値を、上記のコードの SPAN に置き換えたいと思います。

PHP

<?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_add from Voting_IP where link_id_fk='$id' and ip_add='$ip'");
    $count=mysql_num_rows($ip_sql);

    if($count==0) {
        // Update Vote.
        $sql = "update discussion_links set vote_count=vote_count+1 where link_id='$id'";
        mysql_query( $sql);
        // Insert IP address and Message Id in Voting_IP table.
        $sql_in = "insert into Voting_IP (link_id_fk,ip_add) values ('$id','$ip')";
        mysql_query( $sql_in);
    }
    else {
        echo "<script>alert('You have already voted');</script>";
    }
    $result=mysql_query("select vote_count from discussion_links where link_id='$id'");
    $row=mysql_fetch_array($result);
    $up_value=$row['vote_count'];
    echo $up_value;
}
?>

この$up_valueは、HTML の現在の投票数を置き換えたいものです。

jQuery

<script type="text/javascript">
    //<![CDATA[
    var $j = jQuery.noConflict();
    $j(function() {
        $j(".vote").click(function() {
            var id = $j(this).attr("id");
            var name = $j(this).attr("name");
            var dataString = 'id='+ id ;
            var parent = $j(this);

            if (name=='up') {
                $j(this).fadeIn(200).html('<img src="dot.gif" />');
                $j.ajax({
                    type: "POST",
                    url: "up_vote.php",
                    data: dataString,
                    cache: false,

                    success: function(html) {
                        parent.html(html);
                    } 
                });
            }
            return false;
        });
    });
    //]]>
</script>

ありがとう、どんな助けでも大歓迎です。

4

1 に答える 1

1

(int)関数で適切な合計を返すと仮定するとsuccess、span 要素の InnerHTML をその値に設定する必要があります。

link-votes各要素に一意の ID を与え、その ID を使用しInnerHTMLて要素の を変更すると便利ですspan。ajaxの成功について

すでにvote_idをイベントハンドラーに関連付けているため、 span id要素にプレフィックスを追加するだけで、success関数で次のように呼び出すことができます。

       $("#myPrefix"+id).html(html);
于 2012-06-16T02:29:57.743 に答える