Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Мое голосование


Автор: InfMag 9.4.2005, 18:20
Люди, у меня есть свое голосование.
Код

$pr = ($marks5 * 100) / $max;

$pr - это будет длинна рисунка, который показывает уровень голосовавших за этот ответ.
Так все работает нормально, но если у меня $marks1 == 100 допустим, а остальные в районе 10-и, то палка $marks1 выходит за грань.
Что мне делать в такой ситуации?

Автор: Opik 9.4.2005, 19:56
длину делаешь в процентах?
Добавлено @ 19:57
возможно ты делаешь 100% и это получается весь экран.
задай ограничение, например, таблецей.

Автор: Gold Dragon 10.4.2005, 09:38
Переводи своё самое большое значение до определённой велечины, а остальные расчитывай от этой велицины

Пример. Вот конечные результаты

а = 53
б = 12
в = 100
г = 34

в_х --> 100 = 30px - основа
а_х --> 30рх / 100 * 53 = 15.9px
б_х --> 30рх / 100 * 12 = 3.6px
г_х --> 30рх / 100 * 34 = 10.2px


Автор: Mal Hack 10.4.2005, 10:09
Цитата(Red @ 10.4.2005, 10:38)
15.9px

При этом не забывем про round(); smile

Автор: Gold Dragon 10.4.2005, 12:29
Mal Hack
У тебя железная логика smile

А вообще-то я тестит... если забать width=323.8 или width=323,8 то браузер автоматом отрезает .8 и ,8

Автор: InfMag 10.4.2005, 15:49
Я не понял в чем фишка.
Как мне максимум дорезать до 100 например, и как остальные подсчитывать?

Автор: Gold Dragon 10.4.2005, 17:31
Не уже ли не понятно пояснил.... smile

Получаешь числа

Выбираешь максимальное. Это 100%.

Приводишь (как я уже показал) его к масимальному значению, т.е. 30 рх. всё остальное считаешь от этого.. То есть если у тебя будет результат 1млн, твоя полоска всё равно не будет больше 30 рх

Автор: InfMag 10.4.2005, 19:57
Red Dragon
Изнини, но я запутался... Может подскажешь, что мне писать вместо этого: $pr = ($marks5 * 100) / $max;

Автор: Gold Dragon 11.4.2005, 07:55
InfMag
Ещё раз перечитываю и уже сам начинаю сомниваться в правильности своих сужденийsmile

В общем "на пальцах" или я не понял вопрос...

У тебя есть форма в которой выводится результат. У этой формы есть максимальная ширина, если величина будет больше, то рисунок будет выезжать за границу.
Код

// Допустим что максимальная ширина равна 100 рх
$w_max = 100;

// Допустим у тебя 7 пунктов ответа
$pr[1] = 12;
$pr[2] = 0;
$pr[3] = 43;
$pr[4] = 24;
$pr[5] = 87;
$pr[6] = 123;
$pr[7] = 39;

// Находим максимальное значение
$pr_max = max($pr);

// теперь проверяем, если максимальное значение больше максимальной ширины,
// то получаем коэфициент для уменьшения
if ($pr_max > $w_max){$k = $w_max / $pr_max;}

// получаем результат с коэфициентом
$pr[1] = round($pr[1] * $k);
$pr[2] = round($pr[2] * $k);
$pr[3] = round($pr[3] * $k);
$pr[4] = round($pr[4] * $k);
$pr[5] = round($pr[5] * $k);
$pr[6] = round($pr[6] * $k);
$pr[7] = round($pr[7] * $k);

// в итоге, у тебя больше нет значения больше $w_max


Автор: InfMag 11.4.2005, 10:19
Red Dragon
А если $pr_max > $w_max, то переменной к не будет.
Мне приписывать заранее $k = 1;? smile
Добавлено @ 10:26
А все, понял... Вот что написал:
Код

// ...
    $wmax = 300;
    $maxs[0] = $marks5*100;
    $maxs[1] = $marks4*100;
    $maxs[2] = $marks3*100;
    $maxs[3] = $marks2*100;
    $maxs[4] = $marks1*100;
    $max = max($maxs);
    if ($max > $wmax) $k = $wmax / $max; else $k = 1;
?>
<table border=0 cellpadding=3 cellspacing=0 align=center style="font-size:14; font-weight: bold">
<tr>
<td align=right>Оценка 5</td>
<td><img src="<?php echo $lb ?>images/vote1/5.jpg" width=<?php echo round($maxs[0] * $k) ?> height=10 border=0><?php echo " ($marks5)" ?></td>
</tr>
<tr>
<td align=right>Оценка 4</td>
<td><img src="<?php echo $lb ?>images/vote1/4.jpg" width=<?php echo round($maxs[1] * $k) ?> height=10 border=0><?php echo " ($marks4)" ?></td>
</tr>
<tr>
<td align=right>Оценка 3</td>
<td><img src="<?php echo $lb ?>images/vote1/3.jpg" width=<?php echo round($maxs[2] * $k) ?> height=10 border=0><?php echo " ($marks3)" ?></td>
</tr>
<tr>
<td align=right>Оценка 2</td>
<td><img src="<?php echo $lb ?>images/vote1/2.jpg" width=<?php echo round($maxs[3] * $k) ?> height=10 border=0><?php echo " ($marks2)" ?></td>
</tr>
<tr>
<td align=right>Оценка 1</td>
<td><img src="<?php echo $lb ?>images/vote1/1.jpg" width=<?php echo round($maxs[4] * $k) ?> height=10 border=0><?php echo " ($marks1)" ?></td>
</tr>
</table>
<?php
// ...

Добавлено @ 10:27
Всем сенкс.

Автор: Gold Dragon 11.4.2005, 11:44
Цитата(InfMag @ 11.4.2005, 10:19)
А если $pr_max > $w_max, то переменной к не будет.

Это я просто не написал smile само сабой нужно присвоить $k единицу

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)