Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: przycisk do glosowania
Forum PHP.pl > Forum > XML, AJAX > AJAX
suxone
Mam problemy z dodaniem do skryptu wyswietlania tekstu "glos zostal dodany" i "juz glosowales" w przypadku juz oddanego glosu


tutaj skrypt

index.php
Kod
<style type="text/css">
.guziki {
    border:none;
    cursor:pointer;
}
input.ocena {
    border:none;
    background-color:white;
    text-align: center;
}
</style>
<script type="text/javascript">
var xmlHttp;

function ajaxInit() {
    
    try  {
          // Firefox, Opera 8.0+, Safari
          xmlHttp=new XMLHttpRequest();
    }
    catch (e) {
          // Internet Explorer
          try {
            xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
          }
          catch (e) {
            try {
              xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
           }
           catch (e) {
              alert("Twoja przeglądarka nie obsługuje AJAXa!");
              return false;
           }
        }
    }
}

function zablokuj(id) {
    eval("document.images['button_plus_"+id+"'].src = 'imgs/vote_plus_unactive.gif'");
    eval("document.images['button_minus_"+id+"'].src = 'imgs/vote_minus_unactive.gif'");

    eval("document.images['button_plus_"+id+"'].onclick = 'void()'");
    eval("document.images['button_minus_"+id+"'].onclick = 'void()'");
}

function vote(id, typ) {
    ajaxInit();
    xmlHttp.onreadystatechange=function() {    
        if(xmlHttp.readyState==4) {
            a = xmlHttp.responseText;
            if (a != "false") {
                zablokuj(id);
                eval("document.forms[0].ocena"+id+".value = a");
            }
        }
    }    
    if (typ == 'plus')
        xmlHttp.open("GET","vote.php?plus=1&k="+id,true);
    else
        xmlHttp.open("GET","vote.php?minus=1&k="+id,true);
    xmlHttp.send(null);
}

</script>
<body>
<form>
<?php
$sql = mysqli_connect('localhost','piotrek','kicia');
mysqli_select_db($sql,'piotrek_komentarze');
$res = mysqli_query($sql,"SELECT * FROM komentarze");

while ($row = mysqli_fetch_row($res)) {
    echo "\n\n<div id=\"komentarz".$row[0]."\">"; //początek diva
    echo "\n\t".$row[1];
    
    echo "\n\t <img class=\"guziki\" id=\"button_plus_".$row[0]."\""; //link 'na plus'
    echo " src=\"imgs/vote_plus_active.gif\" alt=\"głosuj na plus\" ";
    echo "onclick=\"vote(".$row[0].", 'plus')\"> |";
    
    echo "\n\t <img class=\"guziki\" id=\"button_minus_".$row[0]."\" "; //link 'na minus'
    echo "src=\"imgs/vote_minus_active.gif\" alt=\"głosuj na minus\" ";
    echo "onclick=\"vote(".$row[0].", 'minus')\">";
    
    echo "\n\t (<input class=\"ocena\" type=\"text\" "; //ocena
    echo "name=\"ocena".$row[0]."\" value=\"".$row[2]."\" size=\"1\">)";
    echo "\n</div>";//koniec
}
?>




vote.php
Kod
<?php
header("Cache-Control: no-cache, must-revalidate");
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
error_reporting(0);

if (!isset($_GET['plus'])&&!isset($_GET['minus'])) {
    echo 'false';
    exit;
}
if (!isset($_GET['k'])) {
    echo 'false';
    exit;
}

$k = (int)$_GET['k'];

$sql = @mysql_connect('localhost','piotrek','kicia');
@mysql_select_db('piotrek_komentarze',$sql);
if (!$sql) {
    echo "false";
    exit;
}
$res = @mysql_query("SELECT ocena FROM komentarze WHERE id = ".$k);
if (!$res) {
    echo "false";
    exit;
}
$curr = @mysql_result($res,0);
if (isset($_GET['minus'])) {
    $curr--;
}
else {
    $curr++;
}

$res = @mysql_query("UPDATE komentarze SET ocena = ".$curr." WHERE id = ".$k);

if ($res)
    echo $curr;
else
    echo 'false';

?>
erix
[JAVASCRIPT] pobierz, plaintext
  1. eval("document.images['button_plus_"+id+"'].src = 'imgs/vote_plus_unactive.gif'");
[JAVASCRIPT] pobierz, plaintext

A wiesz, że klucze w tablicach łączy się jak zwykle łańcuchy tekstowe...? Nie rób fuszerki, a wykorzystanie evala tylko do tego nią jest.

I puść gdzieś to na żywo, wywalając małpy.
suxone
to nie ja pisalem ten skrypt, probuje go jedynie przerobic a niestety moja wiedza na temat JS, AJAX jest znikoma

Cytat
wykorzystanie evala tylko do tego nią jest.

I puść gdzieś to na żywo, wywalając małpy.


mozna jasniej ?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.