Ik ben al tijden flink aan het bouwen aan mijn eigen prijsvergelijker script op een van mijn hobby websites. De website laadt een aantal shopfeeds in, schoont deze op, doet wat calculaties en plempt ze in een mysql database. Op de website laadt ik vervolgens via een query de prijzen van een bepaald product uit. Deze sorteer ik op basis van de kolom 'total'. Ik laat 15 resultaten zien + 3 premium resultaten.
So far, so good.
Nu wil het nog wel eens voorkomen dat 1 aanbieder alle 18 plekken pakt omdat hij bij total er het beste uitkomt. Om te voorkomen dat de resultaten te eentonig worden wil ik het liefste maximaal 3 maal dezelfde aanbieder vertonen.
Een simpele counter die bijhoudt hoe vaak een aanbieder als langs is gekomen lukt me nog wel door middel van een if statement. Maar hoe krijg ik de while loop zo ver dat hij zodra 'if ( aanbieder1 > 3 )' enkel deze aanbieder skipt maar niet de hele loop afbreekt?
Versimpelt is de code ongeveer zo opgebouwd:
Ik wil zoiets:
Waardoor je dus krijgt:
[aanbieder1]
[aanbieder1]
[aanbieder1]
[aanbieder2]
[aanbieder2]
[aanbieder2]
[aanbieder3]
[aanbieder3]
[aanbieder3]
In plaats van wat hij nu doet, namelijk:
[aanbieder1]
[aanbieder1]
[aanbieder1]
[aanbieder1]
[aanbieder1]
[aanbieder1]
[aanbieder1]
[aanbieder1]
[aanbieder1]
Heeft iemand een suggestie hoe ik dit het beste zou kunnen aanvliegen?
So far, so good.
Nu wil het nog wel eens voorkomen dat 1 aanbieder alle 18 plekken pakt omdat hij bij total er het beste uitkomt. Om te voorkomen dat de resultaten te eentonig worden wil ik het liefste maximaal 3 maal dezelfde aanbieder vertonen.
Een simpele counter die bijhoudt hoe vaak een aanbieder als langs is gekomen lukt me nog wel door middel van een if statement. Maar hoe krijg ik de while loop zo ver dat hij zodra 'if ( aanbieder1 > 3 )' enkel deze aanbieder skipt maar niet de hele loop afbreekt?
Versimpelt is de code ongeveer zo opgebouwd:
code:
1
2
3
4
5
| while ( $product = mysqli_fetch_assoc($ophalen_data) ) { extract($product); echo "$aanbieder $brand $model $price"; } |
Ik wil zoiets:
code:
1
2
3
4
5
6
7
8
| while ( $product = mysqli_fetch_assoc($ophalen_data) ) { extract($product); if ( $aanbieder1counter > 3 OR $aanbieder2counter > 3 OR $aanbieder3counter > 3 ) // SKIP ALLE AANBIEDER# RESULTS echo "$aanbieder $brand $model $price"; } |
Waardoor je dus krijgt:
[aanbieder1]
[aanbieder1]
[aanbieder1]
[aanbieder2]
[aanbieder2]
[aanbieder2]
[aanbieder3]
[aanbieder3]
[aanbieder3]
In plaats van wat hij nu doet, namelijk:
[aanbieder1]
[aanbieder1]
[aanbieder1]
[aanbieder1]
[aanbieder1]
[aanbieder1]
[aanbieder1]
[aanbieder1]
[aanbieder1]
Heeft iemand een suggestie hoe ik dit het beste zou kunnen aanvliegen?