PHP seçilen değere göre otomatik doldurma
Merhaba arkadaşlar,
Bir formum var yapmak istediğim Ürün seçiniz kısmından bir ürün seçilirse barkod ve fiyat kısmının ürüne göre otomatik dolmasını istiyorum. Fakat ürün seçmezde barkod no girerse bu seferde ürün ve fiyatın otomatik olarak gelmesini istiyorum. Nasıl yapabilirim. Yardımcı olabilecek arkadaşlar varmıdır. Teşekkürler
<div class="row mb-3">
<div class="col-md-3">
<select name="urun_id[]" class="form-select" data-search="on" required>
<option>Ürün Seçiniz</option>
<?php $urunsor = $db->query("SELECT * FROM urunler ORDER BY id DESC", PDO::FETCH_ASSOC); ?>
<?php foreach ($urunsor as $cek): ?>
<option value="<?=$cek['id']?>"><?=$cek['ad']?></option>
<?php endforeach ?>
</select>
</div>
<div class="col-md-3">
<input type="text" class="form-control" name="barkod" placeholder="Barkod" required>
</div>
<div class="col-md-2">
<input type="number" class="form-control" name="fiyat" placeholder="Fiyat" required>
</div>
<div class="col-md-2">
<input type="number" class="form-control" name="adet" placeholder="Miktar" required>
</div>
<div class="col-md-2">
<button class="btn btn-danger w-100 remove_item_btn">Sil</button>
</div>
</div>
Js ile Php değişkenlerini değiştiremeyeceğin için js ile post edip gelen değeri yakalaman gerekecek.
Daha önceki soruna verdiğim cevapta hatalı bir yorum yapmışım. O konuyu sonra açıklarım.
Php arka planda kodları çalıştırıp sonucu ekrana döker. Yüklenmiş sayfada tekrar php kodu çalıştıramazsın.
O yüzden ek bir php sayfasına js ile istek atman gerekiyor.
<script>
$(".select").on("change",(e)=>{
$.post("urunler.php", {urunid = 1}, (resp)=>{
$(e.target).parent().parent().find("input[name=barkod]").val(resp.barkod);
$(e.target).parent().parent().find("input[name=fiyat]").val(resp.fiyat);
})
})
</script>
<?php
$urun = $db->query("SELECT barkod, fiyat FROM urunlar WHERE id=$_POST[urunid]", PDO::FETCH_ASSOC);
// başka bilgi istemiyrosan sadece barkod, ve fiyat bilgisini sorgula
foreach($urun as $cek) {
echo json_encode($cek); // {"bakrod": "00000000", "fiyat": "350"} benzeri çıktı gelecek
}
?>