Hele simpele vraag

Status
Niet open voor verdere reacties.
Regel 16 en 17 veranderen, [0-5] wordt [1-5], het wordt dan
PHP:
    // als adv format: cijfer [1-9], één of meer [0-9], cijfer [1-5]
    if (preg_match('/^[1-9][0-9]+[1-5]$/', $adv) == true) {
 
Volgens mij is het nu helemaal toppie.
Dit was volgens mij de meest moeilijke "Hele simpele vraag" in de historie van helpmij.nl :D

hartelijk dank voor je perfecte hulp :thumb:
 
Heb iets kleins moeten aanpassen.
Er zit nog 1 schoonheidsfoutje in, alleen weet ik niet of dat door mijn aanpassing komt?

Uitleg:
Ik heb na overleg met de groothandel gewoon de inkoopprijs met een factor 1.6 berekend.
Daarvoor heb ik onderstaande code vervangen met een regel zonder if-statement: "$adv = ($ink * 1.6);"
(Want er hoeft niet meer naar de adviesprijs gekeken)

if (empty($adv)) {
// bereken adv met ink formule
$adv = 2 - ($ink * 0.000107142857);
}

Situatie:
Er zijn toch nog prijzen waarvan het "n"-getal (in 36n.00) wat uit de berekening komt op 0 komt te staan
225 Word uiteindelijk 360 terwijl ik deze eigenlijk op 5 had willen hebben staan.
 
Float functie voor inkkoopprijs was niet de oorzaak (resultaat hetzelfde)
 
Regel 1 t/m 11 (van code in #19) vervangen door deze code
PHP:
// functie aanroepen met:  bereken_adviesprijs($inkkoopprijs)
function bereken_adviesprijs ($inkkoopprijs) {
  // maak van inkkoopprijs een getal (in geval het een tekst is)
  $ink = (float)$inkkoopprijs;
  // adviesprijs berekenen, afronden op 2 cijfers achter de komma
  $adv = round($ink * 1.6, 2);

In regel 16/17 is [0-5] veranderd in [1-5]
De functie heb ik een betere naam gegeven (zie code regel 1 hierboven).

Aanroepen met : bereken_adviesprijs($inkkoopprijs)
 
Laatst bewerkt:
Code aangepast maar 225 word nog steeds 360
zie afbeelding

Inkkoop.PNG
 
Klopt als een bus. inkoop 225 x 1,6 = 360 :D
 
Zie onderste regel van #19 en jouw antwoord bij #20.
Als je toch alles op 5 of 9 wilt hebben dan hoor ik het wel.

Aanvulling
Gelijk maar oplossing erbij gezet
Code:
    // als adv format: cijfer [1-9], één of meer [0-9], laatste cijfer [0] of [6-9]
    } elseif (preg_match('/^[1-9][0-9]+(0|[6-9])$/', $adv) == true) {
      // dan afronden op 10-tal en 1 er vanaf halen (bijv. 137 > 140 > 139)
      $adv = round($adv, -1, PHP_ROUND_HALF_DOWN) - 1;
    }

adviesprijs 370.00 t/m 375.99 wordt 375.00
adviesprijs 376.00 t/m 379,99 wordt 379.00
 
Laatst bewerkt:
Dat antwoord was inderdaad niet goed bij nagedacht
excuseer
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan