Geçenlerde bir arkadaş paylaşmıştı burada yine, sonuna time yerine o dosyanın son değiştirilme tarihini eklemek daha mantıklı gibi geldi bana. Bakınız filemtime() (php)
<?php
$markaDurum = $markacek['marka_durum'] == 1;
?>
<button id="<?= $markacek['marka_id'] ?>" class="btn btn-<?= $markaDurum ? 'success' : 'danger' ?> btn-circle btn-sm aktifpasif"><i class="fas fa-<?= $markaDurum ? 'check' : 'times' ?>"></i></button>
$(function() {
$(this).on("click", '.aktifpasif', function() {
let marka_id = $(this).attr('id'),
marka_stat = $(this).hasClass('btn-success') ? 'marka_pasif' : 'marka_aktif';
$.ajax('islem.php', {
type: "POST",
data: {
marka_stat:marka_stat,
marka_id:marka_id},
success: function(e){
console.log(e)
$(this).toggleClass('btn-success btn-danger')
$(this).children('i').toggleClass('fa-check fa-times')
}.bind(this),
error: function(e){
alert(e);
}
});
});
});
Yine de markanın aktif veya pasif olduğunu arka planda kontrol etmenizi öneririm. Veri tabanında aktifse pasif, pasif ise aktif yapın
Javascript tarafında php de yapılan bir işlem sonucu aksiyon alabilmek için php tarafının bir yanıt döndürmesi gerekir. Ajax tarafında kullanıcı ormu gönder dediği anda bir beforeSend fonksiyonu ile 'yükleniyor', 'Lütfen bekleyin..' tarzı uyarı verdirilebilir. Sonrasında success ve/veya error fonksiyonunda (veya done ve/veya catch motodunda) işlemin tamamlandığını yakalanabilir. php tarafından bir yanıt dönmezse success durumunda en azından javascript sonucun ne olduğunu bilemez. Belki gelen herhangi bir yanıt yoksa sayfayı yine de yenilemek isteyebilirsin. Php'den yanıt gelirse de yanıtın da json şeklinde olması işinizi daha kolaylaştırabilir. Örneğin
$response = [
'status' => true,
'text' => 'İşlem başarılı' // Veya javascript tarafından ekrana bastırmak isteyeceğiniz herhangi bir yazı
];
// Başarısız ise de
$response = [
'status' => false,
'text' => 'Hata oluştu'
];
echo json_encode($response);
Ajax için de dataType: 'json' yazarsanız success fonksiyonunda yakalaması daha kolay olur.
$.ajax('ajax.php', {
data: {
veri: ...
},
dataType: 'json'
}).done(response => {
if (response.status){
// sonuç başarılı olmuşsa yapılacak işlemler
// response.text i ekrana yazdır
} else {
// php den gelen yanıt olumsuz ise yapılacak işlemler
}
}).catch(err => {
// ajax işleminde meydana gelebilecek hatalar
})
Muhtemelen zaten bildiğiniz şeyleri anlattım ama kullanıcıya bilgi vermek istiyorsanız php nin bir yanıt döndürmesi gerektiğini anlatmak istedim. Dönmezse de javascript in bunu anlayıp ona göre hareket etmesi gerekir.
Anlayabileceğini pek zannetmiyorum ama en azından bi okursun.
localStorage e o yazdığın gibi bir integer değer kaydedemezsin, otomatik olarak string e dönüştürülür. Ve yine localstorage üzerinde doğrudan işlem yapamazsın. Önce getItem ile değeri alacaksın. Yeni sayı ile toplayıp yeniden kayıt edeceksin. Tabii Toplama işlemi senin istediğin şekilde yapılabilmesi için o aldığın sayıyı parseInt fonksiyonundan geçirmen gerekiyor önce. Anlatmak yerine direkt kod bekliyorsun biliyorum, ama acemi olmayan yazılımcı bu anlattıklarımı koda dökebilir.
Bu çocuk sıkıntılı, kaç defa bir şeyler yazayım dedim gönderilerine ama huzuru bozan biri olmak istemedim.
Tamam doğru yapıyorsun, fakat sorun şu ki prototurk.com anasayfasında class ı etiket olan bir h3 elemanı yok, hatayı ondan dolayı alıyorsundur.
Hata almamak için şöyle bir yapı kullanabilirsin. Eğer eşleşme varsa çalışır.
if (preg_match("@<h3 class='etiket'>(.*?)</h3>@", $sayfa, $result))
print_r($result);
Kardeş kusura bakma, senin veri işlemekten bihaber olduğunu hesaba katamadım, benim hatam
Tamam olmuş işte. Gerisini sen halledip img tag i içerisinde src nin içine yazdıracaksın
Mobilden yazdığım için o kadar yazabildim