Оптимизиране на проценти

stoqnski

Registered
Написал съм си следната заявката :
PHP:
$today = time();
$vchera = time() - 86400;
$today = date("d.m.Y", $today);
$vchera = date("d.m.Y", $vchera);
		
$rs = mysql_query("SELECT (SELECT COUNT(id) as cnt FROM obiavi WHERE `datata` = '{$today}') as today, (SELECT COUNT(id) as cnt FROM obiavi WHERE `datata` = '{$vchera}') as yesterday;");
$q = mysql_fetch_array($rs);

$comment1 = $q['yesterday'] ; 
$comment2 = $q['today'] ; 

$res = 100*($comment2/$comment1);
$res = round($res);
if($res > 100) {
$result = $res - 100;
echo "Днес са добавени <font color='green'><b>$result%</b></font> повече обяви от вчера. ";
echo "<br />Днес: " . $q['today'] . " Вчера: " . $q['yesterday'];
}
elseif($res<100)
{
$result = 100 - $res;
echo "Днес са добавени <font color='red'><b>$result%</b></font> по-малко обяви от вчера. ";
echo "<br />Днес: " . $q['today'] . " Вчера: " . $q['yesterday'];
}
elseif($res == 100)
{
echo " Няма промяна - $result%!Обявите са толкова колкото и вчера.";
echo "<br />Днес: " . $q['today'] . " Вчера: " . $q['yesterday'];
}
?>

Работи си перфектно , но примерно
Днес са добавени: 9
Вчера са добавени: 4
и ми вади +125% повече ...

Мисълта ми е , да вади до скала от 100% т.е.
тези 125% да ги превърне по някаква скала в 25% ли ддз
мисля , че трябва да пренапиша отново аритметичните операции

и пак с две думи : Искам $result да не превишава 100% т.е да е в скала до 100%

*бележка: ако се питате защо : просто тази променлива $result просто я ползвам за value на едно поле , което се разширява ... 0 до 100% е перфектно , но когато $result ми е примерно 400% не питайте какво става .. :D
 
не трябва ли да направиш първо едно изваждане :)
за да провериш с колко повече са се увеличили коментарите ?

$comment1 = $q['yesterday'] ;
$comment2 = $q['today'] ;
$commentnew=$comment2-$comment1;

и сега вече можеш да провериш пък какъв им е процента спрямо всички ..


$res = 100*($commentnew/$comment2);


всичко надолу е излишно . не ти трябват if.
новите коментари винаги са повече от старите или равни . ако са равни ще имаш просто един if $commentnew =="0" .. "няма нови коментари"
 
Това , което си написал е по-лошо и от моето ...

Дай си стойности за yesterday примерно 600 , и за today 100 или пък за yesterday 100 , а за today 600 ...
 
PHP:
$comment1 = "600";
$comment2 = "599"; 
if($comment2>$comment1){
$commentnew=$comment2-$comment1;
$res = ($commentnew/$comment1)*100;
$res= round($res,2);
echo "Komentarite sa s ".$res."% poveche";
} elseif($comment2==$comment1){
echo "nqma promqna"; }
else {
$commentnew=$comment1-$comment2;
$res = ($commentnew/$comment2)*100;
$res= round($res,2);
echo "Komentarite sa s ".$res."% po malko";
}


къде е проблема
 

Back
Горе