1

ウェブホストがサポートされているバージョンの php を 5.4 にアップグレードしたため、正しく動作しなくなったウェブページのスクリプトを修正するように依頼されました。すでに htaccess ファイルを使用してバージョンをダウングレードしようとしましたが、成功しませんでした。

スクリプトは基本的に非常に単純なデータベースを使用して質問を保存し、それらに対する投票を記録し、Java を使用して実際に質問とその回答を表示します。このビットが問題を引き起こしていると思います。

データベースには 5 つの質問があり、実際のページ自体には最後の質問が 5 回表示されているため、変数がどこかでクリアされていないのではないかと疑われます。

ここにスクリプトがあります

$topPart = "";
$botPart = "";
$query = mysql_query("SELECT * FROM questions");
while ($row = mysql_fetch_assoc($query)) {
    //display question
    $topPart .= "pollNum=" . $row['id'] . ";\n";
    $topPart .= "$('#loader'+pollNum).fadeIn();\n";
    $topPart .= "$.get('poll.php', 'pollid='+pollNum, function(data, status){\n";
    $topPart .= "loadpoll(data, status, '". $row['id'] ."')\n";
    $topPart .= "});\n";

    $botPart .= "<div id=\"pollcontainer" . $row['id'] . "\" class=\"question\" >". $topPart . "</div>\n";
    $botPart .= "<p id='loader" . $row['id'] . "'>Loading...</p>";

ページを調べると、IDとクラスがすべて正しく番号付けされているため、このビットは正常に機能していると思います。繰り返される実際の質問、周囲のdiv番号が正しくなっています。これはJavaです...私はJavaについて何も知りません...

<script>
$(function(){
var pollNum;
<?php
echo $topPart;
?>

function loadpoll(data, status, pollNum){
    //alert(pollNum);
    var pollcontainer=$('#pollcontainer'+pollNum);
    var loader=$('#loader'+pollNum);
    pollcontainer.html(data);
    animateResults(pollcontainer);
    pollcontainer.find('#viewresult'+pollNum).click(function(){
        //if user wants to see result
        $('#formcontainer'+pollNum).fadeOut(100, function(){
            loader.fadeIn();
            $.get('poll.php', 'pollid='+pollNum+'&result=1', function(data,status){
            loadpoll(data,status, pollNum);
            });
        });
        //prevent default behavior
        return false;
    }).end()
    pollcontainer.find('#viewvote'+pollNum).click(function(){
        //if user wants to see result
        $('#formcontainer'+pollNum).fadeOut(100, function(){
            loader.fadeIn();
            $.get('poll.php', 'pollid='+pollNum, function(data,status){
                loadpoll(data,status, pollNum);
            });
        });
        //prevent default behavior
        return false;
    }).end()
    .find('#pollform'+pollNum).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'+pollNum).fadeOut(100, function(){
                    $(this).html(data);
                    animateResults(this);
                    loader.fadeOut();
                });
            });
        }
        //prevent form default behavior
        return false;
    });
    loader.fadeOut();

}

function showresults(data, status, pollNum){
    var pollcontainer=$('#pollcontainer'+pollNum);
    var loader=$('#loader'+pollNum);
            pollcontainer.fadeOut(1000, function(){
                $(this).html(data);
                animateResults(this);

                pollcontainer.find('#viewvote'+pollNum).click(function(){
                    //if user wants to see result
                    loader.fadeIn();
                    $.get('poll.php', 'pollid'+pollNum, function(data,status){
                        pollcontainer.fadeOut(1000, function(){
                            $(this).html(data);
                            animateResults(pollcontainer);
                        });
                        loader.fadeOut();
                    });
                    //prevent default behavior
                    return false;
                }).end()


            });
            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);
                        });
                    });
}

});
4

0 に答える 0