Percentage als getallen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Rutje1

rutje1

29/01/2008 21:54:00
Quote Anchor link
Hii,

Ik wil afbeeldingen weergeven op een soort van 'random' manier maar niet helemaal random. Ik zou namelijk graag willen dat de veel bezochte afbeeldingen vaker worden weergegeven dan de niet bezochte afbeeldingen.

Daarom wil ik gebruik maken van percentages. Dit is automatisch te berekenen. Zo krijg ik bijv. automatisch de gegevens:
Afbeelding 1 = 10%
Afbeelding 2 = 30%
Afbeelding 3 = 40%
Afbeelding 4 = 20%

Nu wil ik dus die percentages gebruiken bij het random weergeven.

Dat kan ik dus doen door rand(1,100);
Dan pak ik dus afbeeldingen uit de DB met een bepaald getal.

Maar hoe kan ik ervoor zorgen dat ik krijg:

Afbeelding 1 = 1 - 10
Afbeelding 2 = 11 - 40
Afbeelding 3 = 41 - 80
Afbeelding 4 = 81 - 100

Het veranderd om de week dus ik zoek een manier zodat ik automatisch een script de percentages kan laten omzetten naar die getallen.
Stel random nummer is 32 dan pakt hij dus afbeelding 2. Dat is de bedoeling.

Ik heb nagedacht hoe ik automatisch kan uitvoerne maar heb geen flauw idee. Het aantal afbeeldingen kan namelijk ook per keer verschillen.

Het staat wel vast dat ik ALTIJD de percentages weet. Maar hoe zet ik dit om naar het laagste getal (zoals bij afbeelding 3 [41]) en het hoogste getal (zoals bij afbeelding 3 [80]) ??

Ik hoop dat duidelijk is wat de bedoeling is.
Graag alle tips/hulp, ik kan het wel gebruiken ;)

Mvg Rutje1

(p.s. ik weet dus hoe ik het uit DB kan halen, alleen NIET hoe ik de getallen omzet, ffe voor de duidelijkheid :P )
Gewijzigd op 01/01/1970 01:00:00 door Rutje1
 
PHP hulp

PHP hulp

21/11/2024 19:22:16
 
Frank -

Frank -

29/01/2008 22:00:00
Quote Anchor link
Quote:
Ik hoop dat duidelijk is wat de bedoeling is.
Nee, ik kan er geen touw aan vast knopen.
 
Jan Koehoorn

Jan Koehoorn

29/01/2008 22:50:00
Quote Anchor link
Je zou het probleem andersom kunnen benaderen;

1) maak een array aan
2) zet elke afbeelding er net zo vaak in als zijn percentage. Een afbeelding met 10% komt er dus 10 keer in
3) gebruik shuffle om je array een random volgorde te geven
4) pak nu $array[0] als afbeelding

Omdat afbeeldingen met een hoger percentage vaker in de array zitten wordt de kans groter dat ze gekozen worden.
 
Storeman storeman

storeman storeman

30/01/2008 08:01:00
Quote Anchor link
Je kunt het volgende doen, je zet het maximale percentage in je database.

dus:

afb1: 10
afb2: 20
afb3: 50
afb4: 90
afb5: 100

De volgende query zou het moeten doen:

$sql = "SELECT * FROM afbeeldingen WHERE rate >= ".rand(0,100)." ORDER BY rate ASC LIMIT 1";
 
Rutje1

rutje1

30/01/2008 16:41:00
Quote Anchor link
storeman > Dat is idd de bedoeling. Maar ik heb geen idee hoe ik het maximale percentage in de DB kan zetten.

Jan Koehoorn > De manier van arrays lijkt me erg uitgebreid, ik verwacht namelijk een heel groot aantal afbeeldingen. Dan zou de array dus nog langer dan honderd worden.

pgFrank > ik weet niet echt hoe ik het beter uit kan leggen eigenlijk :(
Gewijzigd op 01/01/1970 01:00:00 door rutje1
 
Storeman storeman

storeman storeman

30/01/2008 18:41:00
Quote Anchor link
Wat is het probleem van het uitrekenen van het percentage? In je openingspost zeg je dat je die gegevens voorhanden hebt.

Je kunt ook een extra veld toevoegen aan je tabel, genaamd views, bij elke opening laat je de counter +1 doen. Dan kun je het percentage uitrekenen. Dit moet je niet bij elk request doen, dat is te intensief, maar 1x per uur of per dag moet te doen zijn.

$sqlTotalViews = "SELECT SUM(views) AS totalviews FROM table GROUP BY id>0";

Je percentage is nu niet meer dan imageview/totalview*100
 
Rutje1

rutje1

31/01/2008 15:10:00
Quote Anchor link
Ok, nog ffe een keer ;)

Het percentage is bekend! Maar het lukt me niet om daaruit getallen te halen zoals je dat in je 1e reactie zet.

Ik weet dit:
Afbeelding 1 = 10%
Afbeelding 2 = 30%
Afbeelding 3 = 40%
Afbeelding 4 = 20%

De bedoeling is dat het automatisch gebeurd. Dus op een bepaald moment ziet het script de percentages. Hieruit moet hij dus getallen maken... Maar hoe doe je dat??

Dat is dus het probleem om die getallen eruit te krijgen, en ik heb geen idee hoe ik dat maak
 
Will

Will

31/01/2008 15:55:00
Quote Anchor link
Zeer inefficïente manier, maar kan mij geen beter bedenken op dit moment:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$Afbeelding
= "10%";
$ex = explode("%",$Afbeelding);
$Afbeelding = $ex[0];
echo $Afbeelding;
?>
 
Rutje1

rutje1

31/01/2008 16:13:00
Quote Anchor link
De manier zoals storeman ook bedoelde leek mij idd erg goed, maar ik zie daar neit bij hoe ik het moet doen. Anders krijg ik erg veel arrays.
 
Rutje1

rutje1

01/02/2008 16:13:00
Quote Anchor link
Bump ^
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.