v2.5.2
Giriş yap

PHP seçilen değere göre otomatik doldurma

resat
417 defa görüntülendi

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>

trsherlock
624 gün önce

İşte iken aşağıdaki gibi yapmanı önerecektim fakat fırsat bulamadım. Aşağıdaki gibi bir düzen oluşturursan.
Tekrar post isteği atmana gerek kalmayacaktır. Yalnız test edemedim bazı yerleri yanlış yorumlamış olabilirim.
Bir hata ile karşılaşırsan yardımcı olurum.

<?php
require_once 'inc/db.php';

$urunsor = $db->query("SELECT * FROM urunler ORDER BY id DESC", PDO::FETCH_ASSOC);
foreach($urunsor as $cek) {
    $urunler[] = $cek;
}
?>
<script>
    let $urunler = <?= json_encode($urunler) ?> // Php ile gelen diziyi json'a çevirerek js değişkenine ata
    tahminiCikti = [
        {
            "id": 1,
            "ad": "Lacivert",
            "barkod": "00000001",
            "fiyat": 500.50
        },
        {
            "id": 2,
            "ad": "Yeşil",
            "barkod": "00000002",
            "fiyat": 300.50
        }
    ];
</script>
<!-- Select etiketi -->
<body>
<select name="urun_id[]" class="form-select" data-search="on" required>
    <option>Ürün Seçiniz</option>
    <?php foreach ($urunler as $cek): ?>
        <option value="<?=$cek['id']?>"><?=$cek['ad']?></option>
    <?php endforeach ?>
</select>
</body>
<script>
    // bir önceki cevabımda dizi olarak oluşan veri girişi etiketlerine ulaşmak için name=barkod[] tırnak içine almak gerekiyormuş köşeli parantez yoksa gerek yok.
    $("select[name='urun_id[]']").on("change",(e)=>{
        $urun = $urunler.find(f=> f.id == e.target.value)
        $(e.target).parent().parent().find("input[name='barkod[]']").val($urun.barkod);
        $(e.target).parent().parent().find("input[name='fiyat[]']").val($urun.fiyat);
    })
</script>