Script de evaluare a subiectului

Mulți probabil au văzut deja munca scripturilor pe diverse site-uri care permit vizitatorilor să evalueze subiectele (materialele) care le plac. La cererea vizitatorilor site-ului nostru, am decis să creăm propriul nostru script simplu și universal, care să le permită vizitatorilor site-ului să evalueze subiectele disponibile pe site.

Vă rugăm să rețineți că atunci când evaluați un subiect (sau schimbați evaluarea acestuia), evaluarea se schimbă fără a reîncărca pagina, ceea ce economisește resursele serverului și timpul vizitatorilor.

Pentru un exemplu, aruncați o privire la exemplul mic de mai jos:

Puteți să faceți clic și să vă asigurați că evaluările se modifică la clic și sunt salvate când pagina este reîncărcată. Cred că nu vă va fi greu să aranjați aprecierile după cum aveți nevoie, mai ales că fiecare are propriile preferințe în acest sens. După cum probabil ați observat, atunci când ratingul este inversat (dacă vizitatorul se răzgândește), suma se modifică cu două puncte deodată, deoarece. mai întâi, estimarea anterioară este anulată, apoi se adaugă una nouă.

Și acum să mergem direct la scriptul în sine pentru a obține pe site-ul tău capacitatea de a evalua acei vizitatori. Pentru ca scriptul să funcționeze corect, va trebui să includeți biblioteca jQuery (acest lucru este necesar pentru a lăsa evaluări fără a reîncărca pagina):

De asemenea, va trebui să faceți mici modificări în baza de date MySQL existentă, și anume, să adăugați două câmpuri noi la tabel cu subiecte existente (în exemplul nostru, să se numeascăthreads):plusșiminus. În aceste câmpuri, vom stoca valoarea totală a evaluărilor pozitive și negative acordate unui anumit subiect.

Acum va trebui să creați un fișier PHP numitrating.phpcare va procesa evaluările primite și le va introduce în MySQL. Puteți descărca acest lucrufișier sub linkulrating.rarsau creați-l singur introducând următorul cod în interior:

php if (isset( $_POST [ "id" ]) și is_numeric ( $_POST [ "id" ])) $object = $_POST [ "id" ]; else $object = '' ; if (isset( $_POST [ "ocenka" ]) și ( $_POST [ "ocenka" ]== 0 sau $_POST [ "ocenka" ]== 1 )) $ocenka = $_POST [ "ocenka" ]; else $ocenka = '' ;

if ( $obiect != '' și $ocenka != '' ) $ip = $_SERVER [ 'REMOTE_ADDR' ]; $db = mysqli_connect ( „localhost” , „login” , „parolă” , „nume bază de date” ); $res = mysqli_query ( $db , "SELECT count(id), value FROM rating WHERE theme_ > . $object . "' și ip=INET_ATON('" . $ip . "')" ) ; $number = mysqli_fetch_array ( $res );

if ( $număr [ 0 ]== 0 ) $res = mysqli_query ( $db , „INSERT INTO rating (data,theme_id,ip,value) valorile ​​ ('" . time (). "',' " . $obiect . "',INET_ATON('" . $ip . "'),'" . $ocenka . "')" ); dacă ( $ocenka == 0 ) $res = mysqli_query ( $db , "UPDATE threads SET minus=(minus+1) WHERE > . $obiect . "' LIMIT 1" ); else $res = mysqli_query ( $db , "UPDATE threads SET plus=(plus+1) WHERE > . $object . "' LIMIT 1" ); > elseif ( $număr [ "valoare" ]!= $ocenka ) $res = mysqli_query ( $db , "UPDATE rating SET date='" . time (). "',value= '" . $ ocenka . "' WHERE theme_ > . $object . "' și ip=INET_ATON('" . $ip . "')" ); if ( $ocenka == 0 ) $res = mysqli_query ( $db , „UPDATE threads SET minus=(minus+1), plus=(plus-1) WHERE > . $object . „' LIMIT 1" ); else $res = mysqli_query ( $db , "UPDATE threads SET plus=(plus+1), minus=(minus-1) WHERE > . $obiect . "' LIMIT 1" ); >

$res = mysqli_query ( $db , "SELECT plus,minus FROM threads WHERE > . $obiect . "' LIMIT 1" ); $rating = mysqli_fetch_array ( $res); echo ( $evaluare [ plus ]- $evaluare [ minus ]); > ?>

În continuare, în toate subiectele site-ului pe care doriți să le evaluați, trebuie să adăugați două coduri. Primul cod tipărește evaluarea inițială a subiectului și conține un formular de evaluare:

php $obiect = 111 ; //id-ul subiectului curent

$db = mysqli_connect ( "localhost" , "login" , "parolă" , "numele bazei de date" ); $res = mysqli_query ( $db , "SELECT plus,minus FROM threads WHERE > . $obiect . "' LIMIT 1" ); $rating = mysqli_fetch_array ( $res );

echo '' ; echo ' ' .( $evaluare [ "plus" ]- $evaluare [ "minus" ]). ' ' ; ecou '' ; ?>

Punctul important în acest cod este să atribuiți variabilei$objectidentificatorul (id-ul) temei care va fi evaluată. Deoarece structura site-urilor este diferită pentru fiecare, atunci nu am adăugat o cerere MySQL pentru a o primi, pentru că cu siguranță, undeva acest identificator de subiect a fost deja obținut din baza de date MySQL mai devreme.

Al doilea cod este necesar pentru a trece evaluarea selectată în fișierulrating.phpși pentru a obține evaluarea totală a temei fără a reîncărca pagina:

tip de script = „text/javascript” > $( „.evaluare” ). faceți clic pe (function() jQuery . post ( "rating.php" ,< id : php echo $object ; ?>, ocenka :$( this ). attr ( "alt" )>, refresh_rating ); >);

funcția refresh_rating ( date ) $( "#rating_threads" ). html ( date ); >

Nu lăsați dimensiunea codului și descrierea lui să vă sperie, pentru că scriptul este rapid și va fi foarte util pentru toată lumea.