PHP / PDO ile veritabanından haftalık veri nasıl çekilir?

LikapaTR

I LIKE TO BAN
Admin
Geliştirici
Mesaj
585
Çözümler
3
Beğeni
732
Puan
814
Veritabanından haftalık veri çekmenin nasıl yapıldığını göstereceğim, daha iyi yöntemler vardır belki bilemiyorum kendi algoritmamla yaptım bu işlemi, eğer farklı bir metot biliyorsanız lütfen konu altında belirtin hep birlikte öğrenelim.

Bu işlem için SQL BETWEEN kullanacağız. SQL BETWEEN 'in cümle içerisinde nasıl kullanıldığını bilmeyenler için aşağıya küçük bir örnek bırakmak istiyorum.

Örnek SQL BETWEEN:
SELECT * FROM tablo_adi WHERE id = 1 AND date BETWEEN '2021-02-08' AND '2021-02-14'

Yukarıdaki örneği açıklamak gerekirse, WHERE'in ardından gelen " date " sütun ismi BETWEEN operatörünün hangi sütunda ki verilerle etkileşimde olacağını belirtmektedir. Bu sütun ismi yazıldıktan sonra BETWEEN operatörü yazılır ve ardından aralık değerleri aralarında " AND " olacak şekilde yazılır. Bu değerler tarih olabildiği gibi string veya integer gibi metin ve sayı formatlarında da olabilir.

BETWEEN operatörü hakkında gerekli açıklamanın ardından haftalık veriyi nasıl çekeceğimizden biraz bahsedeyim.

  • İlk olarak haftanın ilk gününü bulmamız gerekiyor.Bunun için strtotime fonksiyonunu kullanacağız bu fonksiyon PHP ile birlikte gelen fonksiyonlardan biridir ve harici olarak herhangi birşey include etmenizi gerektirmez.

Bu fonksiyonun 2 çeşit kullanımı mevcut, sadece string 1 ifade girerek şuan bulunduğunuz tarihe göre işlem yapabilir veya 2 parametre girerek 2.parametrede belirlediğiniz tarihe göre işlem yaptırabilirsiniz.
  • Date fonsiyonu ise size belirlediğiniz formatta şuanki tarihi verir.

strtotime Fonksiyonu:
strtotime('Monday this week' . date("Y-m-d"));

  • Ardından ihtiyacımız olan verileri veritabanından çekecek fonksiyonu yazmaya geçebiliriz.

Veritabanından verileri çekecek fonksiyon:
function get_between_dates($table_name,$where,$id,$btwhere,$dateone,$datetwo)
{
    global $db; //Database bağlantınızı başka bir yerde yapmamışsanız öncesinde burada veya başka bir yerde bağlantıyı oluşturmanız gerekmektedir.

    $query = $db->query("SELECT * FROM $table_name WHERE $where = $id AND  $btwhere BETWEEN '$dateone ' AND $datetwo ")->fetchAll(PDO::FETCH_ASSOC);
    return $query;
}


Fonksiyon içerisindeki değişkenler;


  • $table_name => İşlem yapacağınız tablonun adı.
  • $where => Query'de ki WHERE sütunun adı.
  • $id => WHERE ifadesinin eşit olacağı değer.
  • $btwhere => BETWEEN operatörüyle ilişkilendirilecek sütunun adı.
  • $dateone => Başlangıç tarihi.
  • $datetwo => Bitiş tarihi.

Kullandığım tablo:


IDSTATUSDATEAMOUNT
1-12021-02-08100
212021-02-08150
312021-02-09200
4-12021-02-10150



Artık veri çekme ve hesaplama işlemini yapacak olan foksiyonu yazmaya geçebiliriz.

PHP:
function accounting()
{

    //İçerisinde bulunduğum haftanın ilk gününü bulup onu $first_day_of_week adlı değişkene aktardım.
    $first_day_of_week = date("Y-m-d", strtotime('Monday this week' . date("Y-m-d")));

    //Gelir ve gideri hesaplamak istediğim için tablomdaki gelir ve gider bilgilerini alıp değişkenlere aktardım.(Array olarak)
    $w_income = get_between_dates("accounting","status","1","date","$first_day_of_week","now()");
    $w_expense = get_between_dates("accounting","status","-1","date","$first_day_of_week","now()");


    // sonuçlar
    $weekly_income  = 0;
    $weekly_expense = 0;

    //Gelen verilerdeki geliri toplayıp bir değişkene aktardım.
    foreach ($w_income as $key => $value){
        $amount = $value['amount'];
        $weekly_income += $amount;
    }
    //Gelen verilerdeki gideri toplayıp bir değişkene aktardım.
    foreach ($w_expense as $key => $value){
        $amount =  $value['amount'];
        $weekly_expense += $amount;
    }
   
    //Değişkenlerdeki değerleri bir array içerisine aldım ve bu arrayi sonuç olarak return ettim.
    $result = array(
           'weekly' => array(
            'income' => $weekly_income,
            'expense' => $weekly_expense,
    );
    return $result;
}


Bu fonksiyonda hesaplanan değerleri aşağıdaki gibi ekrana yazdırabiliriz.

PHP:
$accounting = accounting();

echo "Gelir: +$ ".$accounting['weekly']['income'];
echo "<br>"
echo "Gider: -$ ".$accounting['weekly']['expense'];


Ekran Çıktısı:

Gelir: +$ 350
Gider: -$ 250

Bu istatistik verilerine ihtiyacım vardı ve bu ihtiyacı şekilde hallettim.Umarım bu yazıyı okuyanların işine yarar bir bilgi olmuştur.
 
Gayet açıklayıcı ve güzel konu olmuş. Paylaşım için teşekkürler. ;)
 
Geri
Üst