تالار گفتمان nCIS.ir

نسخه‌ی کامل: تغییر رنگ به سبز در صورت افزایش و تغییر رنگ به قرمز در صورت کاهش (حل شد)
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
 چطوری می شه شرط نوشت که اعدادی که از دیتابیس استخراج می شه در صورتی که با بیشتر از مقدار قبلی باشه رنگش سبز بشه و اگه کمتر بشه قرمز شه...

به یاهو فاینسن برید اعداد سهام ها رو نگاه کنید.

http://finance.yahoo.com/corporate-news/


ه مثال می زنم.

هر لحظه با curl می ره به سایت مورد نظر و قیمت طلا رو استخراج می کنه و دو دیتابیس ذخیره می شه و بعد دوباره قیمت جدید طلا از دیتابیس گرفته می شه . با قیمت قبلی مقایسه می شه اگه بیشتر از قیمت قبلیش باشه قیمت جدید به رنگ سبز چاپ بشه و اگر کمتر از قیمت قبلیش باشه به رنگ قرمز چاپ بشه.

mysql
id | name |price |time
1  | tala |2000  |20:15
2  | tala |2010  |20:16
3  | tala |2020  |20:17

 تو جدول بالا آخرین قیمت 2020 ... با قبلی یعنی 2010 مقایسه بشه اگر بیشتر باشه سبز با رنگ سبز چاپ بشه و اگه کمتر باشه با رنگ قرمز چاپ بشه. که در اینجا 2020 بیشتر از مقدار قبلیشه پس باید با رنگ سبز چاپ بشه.


این الگوریتم رو نوشتم فقط تو اجراش مشکله که چطوری شرط مقایسه ای بنویسم.

البته تو ذهنم اینه که مقدار فیلد پرایس با ای دی جدید با مقدار فیلد پرایس قبلیش مقایسه بشه . یعنی id 3 با id 2


این الگوریتم رو نوشتم فقط تو اجراش مشکله که چطوری شرط مقایسه ای بنویسم. Huh
من متوجه نشدم شما تو کد نویسی اش مشکل دارین ، یا اینکه سوال اینکه چطور باید در هر لحظه اخرین قیمت و یک رکورد ما قبل اخرین رکورد رو پیدا کرد ؟
سوال من تو چطوری مقایسه کردن دو مقدار فیلد ، که اگه مقدار جدید بیشتر مقدار قبلی بود بارنگ سبز چاپ بشه و اگه کمتر بود با رنگ قرمز چاپ شه
اگر تغییرات لحظه ای است میتونید برای اولین بازدید کاربر عدد به صورت عادی نمایش داده بشه و تو سشن و یا کوکی مقدار قبلی رو ذخیره کنید. بعد با مقدار جدید مقایسه کنید و تغییرات مثبت و منفی نشون بدهید.
حتما لازم نیست توی چیزی نگه داری می تونی بعد از ثبت داخل بانک بدون اتصال مجدد به بانک با دادن یه مقدار id به یه span که قیمت رو توش نمایش می دی مقدار جدید رو با مقدار span مقایسه کنی.
میتونید برای اون مقدار، 2 فیلد old_value و new_value بگذارین و هربار تغییری انجام میشه، مقدار new_value رو توی old_value بگذارین و مقدار جدید رو داخل new_value قرار بدین. اینطوری به راحتی با مقایسه این دو فیلد میتونین بفهمین مقدار جدید بیشتر از قبلیه یا کمتر.
تشکر از راهنمایی ها ، راه حل پیدا شد
برای تغییر رنگ اینطوری کد نوشته شد.

<table border="1" width="50%">
            <tr>
                <td>Date</td>
                <td>Amont</td>
            </tr>
            <?php
 
            $params =null; //or any params
            $mPDO =  new PDO('mysql:host=localhost;dbname=usd', 'root', '',
                array(
                    PDO::ATTR_PERSISTENT => true,
                    PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"
                )
            );
            $mStatement = $mPDO->prepare("select * from uds order by id desc limit 2  ");
$mStatement->execute($params);
$pays = $mrkfStatement->fetchAll(PDO::FETCH_ASSOC);


$colour = 'black';
$resultcount = count($pays);
if ($resultcount == 2) {
 if ($pays[1]['price'] > $pays[0]['price']) $colour = 'red';
 if ($pays[1]['price'] < $pays[0]['price']) $colour = 'green';
 }
if ($resultcount > 0) {
 echo "<tr><td><span style='color: $color'>"  .$pays [$resultcount-1]['price'] . "</span></td></tr>";
 }


اما نمی دونم چرا وقتی echo زده میشه رنگ تغییر نمی کنه. در صورتی که آخرین عدد از مقدار قبلیش در جدول دیتابیس بیشتره؟
احتمالا مشکل از نام گذاری متغییر رنگ هستش که بصورت colour$ تعریف کردید و بصورت color$ دارید استفاده می کنید.
(30-04-1394، 10:26 ق.ظ)MRPM نوشته: [ -> ]احتمالا مشکل از نام گذاری متغییر رنگ هستش که بصورت colour$ تعریف کردید و بصورت color$ دارید استفاده می کنید.

اونم حل کردم ولی نشد
متغییر resultcount$ چه عددی رو نشون میده؟