Session da tutabilirsin ve session count yaparak eğer 3'ten büyük ise hata verdire bilirsin
veya daha kapsamlı yapıcam diyorsan db üzerinde giriş ip bilgisini tutatarak ta bu işlemi gerçekleştire bilirsin.
//Tarihe göre today.xml yazan yeri değiştirebilirsin.
function DolarKuru(){
$connect_web = simplexml_load_file('http://www.tcmb.gov.tr/kurlar/today.xml');
$usd_buying = $connect_web->Currency[0]->BanknoteBuying;
$usd_selling = $connect_web->Currency[0]->BanknoteSelling;
$euro_selling = $connect_web->Currency[3]->BanknoteSelling;
}
yonlendir fonksiyonu tr karakter veya yazarken mi öyle yazdın tam anlamadım belki ordan kaynaklı hata vardır.
O yüzden fonksiyon bulunamadı demiştir.
Bu fonksiyonu kullanabilirsin.
function IpAdres(){
if(getenv("HTTP_CLIENT_IP")) {
$ip = getenv("HTTP_CLIENT_IP");
} elseif(getenv("HTTP_X_FORWARDED_FOR")) {
$ip = getenv("HTTP_X_FORWARDED_FOR");
if (strstr($ip, ',')) {
$tmp = explode (',', $ip);
$ip = trim($tmp[0]);
}
} else {
$ip = getenv("REMOTE_ADDR");
}
return $ip;
}
Bu eklentiyi internet ortamında çok rahat bulabilirsin.
jquery.maskedinput.min.js
ardından bunu yaptıktan sonra şunu uygula çok daha güzel duracaktır.
<input type="text" class="form-control" data-mask="9999-9999-9999-9999" data-mask-placeholder="*">
//Çıktısı aşağıdaki görütüde istersen sen boşluk veya * olarak yap
aslında bunun başka bir şekilde de yöntemi var direk link üzerinden id gönder açtır veya senin yazdığın kodu biraz daha düzenleyerek gidelim.
$('.Edit').click(function() {
const data = {
id: $(this).attr('data-Edit'),
type: 'POST',
url: "?islem=Edit&id="+id+"",
}
});
Ben bu demiş olduğun db işlemlerinden çok daha fazla büyük db de çalıştım sorgu attıgım örnek veriyorum.
Tarih ise veya Müşteri Kodu ise ben oraya index atadım saniyede 3sn'de 500.binden fazla kayıt çekiyorum ve sistem bana mısın demiyor.
Kullandığım tablo ise datatable js tablosu mysql 5.7 sürümü kullanıyorum. Unutmadan da bunuda söyliyim kullandığın sunucuda ram ne kadar yüksek ise o kadar iyi performans alıyorsun.
// Benim aklıma case yapısı geliyor sanırım case ile yaparsan senin işin daha kolaylaşır böyle if else ile uğraşma
//peki bunu nasıl yapacağız veya sorgusu nedir dersen aşağıdaki sorguyu bir kontrol et
//sorguyu daha sonra kendine göre düzenle ben örnek olsun diye value değerleri kafadan sallıyorum.
//Senaryo şu olsun 1=Nakit 2=Kredi Kartı 3=Havele ödeme türüne göre yanına isimler gelecek. ve toplamlarını bululalım
//Şimdi bunu sorgu üzerinde gerçekleştirelim.
$db->query("SELECT
SUM(CASE WHEN ODEME_TURU=1 THEN ALINAN ELSE 0 END) AS NAKIT,
SUM(CASE WHEN ODEME_TURU=2 THEN ALINAN ELSE 0 END) AS KKARTI,
SUM(CASE WHEN ODEME_TURU=3 THEN ALINAN ELSE 0 END) AS HAVALE,
FROM TABLO_ADIN_BURADA_OLACAK");
//Şöyle bir şey yaparsan işini görür sanırım
/*
Parametre 1= $Tarih1,
Parametre 2= $Tarih2,
Şimdi parametre 1 den yani tarih 1 den 10 gün geriye gidelim ve senin istediğin sonucu bulalım.
Bu yapı dinamik olarak cronjop a tanımlarsan direk olarak sana her gün bu işlemin
10 gün geriden sayarak otomatik bir şekilde yapacak.
*/
$Tarih1 = date('Y-m-d',strtotime("-10 day")); //on gün geriye gittik
$Tarih2 = date('Y-m-d');//şimdiki tarihi bulduk sonraki aşama sorguya bunu sadece eklemek.
$db->query("SELECT * FROM tablo_adin WHERE Tarih BETWEEN '$Tarih1' and '$Tarih2' );
//olayımız bu kadar kolay gelsin.
//Bu şekilde kullanım yapabilirsin sorun olmaması lazım eğer sorun varsa money formatı kullanın
//setlocale(LC_MONETARY, 'tr_TR'); https://www.php.net/manual/tr/function.money-format.php
$deger = 1234.56;
$TL_FORMAT= number_format($deger, 2, ',', '.'). 'TL';
echo $TL_FORMAT;
//Ekrandaki çıktı: 1.234,56 TL