Score bij filmpje maken met php & mysql

Status
Niet open voor verdere reacties.

Nawien

Gebruiker
Lid geworden
25 jun 2009
Berichten
6
Hallo,
Ik ben bezig met een website maken waar je filmpjes kunt bekijken en spelletjes kunt spelen.
maar nu wil ik dat als je bent ingelogd dat je een score kan geven bij het spelletje of filmpje en dat de score onthouden word zodat hij het gemiddelde kan laten zien.
Ik hoop dat iemand me een beetje opweg kan helpen
alvast bedankt
 
Klein formpje maken met ratings erop, een hidden field om aan te geven voor welk element het is, en dan een database of andere storage engine erachter hangen die het hidden veld uitleest, en het gemiddelde update.

Wiskunde tip: om het gemiddelde te bereken hoef je maar 2 dingen bij te houden; het huidige gemiddelde en het aantal mensen dat gestemd heeft.
Als het gemiddelde en aantal stemmen is dat je wil weten, kun je deze formule gebruiken:

nieuwe score + ( gemiddelde x oude aantal stemmers ) / ( oude aantal stemmers + 1 )


Heb je zelf al iets geprobeerd?
 
Nee ik heb echt geen idee hoe je het maakt



Klein formpje maken met ratings erop, een hidden field om aan te geven voor welk element het is, en dan een database of andere storage engine erachter hangen die het hidden veld uitleest, en het gemiddelde update.

Wiskunde tip: om het gemiddelde te bereken hoef je maar 2 dingen bij te houden; het huidige gemiddelde en het aantal mensen dat gestemd heeft.
Als het gemiddelde en aantal stemmen is dat je wil weten, kun je deze formule gebruiken:

nieuwe score + ( gemiddelde x oude aantal stemmers ) / ( oude aantal stemmers + 1 )


Heb je zelf al iets geprobeerd?
 
Klein formpje maken met ratings erop, een hidden field om aan te geven voor welk element het is, en dan een database of andere storage engine erachter hangen die het hidden veld uitleest, en het gemiddelde update.

Wiskunde tip: om het gemiddelde te bereken hoef je maar 2 dingen bij te houden; het huidige gemiddelde en het aantal mensen dat gestemd heeft.
Als het gemiddelde en aantal stemmen is dat je wil weten, kun je deze formule gebruiken:

nieuwe score + ( gemiddelde x oude aantal stemmers ) / ( oude aantal stemmers + 1 )


Heb je zelf al iets geprobeerd?

waarom zo moeilijk.
ik zou het anders oplossing door middel van:
totaal aantal punten / aantal stemmers

het voordeel van frats is dat de server in principe alleen maar 1 keer een berekening hoeft te doen bij aanpassing de formule die ik hanteer word elke keer opnieuw uitgevoerd. Mijn voordeel is dat ik alleen maar raw data gebruikt

wanneer iemand stemt wordt het aantal punten verhoogd met het getal wat ze aan geven aantal stemmer = aantal stemmers + 1

waar wil je dit oplossen is de vraag. Op database nivueau of op sql niveau
 
Laatst bewerkt:
Werkt ook inderdaad. Het enige verschil is dat je het dan iedere keer opnieuw moet berekenen; wat opzich voor een machine geen enkel probleem is.

@Nawien, ik zou gewoon beginnen en proberen, en terugkomen als je vastloopt. Programmeren is lastig, maar je leert het meeste door het gewoon te doen.
 
op het gebied van sql

ik geef je een klein opsetje

tabel scores
create tabel scores
(
id not null auto_increment,
scores double not null,
primary key(id)
)

aantal_stemmer = select count(*) from scores
aantal_punten = select sum(scores) from scores

gemiddeld = aantal punten /aantal_stemmer

value = $_POST["score"] hier bij ga ik er van uit invoerveld score heet.

wanneer iemand stemt
insert into [tabel_naam] values (''', value).

het koppelen van gegevens in php kan met een zogeheten msql_fecth
 
Laatst bewerkt:
@frats mijn excuse voor het aanbieden van de gehele oplossing.
@ nawien ik hoop dat ik de juiste kant hebt op geschoten. Binnen mysql heb je heel functies
 
een vriend van mij heeft me een beetje geholpen maar het volgende probleem is dat er maar 1 ster word getoond en die zie je maar voor een kwart en de andere 4 sterren zijn door zichtig
dit is me script
PHP:
<HTML>
<HEAD>
<style>
    /* Dit zijn de styles die gebruikt worden door het systeem */
    .sterren{
        width:80px;
        height:16px;
        margin:0 0 20px 0;
        padding:0;
        list-style:none;
        clear:both;
        position:relative;
        background:url(stars/star_g.png) no-repeat 0 0;
    }
    .s0star {background-position:0 0}
    .s1star {background-position:0 -16px}
    .s2star {background-position:0 -32px}
    .s3star {background-position:0 -48px}
    .s4star {background-position:0 -64px}
    .s5star {background-position:0 -80px}
    ul.sterren li {cursor:pointer;float:left;text-indent:-999em;}
    ul.sterren li a {
        position:absolute;
        left:0;
        top:0;
        width:16px;
        height:16px;
        text-decoration:none;
        z-index:200;
    }
    ul.sterren li.s1 a {left:0}
    ul.sterren li.s2 a {left:16px;}
    ul.sterren li.s3 a {left:32px;}
    ul.sterren li.s4 a {left:48px;}
    ul.sterren li.s5 a {left:64px;}
    ul.sterren li a:hover {
        z-index:2;
        width:80px;
        height:16px;
        overflow:hidden;
        left:0;
        background:url(stars/star_g.png) no-repeat 0 0;
    }
    ul.sterren li.s1 a:hover {background-position:0 -96px;}
    ul.sterren li.s2 a:hover {background-position:0 -112px;}
    ul.sterren li.s3 a:hover {background-position:0 -128px}
    ul.sterren li.s4 a:hover {background-position:0 -144px}
    ul.sterren li.s5 a:hover {background-position:0 -160px}
    h3{margin:0 0 2px 0;font-size:110%}
</style>
<TITLE>Sterren</TITLE>
</HEAD>
<BODY>
<?php
// Verbinding maken met MySQL.
include("connection.php");

// Stem uitbrengen. (Controle of de stem wel tussen de 1 en de 5 zit)
if(isset($_GET["vote"]) && $_GET["vote"] > 0 && $_GET["vote"] <= 5){
    // Oude data ophalen...
    $query = "SELECT score,votes FROM starvote";
    $result = mysql_query($query)or die(mysql_error()."<br>".$query);
    $VotesSQL = mysql_fetch_assoc($result);
    // ...nieuwe data opslaan...
    $new_votes = ($VotesSQL['votes'] + 1);
    $new_score = ($VotesSQL['score'] + $_GET["vote"]);
    // ...en toevoegen aan de database!
    $query = "UPDATE starvote SET score = '".$new_score."', votes = '".$new_votes."'";
    mysql_query($query)or die(mysql_error()."<br>".$query);    
}

// Votes ophalen en in een string zetten.
$query = "SELECT score,votes FROM starvote";
$result = mysql_query($query)or die(mysql_error()."<br>".$query);
$VotesSQL = mysql_fetch_assoc($result);
$votes = $VotesSQL['votes'];
$score = $VotesSQL['score'];

// Gemiddelde berekenen en er netjes 1 waarde van maken; het aantal sterren.
$score != 0 ? $stars = round(($score / $votes)) : $stars = 0;
$stars > 5 ? $stars2 = 5 : $stars2 = $stars;
//$starsTxt = array('s0','s1','s2','s3','four','five');

// Door midden van de aantal sterren, de CSS class definieren in een string.
$StarClass = 'sterren s'.$stars2.'star';
echo $stars.' sterren door '.$votes.' stemmen.';

//Sterren CSS class dynamisch toevoegen, en de sterren weergeven. ?>
<ul class="<?php echo $StarClass; ?>">
<li class="s1"><a href="news.php?newsid=<?php echo $_GET['newsid'] ?>&vote=1" title="1 Star" onFocus="this.blur()">1</a></li>
<li class="s2"><a href="index.php?newsid=<?php echo $_GET['newsid'] ?>&vote=2" title="2 Stars" onFocus="this.blur()">2</a></li>
<li class="s3"><a href="index.php?newsid=<?php echo $_GET['newsid'] ?>&vote=3" title="3 Stars" onFocus="this.blur()">3</a></li>
<li class="s4"><a href="index.php?newsid=<?php echo $_GET['newsid'] ?>&vote=4" title="4 Stars" onFocus="this.blur()">4</a></li>
<li class="s5"><a href="index.php?newsid=<?php echo $_GET['newsid'] ?>&vote=5" title="5 Stars" onFocus="this.blur()">5</a></li> 
</ul>
</BODY>
</HTML>
Database code
[sql]
CREATE TABLE `starvote` (
`id` int(1) NOT NULL auto_increment,
`score` int(5) NOT NULL,
`votes` int(5) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;

INSERT INTO `starvote` (`id`, `score`, `votes`) VALUES
(1, 0, 0);
[/sql]
 
Laatst bewerkt door een moderator:
Wat krijg je je voor getal krijg je terug uit de database
Zo te zien aan je script is het nul.

Vergeet je geen insert query
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan