0

ポーリングシステムを構築するためにAjaxからPHPファイルに投稿しようとしましたが、ラジオボタンが表示されないため、リクエストを送信できません... Cookieチェックに問題があります...ユーザーIPを確認したい場合彼はすでにラジオボタンを非表示に投票し、そうでない場合はラジオボタンを表示します

index.html

    <script type="text/javascript" >
        $(function(){
            var loader=$('#loader');
            var pollcontainer=$('#pollcontainer');
            loader.fadeIn();
            //Load the poll form
            $.get('poll.php', '', function(data, status){
                pollcontainer.html(data);
                animateResults(pollcontainer);
                pollcontainer.find('#viewresult').click(function(){
                    //if user wants to see result
                    loader.fadeIn();
                    $.get('poll.php', 'result=1', function(data,status){
                        pollcontainer.fadeOut(1000, function(){
                            $(this).html(data);
                            animateResults(this);
                        });
                        loader.fadeOut();
                    });
                    //prevent default behavior
                    return false;
                }).end()
                .find('#pollform').submit(function(){
                    var selected_val=$(this).find('input[name=poll]:checked').val();
                    if(selected_val!=''){
                        //post data only if a value is selected
                        loader.fadeIn();
                        $.post('poll.php', $(this).serialize(), function(data, status){
                            $('#formcontainer').fadeOut(100, function(){
                                $(this).html(data);
                                animateResults(this);
                                loader.fadeOut();
                            });
                        });
                    }
                    //prevent form default behavior
                    return false;
                });
                loader.fadeOut();
            });

            function animateResults(data){
                $(data).find('.bar').hide().end().fadeIn('slow', function(){
                    $(this).find('.bar').each(function(){
                        var bar_width=$(this).css('width');
                        $(this).css('width', '0').animate({ width: bar_width }, 1000);
                    });
                });
            }

        });
    </script>

poll.php

if (!isset($_POST['poll']) || !isset($_POST['pollid'])) {
    $query = mysql_query("SELECT id, ques FROM questions ORDER BY id DESC LIMIT 1");
    while ($row = mysql_fetch_assoc($query)) {
        //display question
        echo "<p class=\"pollques\" >" . $row['ques'] . "</p>";
        $poll_id = $row['id'];
    }
    if (isset($_GET["result"]) == 1 || isset($_COOKIE["voted" . $poll_id]) == 'yes') {
        //if already voted or asked for result
        showresults($poll_id);
        exit;
    } else {
        //display options with radio buttons
        $query = mysql_query("SELECT id, value FROM options WHERE ques_id=$poll_id");
        if (mysql_num_rows($query)) {
            echo '<div id="formcontainer" ><form method="post" id="pollform" action="' . $_SERVER['PHP_SELF'] . '" >';
            echo '<input type="hidden" name="pollid" value="' . $poll_id . '" />';
            while ($row = mysql_fetch_assoc($query)) {
                echo '<p><input type="radio" name="poll" value="' . $row['id'] . '" id="option-' . $row['id'] . '" /> 
                <label for="option-' . $row['id'] . '" >' . $row['value'] . '</label></p>';
            }
            echo '<p><input type="submit"  value="Submit" /></p></form>';
            echo '<p><a href="' . $_SERVER['PHP_SELF'] . '?result=1" id="viewresult">View result</a></p></div>';
        }
    }
} else {
    // i cant see this radio 
    if (isset($_COOKIE["voted" . $_POST['pollid']]) != 'yes') {

        //Check if selected option value is there in database?
        $query = mysql_query("SELECT * FROM options WHERE id='" . intval($_POST["poll"]) . "'");
        if (mysql_num_rows($query)) {
            $query = "INSERT INTO votes(option_id, voted_on, ip) VALUES('" . $_POST["poll"] . "', '" . date('Y-m-d H:i:s') . "', '" . $_SERVER['REMOTE_ADDR'] . "')";
            if (mysql_query($query)) {
                //Vote added to database
                setcookie("voted" . $_POST['pollid'], 'yes', time() + 86400 * 300);
            }
            else
                echo "There was some error processing the query: " . mysql_error();
        }
    }
    showresults(intval($_POST['pollid']));
}
4

1 に答える 1

0

isset($_COOKIE["voted" . $poll_id]) == 'yes'isset は true または false を返すため、この条件は常に false です。これと同じif (isset($_COOKIE["voted" . $_POST['pollid']]) != 'yes')

于 2012-10-15T15:33:55.283 に答える