Star rating hiba jRating
2012-09-20T15:03:47+02:00
2012-09-20T16:26:54+02:00
2022-07-19T04:01:28+02:00
MisetaZs
Azon tűnődtem, hogy soroljam be a kérdésem...

Szóval egy fotós oldalra szeretnék csillagos pontozásos lehetőséget betenni.

Némi keresgélés után az alábbi weboldalra bukkantam
http://www.myjqueryplugins.com/jRating

Alapvetően nagyon jónak tűnt.
Csakhogy nem akar működni.
Konkrétan:

A php fájl fejlécében meghívom a jquery-t.

<script type="text/javascript" src="../js/jquery.js"></script> <link rel="stylesheet" type="text/css" href="../jRating/jRating.jquery.css" media="screen" /> <script type="text/javascript" src="../jRating/jRating.jquery.js"></script>

Aztán oda ahova szeretném a csillagokat beszúrom ezt a sort:

<div class="exemple"> <div class="jRating" data="<?php echo $avg.'_'.$pic['ID']; ?>"></div> </div>

Ahol a $avg az eddigi átlagpont a $pic['ID'] a pontozandó kép azonosítója.

A php további részébe beteszem a js-t ami meghívja a plugint:

<script type="text/javascript"> $(document).ready(function(){ $('.jRating').jRating({ step:true, // no half-star when mousemove bigStarsPath: '../star/icons/stars.png', smallStarsPath: '../star/icons/small.png', phpPath: '../star/jRating.php', length : 5, // nb of stars rateMax: 5, decimalLength: 0 // number of decimal in the rate }); }); </script>

Az egyszerűség végett a gyökér könyvtárba tettem a star alkönyvtárba mindent ami a jRatinghoz kell.

A csillagok megjelennek a lapon. Ha egérrel fölé megyek látszólag működnek (átszíneződnek). Ha megnyomom látszólag működik (az átszíneződés úgy marad), de a jRating.php nem fut le és így nem jegyzi be a pontokat az adatbázisba.
Elvileg a jRating a klikkelésre kellene, hogy menjen a háttérben.

A jRating teljes forrást beillesztem bár elérhető a linkelt honlapon is, de hátha ez egyszerűbb:

<?php $aResponse['error'] = false; $aResponse['message'] = ''; if(isset($_POST['action'])) { if(htmlentities($_POST['action'], ENT_QUOTES, 'UTF-8') == 'rating') { /* * vars */ $id = intval($_POST['idBox']); $rate = floatval($_POST['rate']); // YOUR MYSQL REQUEST HERE or other thing :) /* * Ide teszem a mysql lekérdezést */ // if request successful $success = true; // else $success = false; // json datas send to the js file if($success) { $aResponse['message'] = 'Your rate has been successfuly recorded. Thanks for your rate :)'; echo json_encode($aResponse); } else { $aResponse['error'] = true; $aResponse['message'] = 'An error occured during the request. Please retry'; echo json_encode($aResponse); } } else { $aResponse['error'] = true; $aResponse['message'] = '"action" post data not equal to 'rating''; echo json_encode($aResponse); } } else { $aResponse['error'] = true; $aResponse['message'] = '$_POST['action'] not found'; echo json_encode($aResponse); }
Mutasd a teljes hozzászólást!
Sziasztok.

Megvan a megoldás.
Valamiért egyszerűen a jRating.php relatív útvonal megadása nem volt jó.
Hiába adtam meg a jó relatív útvonalat, nem volt jó.
Talán a RewriteEngine On szerverbeállítás tett be neki.
Ha a gyökérbe kerül akkor jó.
Sziasztok.
Mutasd a teljes hozzászólást!

  • Én ezt nem értem, hogy a $_POST honnan kapja az adatokat?
    Mutasd a teljes hozzászólást!
  • Igen. Valami ilyen az én kérdésem is.
    Elvileg a háttérben a jRating.jquery.js intézi ezt, ami a jRating csomagban van.
    jRating.jquery.js

    A csomag itt megnézhető:
    jRating csomag

    Azongondolkodom, hogy a példa php-t hogy tudnám belinkelni, de kicsit kiszedem belőle az ismétlődéseket és a rövidített forrást teszem be (az öt példából kiveszek négyet):

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Pluggin jRating : Ajax rating system with jQuery</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <link rel="stylesheet" href="jquery/jRating.jquery.css" type="text/css" /> <style type="text/css"> body {margin:15px;font-family:Arial;font-size:13px} a img{border:0} .datasSent, .serverResponse{margin-top:20px;width:470px;height:73px;border:1px solid #F0F0F0;background-color:#F8F8F8;padding:10px;float:left;margin-right:10px} .datasSent{width:200px;position:fixed;left:680px;top:0} .serverResponse{position:fixed;left:680px;top:100px} .datasSent p, .serverResponse p {font-style:italic;font-size:12px} .exemple{margin-top:15px;} .clr{clear:both} pre {margin:0;padding:0} .notice {background-color:#F4F4F4;color:#666;border:1px solid #CECECE;padding:10px;font-weight:bold;width:600px;font-size:12px;margin-top:10px} </style> </head> <body> <p><a href="#">Back to MyjQueryPlugins</a></p> <!-- EXEMPLE 3 --> <div class="exemple"> <em>Exemple 3 (step : <strong>true</strong> - average <strong>18</strong> - id <strong>3</strong> - <strong>15</strong> stars) :</em> <div class="exemple3" data="18_3"></div> </div> <div class="notice"> <pre> <?php echo htmlentities('<!-- JS to add --> <script type="text/javascript"> $(document).ready(function(){ $(".exemple3").jRating({ step:true, // no half-star when mousemove length : 20, // nb of stars decimalLength:0 // number of decimal in the rate }); }); </script> '); ?> </pre> </div> <div class="datasSent"> Datas sent to the server : <p></p> </div> <div class="serverResponse"> Server response : <p></p> </div> More script and css style : <a href="http://www.htmldrive.net/" title="HTML DRIVE - Free DHMTL Scripts,Jquery plugins,Javascript,CSS,CSS3,Html5 Library">www.htmldrive.net </a> <script type="text/javascript" src="jquery/jquery.js"></script> <script type="text/javascript" src="jquery/jRating.jquery.js"></script> <script type="text/javascript"> $(document).ready(function(){ $('.exemple3').jRating({ step:true, length : 20 }); }); </script> </body> </html>
    Mutasd a teljes hozzászólást!
  • Elvileg a példában van egy ilyen kód is:

    <div class="notice"> <pre> <?php echo htmlentities('<!-- JS to add --> <script type="text/javascript"> $(document).ready(function(){ $(".exemple3").jRating({ step:true, // no half-star when mousemove length : 20, // nb of stars decimalLength:0 // number of decimal in the rate }); }); </script> '); ?> </pre> </div>

    De ez az echo htmlentities(... részlet csak azét van, hogy a szükséges forrsákód megjelenjen amit be kell illeszteni a saját kódba. Legalábbis azt hiszem, de már semmiben sem vagyok biztos.
    Mutasd a teljes hozzászólást!
  • Sziasztok.

    Megvan a megoldás.
    Valamiért egyszerűen a jRating.php relatív útvonal megadása nem volt jó.
    Hiába adtam meg a jó relatív útvonalat, nem volt jó.
    Talán a RewriteEngine On szerverbeállítás tett be neki.
    Ha a gyökérbe kerül akkor jó.
    Sziasztok.
    Mutasd a teljes hozzászólást!
abcd