[PHP] Rating script tips? *

Pagina: 1
Acties:

Onderwerpen


Verwijderd

Topicstarter
Goeden morgen allereerst wil ik even duidelijk stellen dat ik dit NIET maar dan ook NIET als scriptreqeust bedoel mocht dat eventueel in 1 van de moderators hun ogen zo overkomen.

Mijn verhaal: Ik ben met een artikelscript bezig ik wil graag een rating script (beoordeel script) ervoor maken zodat mensen kunnen beoordelen wat ze ervan vinden hij moet daar dan het gemiddelde van pakken en dat in procenten laten zien dit alles moet in PHP gebeuren.

Mijn vraag:

Hoe pak je dat het beste aan? ik bedoel welke berekeningen moet ik daarvoor maken en wat moet het precies doen kijk ik dacht meer aan zoiets:

• Gebruiker klikt op een radio button met het desbetreffende cijfer ernaast
• Gebruiker klikt op 'stem!'
• Script berekend het het cijfer voordat hij werd gerated (dus haalt hij uit de db) met bijv: $list->cijfer hier de berekening.
• Script zet nieuw cijfer na berekening in DB
• Bezoeker bezoekt pagina en ziet aan de hand van het script uitgerekend hoeveel punten dat artikel heeft en hoeveel mensen op dat script hebben gestemd.

Eigelijke vraag:
• Welke berekeningen moet ik uitvoeren
• Is mijn aanpak alles in een row schrijven en dat steeds laten veranderen goed?
• Zou ik het ook op een andere manier kunnen doen zonder dat de db overbelast wordt (snel) bijv door het in meerdere rows te zetten en dan de hele row section afgezocht wordt naar de records die met het artikel te maken hebben.
• Tips hoe zou ik het, het beste kunnen doen?


bedankt voor het helpen en advies

Verwijderd

hmmz vroeger op school heb ik altijd geleerd dat je gemiddeldes uit rekend door alle getallen op te tellen en dan te delen door het aantal getallen wat je had , mgoed dat was ook 2e klas basis school kan zijn dat ze 't de afgelopen jaren veranderd hebben....

Verwijderd

Er zijn een aantal mogelijke oplossingen inderdaad, en ik moet erbij zeggen dat een scriptje zoals dit vrij snel in elkaar gezet kan worden.
Voor het meest simpele ratingscriptje kun je gewoon een tabel met twee kolommen maken, namelijk kolom 1: artikel_id waarop gereageerd wordt en kolom 2: de score.
Ik zou er zelf echter meer voor voelen (maar misschien is het in jouw geval overkill) om een tabel aan te maken met 3 kolommen, namelijk artikel_id, score en IP_address. Als je wilt kun je op dat moment heel gemakkelijk een restrictie op basis van IP's maken :)

De enige berekening die je dan uit hoeft te voeren is, wanneer je een SELECT score FROM score_table WHERE artikel_id = 5 hebt gedaan, een array_count_values over je result array heen te gooien en dat te delen door count($array) :)

Het voordeel is nu dat je ook meteen kunt laten zien hoe vaak een bepaalde stem is uitgebracht :)

en ja, volgens mij valt dit wel onder de noemer script request ;)

  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 22-07-2024
ik zou even opletten dat je niet een kolom 'score' kan hebben
dit is namelijk de som van iedere 'stemming'

dus als je zeg maar van 1 tot 5 kan raten en je wil het gemiddelde laten zien heb je behalve de som ook nog het totaal aantal ratings nodig.

over dat ip adres. om zoiets in de database te zetten is leuk. Zo kan je achteraf bijvoorbeeld de gemiddelde score voor nederlanders bekijken. of de gemiddelde score voor niet amerikanen

voor het uitsluiten van ip adressen van de rating moet je een apparte tabel maken met daarin ip adressen, en dus niet zoals hierboven gezegt in dezelfde tabel.
het in dezelfde tabel houden van ip adressen (logging dus) is leuk voor de stats achteraf.

wanneer je meerdere 'producten' heb kan je dus al deze gegevens (2 kolommen) direct in de tabel doen waar ook de info in staat over het product/artikel.

zo hoef je niet een aparte tabel te maken voor de rating.

echter, wanneer je logging wil (zie eerder in me post) dan heb je wel een apparte tabel nodig met daarin dus het ip adres, en een parent_id die verwijst naar het product id (uit een andere tabel)

This message was sent on 100% recyclable electrons.


Verwijderd

Ik zou je absoluut NIET druk maken om de 'overbelasting' van je server. IK neem aan dat het hier niet om een database gaat met 1000 gebruikers op het zelfde tijdstip.

de berekening is nog makkelijker als je
SQL:
1
2
3
4
SELECT AVG(score) as eindgetal 
FROM score_table 
WHERE artikel_id = 5 
GROUP BY artikel_id

gebruikt.


offtopic:
Lol @ Yarvieh

Verwijderd

BasieP schreef op 19 December 2002 @ 08:30:
ik zou even opletten dat je niet een kolom 'score' kan hebben
dit is namelijk de som van iedere 'stemming'
[...]
woops, you're right here, het is nog vroeg ;)
voor het uitsluiten van ip adressen van de rating moet je een apparte tabel maken met daarin ip adressen, en dus niet zoals hierboven gezegt in dezelfde tabel.
het in dezelfde tabel houden van ip adressen (logging dus) is leuk voor de stats achteraf.
het woord restricties is misschien wat ongelukkig gekozen. Ik bedoelde dat je ermee kunt bekijken of vanaf een bepaald IP al is gestemd op het artikel :)

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Godzilla:
Goeden morgen allereerst wil ik even duidelijk stellen dat ik dit NIET maar dan ook NIET als scriptreqeust bedoel mocht dat eventueel in 1 van de moderators hun ogen zo overkomen.
offtopic:
Dit soort verhalen zijn nutteloos en kosten alleen maar hardeschijfruimte en dataverkeer ;) Als uit jouw post gewoon blijkt dat jij niet om een script vraagt maar om hoe je het moet maken, is het gewoon legitiem wat betreft de scriprequest-kwestie. Laat dat dus voortaan achterwege, ook in je topictitel, die ik dus maar even heb aangepast. 't Nadeel is namelijk dat hoe harder je schreeuwt dat 't geen scriptrequest is, hoe harder ik denk dat je iets te verbergen hebt.... </offtopic>

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • Genoil
  • Registratie: Maart 2000
  • Laatst online: 12-11-2023
ik heb zoiets veel compacter gemaakt, geen aparte tabel voor de ratings, gewoon twee extra kolommetjes in de artikel tabel, 1voor het aantal ratings en 1 voor het gemiddelde. nadeel is dan idd wel dat je geen IP logging kan doen. maarja als mensen de boel willen flessen mogen ze lekker steeds hun sessie killen en opnieuw beginnen om dubbelratings mogelijk te maken:

PHP:
1
2
3
4
5
..
$rating = $_POST['rating'];
// select query (gemiddelde, aantal)
$gemiddelde  = ($gemiddelde*$aantal+$rating)/++$aantal;
// update query (gemiddelde, aantal)

[ Voor 11% gewijzigd door Genoil op 19-12-2002 11:33 ]

Pagina: 1