簡體   English   中英

遍歷結果PHP或Jquery

[英]Loop Through results PHP or Jquery

我已經為此工作了將近三天,但效果不佳。 我試圖在Laravel中完成此操作。 但我正在尋找任何類型的好主意。

我有一個建議零售價的產品。 自產品發布以來,每一小時的每一天價格都下降10%。 但我想顯示每天價格的下降,如您在張貼的圖片中所見。

這是我一直在嘗試的一些方法。 他們似乎都不干凈。

  1. 在數據庫中增加1行,並將其稱為價格。 -編寫一個CRON,它將每小時在服務器上運行一次,以查看所有產品並在該表中設置新價格。 但這意味着我將使用服務器上的大量資源。

  2. 在數據庫中添加10條額外的行,並在添加產品時生成價格。 但是我在嘗試弄清楚如何顯示星期幾並用紅色突出顯示時遇到問題。 我猜我可以通過jQuery做到這一點。 不太了解,但這是一種方法嗎?

  3. 從該數據庫中提取產品,然后循環瀏覽每個數據庫,並使用此代碼生成表格和價格。 但是,如果流量巨大,那將會消耗很多服務器。

還有其他想法嗎? 任何可以幫助我簡化這一點的東西。

這是我為3ed選項提供的代碼。 由於我不知道jQuery,我沒有第二個。

$msrp = 29.59;
$dayposted = "2016-1-26";
$cDate = Carbon::parse($dayposted);
$today = $cDate->diffInDays();
$days = [];
$i = 1;
$percent = 0;
for($n=0 ;$n<10; $n++) {
    setlocale(LC_MONETARY, 'en_US.UTF-8');
    if ($i == $today) {
        $day = array_add(['day' => 'Day '.$i], 'price' , number_format( $msrp *      ((100-($i*10))/100),2, '.', ''));
        $day = array_add($day, 'class', 'today');
        $price = number_format( $msrp * ((100-($i*10))/100),2, '.', '');
    }
    elseif($i == 10) {
        $day = array_add(['day' => 'Final'], 'price' , number_format( $msrp * ((100-($i*10))/100),2, '.', ''));
        $day = array_add($day, 'class', '');
    }
    else{
        $day = array_add(['day' => 'Day '.$i], 'price' , number_format( $msrp * ((100-($i*10))/100),2, '.', ''));
        $day = array_add($day, 'class', '');
    }
    array_push ($days, $day);
    $i++;
}

這也是我要完成的工作。

點擊這里查看圖片

答案取決於您希望何時完成工作(計算)。

我同意,如果不需要,每次用戶請求信息時都要進行計算,這顯然是對資源的浪費。 但是 ,只要您不進行大量的迭代,查詢或對數據庫中所有事物進行最壞的計數,數學計算就不會非常密集。

話雖如此,如果您真的想確保這些計算不會使您的服務器停頓下來,那么我建議的解決方案是在客戶端上進行。

您將原始數據返回給客戶端,並在瀏覽器上計算價格,這樣,計算就可以在服務器之外完成,並且僅在需要時進行。 但是,這可能不是一個選擇,因為您可能不想向客戶公開定價方法。 不過,一個簡單的javascript函數只是最簡單的方法,該函數僅根據now和發布日期之間的差來計算減少百分比。

無論如何,這可能是微優化的情況。 如果您擔心的話,請做一些基准測試,看看服務器在負載下如何處理它。 這是唯一確定是否需要優化的唯一方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM