Mam błąd w skrypcie systemu ocen na internet explorer działa dobrze pod chrome i firefox nie jak kliknę na ocenę nie pokazuje jaką ocenę się przyznało.
Kod
//--------------------- gwiazdki
if (document.images){
pic1 = new Image(220,19);
pic1.src = "img/rating_loading.gif";
pic2 = new Image(25,75);
pic2.src = "img/rating_star.gif";
pic3 = new Image(25,75);
pic3.src = "img/rating_star_2.gif";
pic4 = new Image(16,13);
pic4.src = "img/rating_tick.gif";
pic5 = new Image(14,14);
pic5.src = "img/rating_warning.gif";
}
// AJAX ----------------------------------------
var xmlHttp
function GetXmlHttpObject(){
var xmlHttp = null;
try {
// Firefox, Opera 8.0+, Safari
xmlHttp = new XMLHttpRequest();
}
catch (e) {
// Internet Explorer
try {
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e){
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xmlHttp;
}
// Calculate the rating
function rate(rating,id,show5,showPerc,showVotes){
xmlHttp = GetXmlHttpObject()
if(xmlHttp == null){
alert ("Twoja przeglądarka nie obsługuje AJAX!");
return;
}
xmlHttp.onreadystatechange = function(){
var loader = document.getElementById('loading_'+id);
var uldiv = document.getElementById('ul_'+id);
if (xmlHttp.readyState == 4){
//loader.style.display = 'none';
var res = xmlHttp.responseText;
if(res == 'already_voted'){
loader.style.display = 'block';
loader.innerHTML = '<div class="voted_twice">Już oceniałeś ten produkt!</div>';
} else {
loader.style.display = 'block';
loader.innerHTML = '<div class="voted">Dziękujemy !</div>';
if(show5 == true){
var out = document.getElementById('outOfFive_'+id);
var calculate = res/20;
out.innerHTML = Math.round(calculate*100)/100; // 3.47;
//out.innerHTML = Math.round((calculate*2),0)/2; // 3.5;
}
if(showPerc == true){
var perc = document.getElementById('percentage_'+id);
//var newPerc = Math.round(Math.ceil(res/5))*5;
var newPerc = res;
perc.innerHTML = newPerc+'%';
}
else if(showPerc == false){
var newPerc = res;
}
if(showVotes == true){
var votediv = document.getElementById('showvotes_'+id).firstChild.nodeValue;
var splitted = votediv.split(' ');
var newval = parseInt(splitted[0]) + 1;
if(newval == 1){
document.getElementById('showvotes_'+id).innerHTML = newval+' Ocena';
} else if(newval < 5 )
{
document.getElementById('showvotes_'+id).innerHTML = newval+' Oceny';
}else {
document.getElementById('showvotes_'+id).innerHTML = newval+' Ocen';
}
}
var ulRater = document.getElementById('rater_'+id);
ulRater.className = 'star-rating2';
var all_li = ulRater.getElementsByTagName('li');
for(var i=1;i<all_li.length;i++){
all_li[i].getElementsByTagName('a')[0].onclick = 'return false;';
}
if(navigator.appName == 'Microsoft Internet Explorer'){
uldiv.style.setAttribute('width',newPerc+'%'); // IE
} else {
uldiv.setAttribute('style','width:'+newPerc+'%'); // Everyone else
}
}
} else {
loader.innerHTML = '<img src="img/rating_loading.gif" alt="loading" />';
}
}
var url = "includes/rating_process.php";
var params = "id="+id+"&rating="+rating;
xmlHttp.open("POST",url,true);
xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlHttp.setRequestHeader("Content-length", params.length);
xmlHttp.setRequestHeader("Connection", "close");
xmlHttp.send(params);
}
if (document.images){
pic1 = new Image(220,19);
pic1.src = "img/rating_loading.gif";
pic2 = new Image(25,75);
pic2.src = "img/rating_star.gif";
pic3 = new Image(25,75);
pic3.src = "img/rating_star_2.gif";
pic4 = new Image(16,13);
pic4.src = "img/rating_tick.gif";
pic5 = new Image(14,14);
pic5.src = "img/rating_warning.gif";
}
// AJAX ----------------------------------------
var xmlHttp
function GetXmlHttpObject(){
var xmlHttp = null;
try {
// Firefox, Opera 8.0+, Safari
xmlHttp = new XMLHttpRequest();
}
catch (e) {
// Internet Explorer
try {
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e){
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xmlHttp;
}
// Calculate the rating
function rate(rating,id,show5,showPerc,showVotes){
xmlHttp = GetXmlHttpObject()
if(xmlHttp == null){
alert ("Twoja przeglądarka nie obsługuje AJAX!");
return;
}
xmlHttp.onreadystatechange = function(){
var loader = document.getElementById('loading_'+id);
var uldiv = document.getElementById('ul_'+id);
if (xmlHttp.readyState == 4){
//loader.style.display = 'none';
var res = xmlHttp.responseText;
if(res == 'already_voted'){
loader.style.display = 'block';
loader.innerHTML = '<div class="voted_twice">Już oceniałeś ten produkt!</div>';
} else {
loader.style.display = 'block';
loader.innerHTML = '<div class="voted">Dziękujemy !</div>';
if(show5 == true){
var out = document.getElementById('outOfFive_'+id);
var calculate = res/20;
out.innerHTML = Math.round(calculate*100)/100; // 3.47;
//out.innerHTML = Math.round((calculate*2),0)/2; // 3.5;
}
if(showPerc == true){
var perc = document.getElementById('percentage_'+id);
//var newPerc = Math.round(Math.ceil(res/5))*5;
var newPerc = res;
perc.innerHTML = newPerc+'%';
}
else if(showPerc == false){
var newPerc = res;
}
if(showVotes == true){
var votediv = document.getElementById('showvotes_'+id).firstChild.nodeValue;
var splitted = votediv.split(' ');
var newval = parseInt(splitted[0]) + 1;
if(newval == 1){
document.getElementById('showvotes_'+id).innerHTML = newval+' Ocena';
} else if(newval < 5 )
{
document.getElementById('showvotes_'+id).innerHTML = newval+' Oceny';
}else {
document.getElementById('showvotes_'+id).innerHTML = newval+' Ocen';
}
}
var ulRater = document.getElementById('rater_'+id);
ulRater.className = 'star-rating2';
var all_li = ulRater.getElementsByTagName('li');
for(var i=1;i<all_li.length;i++){
all_li[i].getElementsByTagName('a')[0].onclick = 'return false;';
}
if(navigator.appName == 'Microsoft Internet Explorer'){
uldiv.style.setAttribute('width',newPerc+'%'); // IE
} else {
uldiv.setAttribute('style','width:'+newPerc+'%'); // Everyone else
}
}
} else {
loader.innerHTML = '<img src="img/rating_loading.gif" alt="loading" />';
}
}
var url = "includes/rating_process.php";
var params = "id="+id+"&rating="+rating;
xmlHttp.open("POST",url,true);
xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlHttp.setRequestHeader("Content-length", params.length);
xmlHttp.setRequestHeader("Connection", "close");
xmlHttp.send(params);
}
dorzucam ewentualnie kod z pliku ranting_process
Kod
if($_POST){
global $nazwa;
$id = escape($_POST['id']);
$rating = (int) $_POST['rating'];
if($rating <= 5 && $rating >= 1){
if(@mysql_fetch_assoc(mysql_query("SELECT id FROM $nazwa WHERE IP = '".$_SERVER['REMOTE_ADDR']."' AND rating_id = '$id'")) || isset($_COOKIE['has_voted_'.$id])){
echo 'Już oceniałes';
} else {
setcookie('has_voted_'.$id,$id,$expire,'/',$domain,false);
//zapis
mysql_query("INSERT INTO $nazwa (rating_id,rating_num,IP) VALUES ('$id','$rating','".$_SERVER['REMOTE_ADDR']."')") or die(mysql_error());
$total = 0;
$rows = 0;
//odczyt
$sel = mysql_query("SELECT rating_num FROM $nazwa WHERE rating_id = '$id'");
while($data = mysql_fetch_assoc($sel)){
$total = $total + $data['rating_num'];
$rows++;
}
$perc = ($total/$rows) * 20;
echo round($perc,2);
//echo round($perc/5)*5;
}
}
}
// IF JAVASCRIPT IS DISABLED
if($_GET){
global $nazwa;
$id = escape($_GET['id']);
$rating = (int) $_GET['rating'];
// If you want people to be able to vote more than once, comment the entire if/else block block and uncomment the code below it.
if($rating <= 5 && $rating >= 1){
if(@mysql_fetch_assoc(mysql_query("SELECT id FROM $nazwa WHERE IP = '".$_SERVER['REMOTE_ADDR']."' AND rating_id = '$id'")) || isset($_COOKIE['has_voted_'.$id])){
echo 'already_voted';
} else {
setcookie('has_voted_'.$id,$id,$expire,'/',$domain,false);
mysql_query("INSERT INTO $nazwa (rating_id,rating_num,IP) VALUES ('$id','$rating','".$_SERVER['REMOTE_ADDR']."')") or die(mysql_error());
}
header("Location:".$_SERVER['HTTP_REFERER']."");
die;
}
else {
echo 'Nie możesz dać więcej niż 5 gwiazdek ani mniej niż 1 <a href="'.$_SERVER['HTTP_REFERER'].'">back</a>';
}
}
global $nazwa;
$id = escape($_POST['id']);
$rating = (int) $_POST['rating'];
if($rating <= 5 && $rating >= 1){
if(@mysql_fetch_assoc(mysql_query("SELECT id FROM $nazwa WHERE IP = '".$_SERVER['REMOTE_ADDR']."' AND rating_id = '$id'")) || isset($_COOKIE['has_voted_'.$id])){
echo 'Już oceniałes';
} else {
setcookie('has_voted_'.$id,$id,$expire,'/',$domain,false);
//zapis
mysql_query("INSERT INTO $nazwa (rating_id,rating_num,IP) VALUES ('$id','$rating','".$_SERVER['REMOTE_ADDR']."')") or die(mysql_error());
$total = 0;
$rows = 0;
//odczyt
$sel = mysql_query("SELECT rating_num FROM $nazwa WHERE rating_id = '$id'");
while($data = mysql_fetch_assoc($sel)){
$total = $total + $data['rating_num'];
$rows++;
}
$perc = ($total/$rows) * 20;
echo round($perc,2);
//echo round($perc/5)*5;
}
}
}
// IF JAVASCRIPT IS DISABLED
if($_GET){
global $nazwa;
$id = escape($_GET['id']);
$rating = (int) $_GET['rating'];
// If you want people to be able to vote more than once, comment the entire if/else block block and uncomment the code below it.
if($rating <= 5 && $rating >= 1){
if(@mysql_fetch_assoc(mysql_query("SELECT id FROM $nazwa WHERE IP = '".$_SERVER['REMOTE_ADDR']."' AND rating_id = '$id'")) || isset($_COOKIE['has_voted_'.$id])){
echo 'already_voted';
} else {
setcookie('has_voted_'.$id,$id,$expire,'/',$domain,false);
mysql_query("INSERT INTO $nazwa (rating_id,rating_num,IP) VALUES ('$id','$rating','".$_SERVER['REMOTE_ADDR']."')") or die(mysql_error());
}
header("Location:".$_SERVER['HTTP_REFERER']."");
die;
}
else {
echo 'Nie możesz dać więcej niż 5 gwiazdek ani mniej niż 1 <a href="'.$_SERVER['HTTP_REFERER'].'">back</a>';
}
}
Pomoże ktoś ? bo juz szukam tego błędu 3 dzień :/
Z góry dziękuje za pomoc.