Diyelim ki PHP ile şu şekilde tarihleri tutuyorsunuz:
$activeDates = [
'10-29',
'21-1',
'4-23',
'5-19',
];
Şimdi bugünün yukarıdaki tarihlerden biri olup olmadığını bulalım.
// Önce bugünün tarihini alalım:
$today = date("m-d");
// Henüz kontrol sağlamadan önce, bugünün aktif gün olup olmadığını tutacak değişkene false verelim:
$isTodayActive = false;
// Şimdi tüm aktif günlere tek tek bakmak için bir döngü oluşturalım:
foreach($activeDates as $date) {
// Döngünün baktığımız elemanı ile bugün aynı mı?
if($date == $today) {
// Aynıysa bugünün aktif olduğunu belirten değişkenimizi true yapalım.
$isTodayActive = true;
// Ve döngünün sonraki tarihlere bakmadan sonlanmasını sağlayalım.
break;
}
}
Artık $isTodayActive
değişkenimiz true ise bugünün özel günlerden biri olduğunu anlayabiliyoruz.
Bu durumda DOM'daki ilgili elementimizin $isTodayActive
değerine göre gösterilmesini/gösterilmemesini sağlayabiliriz.
<?php if($isTodayActive===true) { ?>
<a href="ornek.html">
<div class="ozelgunlerlinki">
Bu fırsatı kaçırmayın ! (resimler vs olacak)
</div>
</a>
<?php } ?>
Siz diyebilirsiniz ki:
"Özel tarih olunca anlayalım ama aynı zamanda bu özel tarihin adını da ekrana yazmak istersek ne yapabiliriz?"
Bu durumda $activeDates
değişkenimizi biraz daha geliştirmemiz gerekir:
$activeDates = [
['10-29', 'Cumhuriyet Bayramı'],
['1-1', 'Yılbaşı'],
['4-23', 'Ulusal Egemenlik ve Çocuk Bayramı'],
['5-19', 'Gençlik ve Spor Bayramı'],
];
Böylece 2 boyutlu bir dizi oluşturmuş olduk.
Şimdi bugünün aktif olup olmadığını tutan değişkenimize true
veya false
atamak yerine, bugün eğer özel günlerden biriyse bu özel günün ne olduğunu yazalım.
// Önce bugünün tarihini alalım:
$today = date("m-d");
// Henüz kontrol sağlamadan önce, bugünün aktif gün olup olmadığını tutacak değişkene boş string ("") verelim:
$isTodayActive = "";
// Şimdi tüm aktif günlere tek tek bakmak için bir döngü oluşturalım:
foreach($activeDates as $date) {
// Döngünün baktığımız elemanı ile bugün aynı mı?
if($date[0] == $today) {
// Aynıysa bugünün aktif olduğunu belirten değişkenimize o günün verisini tutan dizinin 2. elemanını verelim.
$isTodayActive = $date[1];
// Ve döngünün sonraki tarihlere bakmadan sonlanmasını sağlayalım.
break;
}
}
Böylece eğer bugün özel günlerden biriyse $isTodayActive
değişkeninde o günün adı yazıyor. Eğer değilse bu değişken boş string olarak kalmış demektir. Bu durumu if içinde kontrol edebiliriz.
<?php if($isTodayActive!=="") { ?>
<a href="ornek.html">
<div class="ozelgunlerlinki">
<?= $isTodayActive ?> gününe özel bu fırsatı kaçırmayın ! (resimler vs olacak)
</div>
</a>
<?php } ?>
Diyelim ki PHP ile şu şekilde tarihleri tutuyorsunuz:
$activeDates = [
'2022-10-29',
'2022-1-1',
'2023-4-23',
'2023-5-19',
];
Şimdi bugünün yukarıdaki tarihlerden biri olup olmadığını bulalım.
// Önce bugünün tarihini alalım:
$today = date("Y-m-d");
// Henüz kontrol sağlamadan önce, bugünün aktif gün olup olmadığını tutacak değişkene false verelim:
$isTodayActive = false;
// Şimdi tüm aktif günlere tek tek bakmak için bir döngü oluşturalım:
foreach($activeDates as $date) {
// Döngünün baktığımız elemanı ile bugün aynı mı?
if($date == $today) {
// Aynıysa bugünün aktif olduğunu belirten değişkenimizi true yapalım.
$isTodayActive = true;
// Ve döngünün sonraki tarihlere bakmadan sonlanmasını sağlayalım.
break;
}
}
Artık $isTodayActive
değişkenimiz true ise bugünün özel günlerden biri olduğunu anlayabiliyoruz.
Bu durumda DOM'daki ilgili elementimizin $isTodayActive
değerine göre gösterilmesini/gösterilmemesini sağlayabiliriz.
<?php if($isTodayActive===true) { ?>
<a href="ornek.html">
<div class="ozelgunlerlinki">
Bu fırsatı kaçırmayın ! (resimler vs olacak)
</div>
</a>
<?php } ?>
Siz diyebilirsiniz ki:
"Özel tarih olunca anlayalım ama aynı zamanda bu özel tarihin adını da ekrana yazmak istersek ne yapabiliriz?"
Bu durumda $activeDates
değişkenimizi biraz daha geliştirmemiz gerekir:
$activeDates = [
['2022-10-29', 'Cumhuriyet Bayramı'],
['2022-1-1', 'Yılbaşı'],
['2023-4-23', 'Ulusal Egemenlik ve Çocuk Bayramı'],
['2023-5-19', 'Gençlik ve Spor Bayramı'],
];
Böylece 2 boyutlu bir dizi oluşturmuş olduk.
Şimdi bugünün aktif olup olmadığını tutan değişkenimize true
veya false
atamak yerine, bugün eğer özel günlerden biriyse bu özel günün ne olduğunu yazalım.
// Önce bugünün tarihini alalım:
$today = date("Y-m-d");
// Henüz kontrol sağlamadan önce, bugünün aktif gün olup olmadığını tutacak değişkene boş string ("") verelim:
$isTodayActive = "";
// Şimdi tüm aktif günlere tek tek bakmak için bir döngü oluşturalım:
foreach($activeDates as $date) {
// Döngünün baktığımız elemanı ile bugün aynı mı?
if($date[0] == $today) {
// Aynıysa bugünün aktif olduğunu belirten değişkenimize o günün verisini tutan dizinin 2. elemanını verelim.
$isTodayActive = $date[1];
// Ve döngünün sonraki tarihlere bakmadan sonlanmasını sağlayalım.
break;
}
}
Böylece eğer bugün özel günlerden biriyse $isTodayActive
değişkeninde o günün adı yazıyor. Eğer değilse bu değişken boş string olarak kalmış demektir. Bu durumu if içinde kontrol edebiliriz.
<?php if($isTodayActive!=="") { ?>
<a href="ornek.html">
<div class="ozelgunlerlinki">
<?= $isTodayActive ?> gününe özel bu fırsatı kaçırmayın ! (resimler vs olacak)
</div>
</a>
<?php } ?>
MySQL ile işiniz olmasa da verdiğim kodu kendi kodunuza uygun hale getirebilirsiniz.
Anladığım kadarıyla cevabımdaki kodu kendi kodunuza entegre edecek düzeyde PHP bilmiyorsunuz.
Sizin kodunuzu görmeden yorum yapmak zor.
Olması gerektiği gibi yazmışsınız. Çok daha kısa görünsün isterseniz aynı işi yapan bir döngü kullanabilirsiniz:
$("body").on("click", ".modal_pen", function(){
Object.entries($(this).data()).map(data=>$("#"+data[0]).val(data[1]));
$('#Guncelle').modal('show');
});
Ama a tag'ınıza yine data attribute'lerini girmeniz gerekiyor.
https://stackoverflow.com/questions/40646588/error-it-isnt-possible-to-write-into-a-document-from-an-asynchronously-loaded
Burada doğru kabul edilen cevapta sorunu https://github.com/krux/postscribe ile çözdüklerini yazmışlar.
Yani sayfanıza şu kodu ekliyorsunuz:
<script src="https://cdnjs.cloudflare.com/ajax/libs/postscribe/2.0.8/postscribe.min.js"></script>
Sonra da belirttiğiniz script elementini sayfaya eklemek için şu yolu kullanıyorsunuz:
<div id="ad"><h5>Advertisement</h5></div>
<script type="text/javascript">
// jQuery used as an example of delaying until load.
$(function() {
// Build url params and make the ad call
postscribe("#ad", "<script src='https://ads-site.com/kod?v=1&site=2¶m=3'></script>");
});
</script>
Tabi kendi kodunuza göre düzenlemeniz gerek.
Denemedim ama çalışır herhalde...
sunucudaki php sürümünüzle localhost'taki php sürümünüz aynı veya yakın olmalı.
PHP sürümünüzü kolayca öğrenmek için bir PHP dosyası oluşturun ve içine <?php phpinfo();
yazıp kaydedin.
Bu dosyayı hem localhost'ta hem sunucuda tarayıcıdan açın ve iki sayfa arasındaki versiyon farklarını bulun.
MariaDB demişsiniz. Sorun veritabanı sürümlerinizden kaynaklanıyor da olabilir elbet. Locahost'ta bağlandığınız veritabanıyla sunucudan bağlandığınız veritabanı arasında versiyon farklılığı varsa bazı SQL komutları birinde çalışıp birinde çalışmıyor olabilir.
PHP'nin ne hata verdiği de önemli. Görünen hatayı yazarsanız daha detaylı cevap vermek mümkün olabilir.
Eğer sunucu hataları gösteremiyorsa, erişmeye çalıştığınız PHP sayfasının başına şu kodları yazmayı deneyebilirsiniz:
<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
Böylece sunucuda ayrıca bir ayar yapılmamışsa sayfanız hatayı gösterecek şekilde sonuç gösterecektir.
Denemedim ama stackoverflow.com/nasıl-senkron-http-istek-atabiliriz sorusuna verilen şu cevap iş görebilir:
Doğru kabul edilen cevap şu şekilde yazılmış:
open()
fonksiyonundaki 3. parametre asenkron istek göndermek içindir. Senkron istek atmak için false
olarak ayarlayabilirsin.
function handleButtonPress(e) {
var httpRequest = new XMLHttpRequest();
httpRequest.onreadystatechange = handleResponse;
httpRequest.open("GET", e.target.innerHTML + ".html", false);
httpRequest.send();
}
Siz XMLHttpRequest sınıfını kendi isteğinize göre kullanarak istek oluşturabilirsiniz.
Diyelim ki ürünün tarih verisini MySQL'den alıp $mysqlDate
değişkeninde atadınız.
$mysqlDate = "2022-10-28 21:45:51";
O halde $mysqlDate
değişkenindeki değerin "bugün" olup olmadığını anlamak için aşağıdaki kodlar iş görür.
$activeDate = date("Y-m-d", strtotime($mysqlDate));
$today = date("Y-m-d");
$isActiveDate = $activeDate == $today;
unset($activeDate, $today);
Böylece elinizde $isActiveDate
adlı bir değişken var.
Bu değişkene, eğer $mysqlDate
'te tutuğunuz tarih bugünse true
, değilse false
değeri atanmış durumda.
Bir <div>
'i bu değere göre göstermek istiyorsanız <div>
'i php if koşuluna sarabilirsiniz:
<div class="product">
<img class="img" source="<?=$productImg?>" />
<div>
<h1><?=$productName?></h1>
<div class="price"><?=$price?></div>
<?php if($isActiveDate) { ?>
<div>Bugün bu ürünün aktif günü!!!</div>
<?php } ?>
</div>
</div>
Axios'un senkron desteği yok. Axios mutlaka Promise dönmek üzere tasarlandı. Axios'u senkron yapmanın yolu olarak sizin de aklınıza gelmiş olabilecek yollardan başka bir yol yok.
Axios isteğinden sonra çalışacak tüm işlemleri bir fonksiyon içine alabilir ve axios'tan yanıt geldiğinde bu fonksiyonu çağırabilirsiniz.
Eğer kodunuz buna uyum sağlayamayacaksa axios'tan başka çözüm yollarına gitmelisiniz.
API istekleri için özellikle yazılmış bir makale var mı bilmiyorum.
Genel olarak sayfalarınızı nasıl cache'leyebileceğinizle ilgili aşağıdaki yazıyı buldum:
https://insta.gen.tr/php-cache-yapimi-tarayici-onbellekleme-kullanimi/
Burada API isteklerinizi değil sayfalarınızı cache'liyorsunuz. Daha detaylı bir açıklama yazmak için benim vaktim yok ne yazık ki.