• 28-11-2024, 22:09:33
    #1
    Benim ilan sitem var, diyelim listede sıralamada 5 adet ilan mevcut ben onay verdikçe yeni ilan üstte kalıyor.. Ama ben o şekilde istemiyorum

    1 en yeni ilan
    2
    3
    4
    5 en eski ilan

    Benim istediğim 1 saat ara ile sıralamaları yer değiştirsin istiyorum 12345 ise bir saat sonra 51234 tekrar bir saat sonra 45123 bu şekilde en sondaki ilanı her saat başa alsın döngü olsun istiyorum.. Yapabilirmisiniz.

    Sitemin kodları buradan algılıyor sanırım.


    if( isset($post_array["order"]) && $post_array["order"] )
    {
    $order_by = " order by " . $pri_ord . " " . $post_array["order"];
    $order_by = " order by " . $post_array["order"];
    }
    else
    {
    $order_by = " order by " . $pri_ord . " date_added";
    }
    
    if( isset($post_array["order_way"]) && $post_array["order_way"] )
    {
    $order_way = $post_array["order_way"];
    }
    else
    {
    $order_way = " desc";
    }
  • 28-11-2024, 22:23:36
    #2
    if (isset($post_array["order"]) && $post_array["order"]) { $order_by = " order by " . $post_array["order"]; } else { $current_hour = date('H'); $order_by = " order by RAND($current_hour)"; } hocam bu random ile karıştırabilirsiniz
  • 29-11-2024, 01:16:24
    #3
    ersinavsr adlı üyeden alıntı: mesajı görüntüle
    if (isset($post_array["order"]) && $post_array["order"]) { $order_by = " order by " . $post_array["order"]; } else { $current_hour = date('H'); $order_by = " order by RAND($current_hour)"; } hocam bu random ile karıştırabilirsiniz
    sayfayı yeniledikçe random oluyor peki hocam bu kodu nasıl saatlik random yapabilirim,

    public function getFeatured($no_random)
    {
    global $db;
    global $settings;
    $locations_str = "";
    if( $settings["enable_locations"] )
    {
    $locations_str = locations::makeQueryStr();
    }
    $where = "where " . TABLE_ADS . ".featured=1 and " . TABLE_ADS . ".active = 1" . $where . $locations_str;
    $order_by_str = "order by rand()";
    $order_way = "";
    $start = 0;
    $ads_per_page = $no_random;
    $result = $this->getShortListings($where, $order_by_str, $order_way, $start, $ads_per_page);
    return $result;
    }
  • 29-11-2024, 03:23:52
    #5
    function getRotatingOrder($items_count = 5) {
        // Başlangıç zamanından bu yana geçen saat sayısını hesapla
        $hours = floor(time() / 3600);
        
        // Rotasyon sayısını hesapla
        $rotation = $hours % $items_count;
        
        // SQL için ORDER BY ifadesini oluştur
        $orderBy = "ORDER BY CASE
            WHEN (id % {$items_count}) = {$rotation} THEN 0
            WHEN (id % {$items_count}) > {$rotation} THEN (id % {$items_count})
            ELSE (id % {$items_count} + {$items_count})
            END ASC, date_added DESC";
            
        return $orderBy;
    }
    if(isset($post_array["order"]) && $post_array["order"]) {
        $order_by = getRotatingOrder(5, $pri_ord);
    } else {
        $order_by = getRotatingOrder(5, $pri_ord);
    }
    order_way artık gerekli değil çünkü rotasyon mantığı bunu içeriyor

    İlan sayısını değiştirmek için de fonksiyonu çağırırken parametre olarak farklı bir sayı verebilirsiniz
    $order_by = getRotatingOrder(10); // 10 ilan için rotasyon
    Her saat başı otomatik olarak rotasyon gerçekleşir
    İlanlar belirttiğiniz şekilde (51234, 45123, ...) sırayla döner
  • 29-11-2024, 04:47:58
    #6
    yurseli adlı üyeden alıntı: mesajı görüntüle
    function getRotatingOrder($items_count = 5) {
        // Başlangıç zamanından bu yana geçen saat sayısını hesapla
        $hours = floor(time() / 3600);
        
        // Rotasyon sayısını hesapla
        $rotation = $hours % $items_count;
        
        // SQL için ORDER BY ifadesini oluştur
        $orderBy = "ORDER BY CASE
            WHEN (id % {$items_count}) = {$rotation} THEN 0
            WHEN (id % {$items_count}) > {$rotation} THEN (id % {$items_count})
            ELSE (id % {$items_count} + {$items_count})
            END ASC, date_added DESC";
            
        return $orderBy;
    }
    if(isset($post_array["order"]) && $post_array["order"]) {
        $order_by = getRotatingOrder(5, $pri_ord);
    } else {
        $order_by = getRotatingOrder(5, $pri_ord);
    }
    order_way artık gerekli değil çünkü rotasyon mantığı bunu içeriyor

    İlan sayısını değiştirmek için de fonksiyonu çağırırken parametre olarak farklı bir sayı verebilirsiniz
    $order_by = getRotatingOrder(10); // 10 ilan için rotasyon
    Her saat başı otomatik olarak rotasyon gerçekleşir
    İlanlar belirttiğiniz şekilde (51234, 45123, ...) sırayla döner
    Senden Allah razı olsun kod işe yarıyor ama ilan sayısını ben takip edememki sayı girilmeden olmuyormu ?