Merhaba, hesabı veriyi çekerken yapabilirsiniz aslında. MySQL ile.
Bir tablo düşünelim.
id fiyat sonfiyat
1. 120 50
2. 200 300
mysql ile hesaplayalım;
select
IF(fiyat < sonfiyat , "zam", "indirim") as durum,
sum(sonfiyat - fiyat) as fark,
round(sum(((sonfiyat - fiyat) / fiyat) * 100)) as fark_yuzde
from deneme
group by id
sonuç;
durum fark fark_yuzde
indirim -70 -58 //Yüzde 58 oranında indirim
zam 100 50 //Yüzde 50 zam
Sorunumu çözdüm,
günün birinde problem yaşayanlar için; MySQL backslash'ı yani \ karakterini özel olarak kullanıyor. Bu yüzden bu karakteri 2 tane yazmak gerekiyor.
str_replace ile çözüm üretilebilir.
Örneğin;
str_replace("\\", "\\\\", $text); 1 tane backlash için \ 2 tane yazmak gerekli.
:)
Merhaba,
kısa bir araştırma yaptığımda aynı durumdan müzdarip olanları gördüm ve kesin cevap ne yazıkki bulunamamış.
Bende nasıl çözülür bilmiyorum.
Öneriler olarak, kişinin tarayıcı bilgisini aldıktan sonra bir popup veya özel sayfa hazırlayarak kullanıcıyı chrome kullanmasına teşfik edebilirsiniz.
Bunun içinde şöyle bir örnek buldum;
https://stackoverflow.com/questions/9847580/how-to-detect-safari-chrome-ie-firefox-and-opera-browser
Wordpress vb. cms'ler kullanıyorsanız ayarlar kısmında (tabi farklı yerlerde) bu işlem mümkün.
Kendiniz bir altyapı hazırlıyorsanız en basitinden;
index.php içerisinde
$pt = $_GET["page"] ?? "main"; //URL'den gelen page değerini alıyoruz, yoksa default olarak main sayfasını bildiriyoruz.
//GET ile aldığımız değerleri güvenlik kontrolünden geçirmeniz gerek. Ben default halini ekliyorum.
switch($pt){ //Gelen değeri kontrole başlıyoruz
case "iletisim": //iletiişim ise contact.php döndüreceğiz
$pt = "contact";
break;
case "sayfa": //Sayfa ise page.php döndüreceğiz
$pt = "page";
break;
default: //Yukarıkilerin hiçbiri ile uyuşmazsa 404.php döndüreceğiz
$pt = "404";
break;
}
include_once($pt.".php"); //Gelen değerin .php sayfasını include ile çağırıyoruz. Burada tema yolunu verebilirsiniz.
Not: Bu düz php örneğidir. MVC OOP programlamalarda class yapısında bu işlemler farklı oluşacaktır.
Döngüye girmek istemezseniz php'nin array_column fonksiyonu ile toplamak istediğiniz kolonu seçtikten sonra array_sum fonksiyonu ile toplayabilirsiniz.
Sizin örneğinizdeki kullanımı;
$arr = [
[
'isim' => 'Uğur',
'yas' => 20,
'city' => 'İzmir'
],
[
'isim' => 'Ahmet',
'yas' => 15,
'city' => 'İstanbul'
],
[
'isim' => 'Ali',
'yas' => 5,
'city' => 'Bursa'
]
];
echo array_sum(array_column($arr, "yas"));
//40
@m100 teşekkür ederim cevabın için fakat bahsettiğim tam olarak bu değil :(
Tekrar bir örnek ile anlatmak istiyorum.
class User
{
public string $name = "";
public string $lastname = "";
public int $rank = "";
public array $permission = [];
}
Bu şekilde modelimin içerisinde kullanacağım tanımları ekliyorum.
Ardından;
class User
{
public function attiributes(): array
{
return ["firstname", "lastname", "rank", "permission"]
}
}
buradada modelimdeki attiribuitleri (bunlar veritabanımdaki name'ler) ekliyorum.
Şimdi hem yukarıda tanımladım, hem aşağıda attiributes içinde.
Tabiki, üşengeçlik demeden bunu otomatize etmeye çalışıyorum. Yani attiributes içerisinde öyle birşey yapayımki;
dizideki elemanları kendi tanımlansın.
Mesela;
class User
{
public function attiributes(): array
{
return [
"firstname" => "public string"
"lastname" => "public string"
"rank" => "public int"
"permission" => "public array"
]
}
}
Umarım anlatabilmişimdir :)
Şimdi neden diyecek olursanız; Ben bu attiributes'i sadece bunun için kullanmıyorum. Dizi çıktısında hem label, hem kural, hemde diğer istediğim tanımları ekliyorum. Bu sayede tek bir fonksiyon içerisinden hem kendisine hemde extend olduğu sınıflara dağıtıp kullanabiliyorum.