Математически казус за един скрипт за анкета

our

Registered
Така ... Имаме едно див поле, широко 170px.
В него трябва да се разширява картинка от 0 до 100%.
Не мога да преценя колко да е широка за съответния процент...

Ако беше 100рх полето да речем, щеше да е по пиксел на процент...
И 25% щяха да са 25рх примерно ... Как да го изчисля ? Сигурно е супер елементарно, ама ...

Сега съм го направил компромисно, през 5%.
Код:
if(in_array($p,range(0,10))) { $l = 17; }
elseif(in_array($p,range(10,14))) { $l = 26; }
elseif(in_array($p,range(15,19))) { $l = 34; }
elseif(in_array($p,range(20,24))) { $l = 43; }
elseif(in_array($p,range(25,29))) { $l = 51; }
elseif(in_array($p,range(30,34))) { $l = 60; }
elseif(in_array($p,range(35,39))) { $l = 68; }
elseif(in_array($p,range(40,44))) { $l = 77; }
elseif(in_array($p,range(45,49))) { $l = 85; }
elseif(in_array($p,range(50,54))) { $l = 94; }
elseif(in_array($p,range(55,59))) { $l = 102; }
elseif(in_array($p,range(60,64))) { $l = 111; }
elseif(in_array($p,range(65,69))) { $l = 119; }
elseif(in_array($p,range(70,74))) { $l = 128; }
elseif(in_array($p,range(75,79))) { $l = 136; }
elseif(in_array($p,range(80,84))) { $l = 145; }
elseif(in_array($p,range(85,89))) { $l = 153; }
elseif(in_array($p,range(90,94))) { $l = 162; }
elseif(in_array($p,range(95,100))) { $l = 170; }
 
Аз имам друго предложение. С него дори ще премахнеш if-овете. Общия вариант на това, което измислих може да го ползваш дори ако решиш да смениш широчината на дива (със сигурност ще действа ако дива е над 100px).

(широчината на дива/100) * процента

В твоя случай можеш да го направиш направо:
1,7 * процента

И тук имаш няколко варианта:

1. Оставяш дробната част (най-добрият според мен). Недостатък е, че 1 процент ще е с 1,7px дължина
2. Махаш цялата част на получения резултат. Недостатък е, че се получава разлика между процентите, по-голяма или по-малка в дадени случаи от 1,7
3. Закръгляш към по-близкото число. Недостатък като т. 2

Получения резултат присвояваш на $l или директно го слагаш в стила за <div>-а.

Успех! :)
 
Мдааа... защо не се сетих за това по-рано .. просто колкото са процентите, толкова процета от дива се пълнят .. :D Благодаря много - по първия начин го оставих ;)

Едит: Сега се загледах и видях, че аз съм го направил така :
Код:
$l = ($p / 100) * 170;
А твоето предложение е
Код:
$l = (170/100) * $p
:roll: Моето ли е грешно ?

Едит 2: Всъщност е един и същи резултата :)
 
$l = round($p * 1.7, 1);

+ това + малко модификация,за да не става с кликане а с onload на бодито например и си готов.

:)
 

Горе