Beter rate systeem class
Het systeem is vrij groot, door de extra functies hij heeft. Tevens is dit ook een zeer complete rate systeem. Ik noem de mogelijke functies op: 1. Je kan kiezen tussen percentages, of cijfers. => 1. percentage, als je deze optie kiest kan iedereen stemen tussen de 1 en 100 %. => 2. cijfers, als je deze optie kiest kan iederen een cijfer tussen de 1 en 10 geven. 2. Kiezen of je wel plaatjes wilt of niet. 3. Wil je enkel een formulier laten zien, of wil je enkel hoeveel stemmen het heeft kiezen. Ook kan je voor alle bij kiezen. Extra uitleg: De instellingen: Hier mee stel je de gewenste installingen, wil plaatjes, zet $image_set op true, anders op false. Als $image_set op true staat, graag de andere $image_{optie} instellen. Wil je procenten, zet $percentage op true, en $numbers op false. En geef de naam van de $image_pro_name, dwz de naam van je procenten plaatje. Wil je cijfers, zet dan $numbers op true en $percentage op false. Dat zij de instellingen. :O heb ik het nog gehad over de get, rate of all functie (jap, optie 3 van het bovenstaande) Dat doe je tijdens het installeren: Het cijfer 1 die je ziet is een id, deze staat in de rate database de tabel genaamd id. Deze moet je hand matig instellen, ik heb deze functie nog niet geinstalleerd om dat automatisch te doen, deze is wel aan de fuetere list toegevoegd. Je kan het id, zo instellen dat het de zelfde id is waarvoor je wilt stemmen bijv. een script in de script lib. Nu de sql tabel installeren: Nu kan je verder gaan met de class. ;) Link dood, dus weg gehaald aangezien er mensen zijn die er op klikken ;)
rate.php:
[code]
<?php
/*
Rating script, zo simpel als de ****
Gemaakt door Alexander de Jong.
www.alexanderdejong.eu (in opbouw)
www.dexora.nl (in opbouw)
_-----------sql
*/
// !file_exists betekend, als de file/bestand niet niet bestaat doe dan het volgende
// In dit geval heb ik config.php als het bestand niet bestaat gaat hij de gegevens gebruiken
// Die ik gegeven heb, dus een database verbinding. Zo hoef ik ook geen speciale config bestand
// Aan te maken, dat doet hij dus hier onder.
if(!file_exists('config.php'))
{
$sql_data = array(
'USER' => '***',
'PASS' => '***',
'HOST' => 'localhost',
'DB' => '***',
);
$conection = mysql_connect($sql_data['HOST'], $sql_data['USER'], $sql_data['PASS']);
mysql_select_db($sql_data['DB'], $conection) or die('Ik kon geen database selecteren '.mysql_error());
unset($sql_data);
}
else
{
//Als hij toch bestaat, dan gaan we hem includen.
include('config.php');
}
// hier onder setup gegevens. Doe dit goed.
$image_set = false; // false om uit te zetten.
$image_path = ''; // Alleen als $image_set op true staat.
$image_ext = ''; // Hier mee zet je de image extensie.
// Hier onder de naam van het plaatje voor procenten, de rest is 1 t/m 10.
$image_pro_name = ''; // ZONDER EXTENSIE, DIE HEB JE BOVEN AL GEPLAATST...
// Dit kan je dus zelf doen, wil je procenten, dan zet je $percentage op true en $numbers op false, en anders om.
$percentage = false; // true om aan te zetten.
$numbers = true; // false om uit te zetten, maar dan met $percentage op true staan.
// Graag niet allebij gaan doen, dan word het een troep.
// Hier onder ga ik de installingen defineren, zo dat alles goed komt. En ik kan tevens elke definietie 100 keer gebruiken.
// En van af hier onder hoeft ook niks meer te doen. Alles wat u hoeft te doen is de instellingen boven aan goed zetten.
if($image_set == true)
{
define('IMAGE', $image_path);
define('IMAGE_EXT', $image_ext);
define('IMAGE_PRO', $image_pro_name);
}
else
{
define('IMAGE', false);
}
if($percentage == true)
{
define('RATING', 'percentage');
}
if($numbers == true)
{
define('RATING', 'numbers');
}
// checken of de persoon al gestemd heeft.
if($_SERVER['REMOTE_ADDR'] == $_COOKIE['user_ip'])
{
define('VOTED', true);
}
else
{
define('VOTED', false);
}
class rating
{
// Hier onder heb ik een functie die kan bepalen of je de get wilt (dus gegevens laten zien) of stemmen. Nu is echter het geval dat de case get allebij doet, en dus rate over bodig LIJKT maar daar komt verandering in, deze zijn gepland voor versie 2.0
// De case rate, nog niet gebruiken dus.
function get_post_rate($id, $func)
{
switch($func)
{
case 'get':
$sql = '
SELECT *
FROM rating
WHERE id = '.$id;
$query = mysql_query($sql);
$row = mysql_fetch_array($query);
$get_rate = $row[RATING];
$ip = $_SERVER['REMOTE_ADDR'];
$totaal = $row['totaal'];
//$ip, $id, $rate, $totaal
return $this->get($ip, $id, $get_rate, $totaal);
break;
case 'rate':
$ip = $_SERVER['REMOTE_ADDR'];
if(RATING == 'numbers')
{
$rating = $_POST['numbers'];
}
else
{
$rating = $_POST['percentage'];
}
$query = mysql_query("SELECT totaal FROM rating WHERE id = $id");
$fetch = mysql_fetch_array($query);
$tot = $fetch['totaal'];
$totaal = $tot++;
return $this->rate($ip, $id, $rating);
break;
case 'all':
$ip = $_SERVER['REMOTE_ADDR'];
if(RATING == 'numbers')
{
$rating = $_POST['numbers'];
}
else
{
$rating = $_POST['percentage'];
}
$query = mysql_query("SELECT totaal FROM rating WHERE id = $id");
$fetch = mysql_fetch_array($query);
$tot = $fetch['totaal'];
$totaal = $tot++;
return $this->all($ip, $id, $rating);
break;
}
if(empty($func) || empty($id))
{
trigger_error('De webmaster van deze site heeft het rating systeem niet goed ge installeerd.', E_USER_WARNING);
}
}
function rate($ip, $id, $rating)
{
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
//$ab_tot = number_format($totaal) + number_format($rating);
$sql = "
UPDATE rating
SET totaal=(totaal + 1), ".RATING."=".RATING." + '".$rating."'
WHERE id = $id
";
setcookie('user_ip', $_SERVER['REMOTE_ADDR'], time()+3600*24*365*30);
if(mysql_query($sql))
{
if(mysql_affected_rows () > 0)
{
return 'U stem is goed toegevoegd aan het item.';
}
else
{
return 'Er is iets verkeerd gegaan, stem niet toegevoegd, excuus.';
}
}
}
if(RATING == 'percentage')
{
if(VOTED == true)
{
$form = 'Je hebt al gestemd.';
}
else
{
$form = $this->formProcent();
}
}
else
{
if(VOTED == true)
{
$form = 'Je hebt al gestemd.';
}
else
{
$form = $this->formNumber();
}
}
$showRate = '<div style="background: #CC9933; border: 1px #CCCC99 solid;">
'.$form.'</div>';
return $showRate;
}
function get($ip, $id, $rate, $totaal)
{
// Hier gaan we de uitslagen berekenen.
if(RATING == 'percentage')
{
$counter = $this->countProcent($totaal, $rate);
if(IMAGE == false)
{
$image = '';
}
else
{
$image = $this->imageProcent($counter);
}
}
else
{
$counter = $this->countNumber($totaal, $rate);
if(IMAGE == false)
{
$image = '';
}
else
{
$image = $this->imageNumber($counter);
}
}
// Hier onder gaan we de formulier + het aantal stemmen weer geven.
$show =
'<div style="background: #CCCC99; border: 1px #CC9933 solid;">
'.$counter.'<br />'.$image.'
</div>';
return $show;
// Hier onder komt de actie als er gestemd word.
}
function all($ip, $id, $rate)
{
$all_r = $this->rate($ip, $id, $rate);
//$this->get($ip, $id, $rate, $totaal);
$sql = '
SELECT *
FROM rating
WHERE id = '.$id;
$query = mysql_query($sql);
$row = mysql_fetch_array($query);
$get_rate = $row[RATING];
$ip = $_SERVER['REMOTE_ADDR'];
$totaal = $row['totaal'];
//$ip, $id, $rate, $totaal
$all_r .= $this->get($ip, $id, $get_rate, $totaal);
return $all_r;
}
// het tellen van de percentages, $percentages moet op true staan.
function countProcent($totaal, $rate)
{
if($totaal != 0 && $rate != 0)
{
$delen = $rate / $totaal;
}
else
{
$delen = 0;
}
if($delen != 0)
{
$score = round($delen);
$score = strlen($score) < 2 ? $score .= '.0' : $score;
$score = explode('.', $score);
$score = $score['0'];
}
else
{
$score = 0;
}
return $score . ' %';
}
// Om de stemmen te tellen, $numbers moet op true staan.
function countNumber($totaal, $rate)
{
if($totaal != 0 && $rate != 0)
{
$delen = $rate / $totaal;
}
else
{
$delen = 0;
}
if($delen != 0)
{
$score = round($delen);
$score = strlen($score) < 2 ? $score .= '.0' : $score;
$score = explode('.', $score);
$score = $score['0'];
}
else
{
$score = 0;
}
return $score;
}
// Formulier voor de nummers 1 t/m 10. $numbers moet op true staan.
function formNumber()
{
$form = '<form method="post">';
for($i = 0; $i <= 10; $i++)
{
$form .= $i.
'
<input type="radio" name="rated" value="'.$i.'"
onclick="submit();"
onmouseover="this.checked=true;"
onmouseout="this.checked=false;"
style="cursor:pointer;" /> ';
}
$form .= "</form>\n";
return $form;
}
function formProcent()
{
$form = '<form method="post">
<select name="rated" id="rated">';
for($i = 0; $i <= 100; $i++)
{
$form .= '
<option value="'.$i.'" onchange="submit();">'.$i.' %</option>';
}
$form .= '</select><input type="submit" value="Vote it" name="rate" /></form>';
return $form;
}
function imageNumber($score)
{
$image = $score . IMAGE_EXT;
$image_html = '<img src='.IMAGE . $image.' alt=$score />';
return $image_html;
}
function imageProcent($score)
{
for($i = 0;$i <= $score; $i++)
{
$results .= '<img src="'.IMAGE . IMAGE_PRO . IMAGE_EXT.'" width="' .$score[$i] . '" height="15" />';
}
return $results;
}
}
?>
[/code]
Reacties
0