php tarafından html döndürüp onu javascript ile basmak en doğrusu. örneğin comment.php
diye bir dosyan olsun.
<div class="comment">
<div class="user"><?=$comment['username']?></div>
<div class="comment">
<?=$comment['content']?>
</div>
</div>
bu senin hem normalde sayfadaki yorumları gösterdiğin şablonun hem de ajax ile yeni bir yorum eklendiğinde döndürüp göstereceğin şablonun olacak.
php tarafına ajax ile istek attın, yorumunu veritabanına ekledin diyelim. Basit bir şekilde şöyle simüle edip htmli geriye döndürebilirsin:
$username = 'test'
$content = 'yorum mesaji'
// db insert islemleri
// buralari sen halladers'n
$comment = [
'username' => $username,
'content' => $content
];
ob_start();
require __DIR__ . '/comment.php';
$output = ob_get_clean();
echo json_encode([
'comment_html' => $output,
'message' => 'yorum basariyla eklendi'
]);
yukarıdaki gibi bir ajax php kodun olacak. sonuç olarak buraya istek atınca gelen datayı alıp basacaksın.
function addComment() {
const username = document.getElementById('username'),
content = document.getElementById('content')
const formData = new FormData()
formData.append('username', username)
formData.append('content', content)
fetch('/ajax.php', {
method: 'post',
body: formData
})
.then(res => res.json())
.then(res => {
console.log(res.comment_html) // gonderdigin html kodu
// bunu artik append ile nereye eklemek istiyorsan eklersin
})
}
elbette örneği kendine göre uyarlayıp düzenlemen gereken yerleri kendine göre düzenlemelisin.
bu dedigin olay data yuklenene kadar gosterilen loading componentleri, sorun su ki php sayfalarda sayfa yuklenmeden zaten daha hicbir data basamiyorsun ekrana, yani bunu php ile yapmanin bir mantigi yok cunku yolu yok.
eger php'yi sadece api olarak kullandigin bir projen olursa ve front-end tarafini bagimsiz olarak javascript ile gelistirirsen o zaman bunu kullanmak icin bir sebebin olabilir, onun icinde bir cok hazir kutuphane var kolayca loaderlari olusturabilecegin
ben de farkli bir ornek vereyim:
console.log(
firstArray.reduce((acc, curr) => [...acc, ...secondArray.reduce((a, c) => [...a, [curr, c]] ,[])] ,[])
)
tarihleri tuttugun kolon adinin tarih
oldugunu varsayarsak soyle bir sql kodu isini gorecektir:
select * from tablo_adi
where TIMESTAMPDIFF(SECOND, tarih, now()) > 30;
ya da soyle bir sey kullanabilirsin:
select * from tablo_adi
where tarih > (now() - INTERVAL 30 SECOND);
sanirim su ust taraf seni zorlayan, soyle bir ornek yaptim isine yarayabilir:
bir fonksiyon olusturup geriye dondurebilirsin:
function getStatus($status) {
switch($status) {
case 0:
return 'Siparis olusturuldu';
case 1:
return 'Siparis farkli bir durumda';
default:
return 'Durum bulunamadi';
}
}
$columns = array(
array('db' => 'id', 'dt' => 0),
array('db' => 'siparisTarih','dt' => 1 , "formatter" =>function($siparisTarih){
return turkcetarih_formati('j F Y , l, H:i:s',$siparisTarih);
}),
array('db' => 'siparisNo','dt' => 2 , "formatter" =>function($siparisNo){
return "<a href='' class='btn btn-primary'>MZR{$siparisNo}</a>";
}),
array('db' => 'siparisUser', 'dt' => 3),
array('db' => 'siparisFirma', 'dt' => 4),
array('db' => 'siparisFirma', 'dt' => 5),
array('db' => 'siparisDurum','dt' => 6 , "formatter" =>function($siparisDurum, $row){
return getStatus($siparisDurum);
}),
);
senin hatan client-side tarafta server-side bir işlem yapmaya çalışmak. yapacağın şey, bilgileri güncellediğin php tarafında session'a yeni değerleri atamak.
$guncelle=$VT->SorguCalistir("UPDATE kullanicilar ","SET adsoyad=?, kullanici=?, mail=? WHERE ID=?",array($adsoyad,$kullanici,$mail,$ID),1);
if ($guncelle!=false)
{
$jsoncikti = array( "islem" => true, "sonuc" => "Bilgiler Başarıyla Güncellendi", "adsoyad" => $adsoyad, "kullanici" => $kullanici, "mail" => $mail );
$_SESSION['mail'] = $mail; // bu sekilde
}
else
{
$jsoncikti = array( "islem" => false, "sonuc" => "Bir sorun oluştu !!!" );
}
şöyle denediniz mi:
$barcode = '8680012312111';
preg_match_all('#"barcode":"' . $barcode . '","price":(.*?)},{"itemNumber"#si',$veri2,$cikti2);
eger w-32
yerine !w-32
yazarsan çalışır ancak tailwind'de bu durumu engellemek için özel yazılan class'ları @layer
içinde yazmamızı istiyor tam da bu gibi durumlar için. Yani şöyle yazarsan:
@tailwind base;
@tailwind components;
@tailwind utilities;
@layer components {
.event-button-secondary {
height: 114px;
max-width: 420px;
@apply rounded-lg font-inter text-base-bold border-none bg-event-text-300 text-event-text-200 hover:bg-event-text-300 hover:text-event-text-200;
}
}
sorunsuz çalışır.
client tarafında hiçbir şeyi engelleyemezsin, bu yüzden server tarafında kontrollerini doğru şekilde yapman gerekir.