ウェブホストがサポートされているバージョンの 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);
});
});
}
});