Eğer seçtiğiniz şirketin adını dinamik olarak listelemek istiyorsanız, sorgunuzda bir değişken kullanmalısınız. Örneğin, aşağıdaki gibi:
$sorgu = $vt->prepare('SELECT *FROM sirketler WHERE Sirketadi = :sirket_adi');
$sorgu->bindParam(':sirket_adi', $secilenSirket);
Bu şekilde, $secilenSirket değişkeni seçilen şirketin adını tutar. Örneğin, kullanıcı A şirketini seçtiğinde $secilenSirket = 'A şirketi' olarak ayarlanır ve sorgu A şirketini listeler.
PHP kullanarak fiyatlar içerisinden belirli bir tarih aralığı veya aya ait toplam fiyatı hesaplamak için öncelikle verilerinizi bir veritabanında saklamanız gerekir. Daha sonra, veritabanı sorguları kullanarak istediğiniz tarih aralığındaki veya aya ait fiyatları sorgulayabilirsiniz. Örneğin, şubat ayı için fiyatları sorgulamak için aşağıdaki gibi bir SQL sorgusu kullanabilirsiniz:
SELECT SUM(price) FROM prices WHERE MONTH(date) = 2;
Bu sorgu, "prices" adlı tablonun "date" sütununda şubat ayı olan tüm kayıtların "price" sütununda yer alan değerlerin toplamını döndürür.
Bu sorguyu PHP kullanarak çalıştırmak için, PDO (PHP Data Objects) veya MySQLi kullanabilirsiniz. Örneğin, PDO kullanarak sorguyu çalıştırmak için aşağıdaki gibi bir kod parçacığı kullanabilirsiniz:
$pdo = new PDO('mysql:host=hostname;dbname=database_name', 'username', 'password');
$stmt = $pdo->prepare('SELECT SUM(price) FROM prices WHERE MONTH(date) = ?');
$stmt->execute([2]);
$total_price = $stmt->fetchColumn();
Bu kod parçacığı, veritabanına bağlanır, şubat ayı için fiyatların toplamını sorgulayan bir sorgu hazırlar ve sonuçları $total_price değişkenine atar.
Dilerseniz fiyatların toplamının yanı sıra fiyatların sayısını ve ortalamasını da sorgulayabilirsiniz.
Eğer sorgunuzda "GROUP BY satislar.musteriID" komutunu kullandıysanız ve hala rakamlar 2 katı çıkıyorsa, bu durumda $acikHesapToplam2 değişkenini sorgu sonucunu döngü içinde gezerek her satır için tek tek eklemeniz gerektiği anlamına gelir.
while($satislariGetir=$satis->fetch(PDO::FETCH_ASSOC)){
$acikHesapToplam2 += $satislariGetir['cariToplam'];
// ...
}
Yukarıdaki kod, her satır için cariToplam değerini $acikHesapToplam2 değişkenine ekleyecektir.
Ayrıca, sorgunuzda "GROUP BY satislar.musteriID" komutunu kullanarak satışları gruplandırmanız gerekmektedir. Ancak sorgunuzda acikHesapToplam2 değişkenini satislar tablosunda acikHesap alanından alıyorsunuz. Bu nedenle sorgunuzda acikHesapToplam2 değişkenini satislar tablosunda acikHesap alanının toplamını almak için SUM fonksiyonunu kullanmanız gerekmektedir.
SELECT SUM(satislar.acikHesap) as acikHesapToplam2
FROM satislar
INNER JOIN musteriler ON satislar.musteriID=musteriler.ID
INNER JOIN subeler ON satislar.subeID=subeler.ID
INNER JOIN tahsilatlar as t ON satislar.musteriID=t.tMusteriID
where satislar.satisTarihi between ? and ? AND satislar.subeID='{$sube}'
AND satislar.acikHesap > 0
GROUP BY satislar.musteriID
Bu şekilde sorgunuzda acikHesapToplam2 değişkeni satislar tablosunda acikHesap alanının toplamını verecektir.
Rapor ekranınızda rakamların 2 katı çıkmasının nedeni, satislar tablosunda müşteri ID'si ile ilişkili olarak aynı müşteriye ait satışların birden fazla kez sayılması olabilir. Bu nedenle, sorgunuzda "GROUP BY satislar.musteriID" komutunu kullanarak müşteri ID'si baz alınarak satışları gruplandırmanız gerekmektedir. Ayrıca, sorgunuzda "sum(t.tutar) as tahsilat" komutunu kullanarak tahsilatların toplamını hesaplamaktasınız, bu nedenle tahsilatların birden fazla kez sayılmasına da neden olabilir. Bu durumda sorgunuzda "GROUP BY satislar.musteriID, t.tutar" komutunu kullanarak müşteri ID ve tutar baz alınarak satışları ve tahsilatları gruplandırmanız gerekmektedir.
Google Search Console'da "desteklenmeyen biçim" hatası almanız, sitemap.xml dosyanızda bir sorun olduğunu gösterir. Öncelikle, sitemap.xml dosyanızın doğru bir XML formatına sahip olduğundan emin olun. Ayrıca, dosya içeriğinin sitenizdeki tüm sayfaları içerdiğinden ve her bir sayfanın doğru URL'si olduğundan emin olun.
Eğer dosya formatı ve içeriği doğruysa, sitemap.xml dosyanızın Google Search Console'da tanımlanmış olan alan adına ait olduğundan emin olun. Ayrıca, sitemap.xml dosyanızın robots.txt dosyanızda belirtilen dizinler içinde olduğundan emin olun.
Eğer hala sorununuz devam ediyorsa, https://www.xml-sitemaps.com bu website'ye domain adresinizi girerek otomatik bir sitemap.xml oluşturup bunu yüklemeyi deneyebilirisiniz!
PHP ve MySQL kullanarak bu işlemi gerçekleştirmeniz mümkündür. Öncelikle ilgili tablodaki aktiflik durumunu kontrol edecek bir SQL sorgusu yazmalısınız. Daha sonra, kullanıcının sisteme giriş yaptığını kontrol edecek bir kod parçası yazmalısınız. Eğer kullanıcı sisteme giriş yapmışsa, yapacağınız hesaplamalar sonucunda elde ettiğiniz değerleri başka bir tabloya insert etmek için bir SQL sorgusu yazmalısınız. Örnek olarak:
// veritabanına bağlanmak için PDO nesnesi
$conn = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
// ilgili tablodaki aktiflik durumunu kontrol eden SQL sorgusu
$sql = "SELECT aktiflik FROM table_name WHERE user_id = :user_id";
$stmt = $conn->prepare($sql);
$stmt->execute(array(':user_id' => $user_id));
$row = $stmt->fetch(PDO::FETCH_ASSOC);
// kullanıcının sisteme giriş yaptığını kontrol eden kod parçası
if ($row['aktiflik'] == 1) {
// kullanıcı sisteme giriş yapmış
// hesaplamalar
$sonuc = ...;
// başka bir tabloya insert etmek için SQL sorgusu
$sql = "INSERT INTO table_name (user_id, sonuc) VALUES (:user_id, :sonuc)";
$stmt = $conn->prepare($sql);
$stmt->execute(array(':user_id' => $user_id, ':sonuc' => $sonuc));
}
Ayrıca her gün otomatik olarak yapmasını istediğiniz işlemi gerçekleştirmek için bir cron job oluşturmanız gerekir.
Cron job oluşturmak için ilk olarak terminale erişiminiz olması gerekir. Erişiminiz varsa, terminale "crontab -e" komutunu yazabilirsiniz. Bu komut, cron tablosunun düzenlenmesi için bir düzenleyici açar.
Daha sonra, oluşturmak istediğiniz cron job'unun nasıl çalışacağını belirtmeniz gerekir. Cron jobların çalışması için öncelikle belirli bir zaman aralığı belirtmeniz gerekmektedir. Bunun için cron tablosunda 5 adet alan bulunur:
Dakika (0 ile 59 arası)
Saat (0 ile 23 arası)
Gün (1 ile 31 arası)
Ay (1 ile 12 arası)
Haftanın günü (0 ile 7 arası, 0 ve 7 Pazar gününü ifade eder)
Bu alanları, belirli bir zaman aralığı için kullanabilirsiniz. Örneğin, her gün saat 00:00'da bir script'i çalıştırmak istiyorsanız, cron tablosunda aşağıdaki gibi bir girdi oluşturabilirsiniz:
0 0 * * * /usr/bin/php /path/to/script.php
Bu girdi, her gün saat 00:00'da /usr/bin/php komutunu kullanarak /path/to/script.php adresindeki script'i çalıştırır.
JavaScript ile internet bağlantısı olmadığında uyarı verebilirsiniz.
Örneğin, aşağıdaki kod, internet bağlantısı olmadığında kullanıcıya bir mesaj gösterir:
if (!navigator.onLine) {
alert("Üzgünüz, internet bağlantınız yok. Bu sayfayı kullanamazsınız!");
}
Bu kod, navigator.onLine
değişkenini kontrol eder. Eğer false
ise, kullanıcıya bir uyarı mesajı gösterir.
JavaScript ile kullanıcının internet bağlantısı yoksa belirli bir sayfaya yönlendirmek için aşağıdaki kodu kullanabilirsiniz:
if (!navigator.onLine) {
window.location.href = "offline.html";
}
Bu kod, internet bağlantısı yoksa kullanıcıyı "offline.html" adlı sayfaya yönlendirir. Bu sayfanın ismi ve yolu sizin belirlediğiniz sayfanın ismiyle değiştirilmeli.
Bunun dışında, HTML5 Application Cache API kullanarak offline sayfalar oluşturmanız mümkün. Bu API ile belirlediğiniz sayfaların veya dosyaların ön bellekte saklanmasını sağlayarak, kullanıcının internet bağlantısı olmadığında hala sayfaları görüntüleyebilmesini sağlarsınız.
Detaylar:
https://docs.tizen.org/application/web/guides/w3c/storage/appcache/
https://developer.mozilla.org/en-US/docs/Web/API/Window/applicationCache
İki alanı birleştirmek için, dosya yükleme işlemi yapılırken ayrıca veritabanına kayıt işlemi de gerçekleştirilmeli. Örnek olarak, dosya yükleme işlemi başarılı olduğunda, veritabanına kayıt işlemi gerçekleştirilebilir. Bu amaçla, dosya yükleme işlemi sonrasında yer alan "move_uploaded_file" fonksiyonunun içerisinde yer alan "if" bloğunun içerisine yeni bir "foreach" döngüsü ekleyebilirsiniz ve burada veritabanına kayıt işlemi gerçekleştirebilirsiniz.
Kodunuzda dosya yükleme işlemi yapılırken yüklenen dosyanın boyutunun 3 MB'dan büyük olup olmadığı kontrol edilmektedir. Eğer dosya 3 MB'dan büyükse kullanıcıya "Dosya Boyutu 3 MB'dan Büyük Olamaz" uyarısı verilmektedir ve işlem sonlandırılmaktadır. Bu kontrolü kaldırmak isterseniz, kontrol bloğunu kodunuzdan silebilirsiniz veya kontrol bloğunun içerisinde yer alan "if($dosya_boyutu > (1024*1024*3))
" kontrol kriteri değiştirerek dosya boyutunun daha büyük olmasına izin verebilirsiniz.
PHP ile kullanıcı girişi yaptırırken, veritabanındaki "veri" sütununa her 15 saniyede bir +15 eklemek için bir cron job oluşturabilirsiniz. Cron job, belirli bir zamanda belirli bir komutu otomatik olarak çalıştırmak için kullanılan bir araçtır. Örneğin, her 15 saniyede bir veritabanınızdaki "veri" sütununu +15 arttırmak için aşağıdaki komutu kullanabilirsiniz:
*/15 * * * * php /path/to/script.php
Bu komut, her 15 dakikada bir "path/to/script.php" dosyasını çalıştırır. Bu dosyada, veritabanına bağlanıp "veri" sütununu +15 arttıran kodları yazmalısınız.
Eğer sunucunuzda cron yoksa, benzer işlemler için "setInterval" metodu ile javascript ile yapabilirsiniz veya bir hizmet sağlayıcısı(Heroku gibi) ile kurulum yapabilirsiniz.