• 18-12-2019, 14:07:35
    #1
    Herkese merhaba, ben kendimce ufak tefek kodlamalar ile ihtiyacıma göre bir kodlama yapıyorum. Aşağıda resimdeki formda bir yerde takıldım. Mesela resimde murat apartmanındaki kişilerin listesi ve payını mysqldan çekiyor ve kişileri veritabanına borçlu olarak kayıt ediyor. Resimde gördüğünüz gibi 2100 TL yakıt parasını girdim ve bunu sakinlere arsa payına göre bölüştürmek istiyorum. Fakat sadece ilk sıradaki inputu hesaplıyor (resimde 300 tl olarak). Diğerlerini de "gelir miktarı/toplam pay*mülk pay" olarak 2 nolu daireye 1200, 3 nolu daireye 600 yazdırmak istiyorum. Günlerdir uğraşıyorum bir yapamadım. Daire no ad soyad ve payda sıkıntı yok onları döngü ile çekiyor fakat gelir miktarı kısmında sadece ilk sıradakini hesaplıyor geri kalanını hesaplamıyor burada nasıl bir yol izleyeceğiz döngüye nasıl sokabilirim bunu. Kodlar aşağıda mevcut.
    <?php
    $liste = $db->prepare("SELECT * FROM mulkler WHERE apartman_id = '$_POST[apartman_id]'");
    $liste->execute();
    ?>
    <div class="form-group col-md-3">
    <label>Daire</label>
    </div>
    <div class="form-group col-md-2">
    <label>Pay</label>
    </div>
    <div class="form-group col-md-3">
    <label>Gelir Miktar</label>
    </div> <?php
    foreach ($liste as $mulkcek) { ?>
    <div class="form-group col-md-3">
    <input disabled type="text" class="form-control" name="mulk_id[<?php echo $mulkcek['mulk_id'] ?>]" value="<?php echo $mulkcek['mulk_no'].' - '. $mulkcek['mulk_sakini'] ?>">
    </div>
    <div class="form-group col-md-2">
    <input type="text" class="form-control" value="<?php echo $mulkcek['mulk_arsapayi'] ?>" id="mulk_arsapayi">
    </div>
    <div class="form-group col-md-3">
    <input type="text" class="form-control" name="gelir_miktar[<?php echo $mulkcek['mulk_id'] ?>]" id="gelir_miktar">
    </div>
    
    <?php
    $apartmanpaysor = $db->prepare("SELECT SUM(mulk_arsapayi) FROM mulkler where apartman_id='$_POST[apartman_id]'");
    $apartmanpaysor->execute();
    $apartmantoplampay = $apartmanpaysor->fetchColumn();
    
    $apartmanmulksor = $db->prepare("SELECT mulk_id FROM mulkler where apartman_id='$_POST[apartman_id]'");
    $apartmanmulksor->execute();
    $apartmanmulksayisi = $apartmanmulksor->rowCount();
    
    $apartmanaidatsor = $db->prepare("SELECT * FROM apartmanlar where apartman_id='$_POST[apartman_id]'");
    $apartmanaidatsor->execute();
    $apartmanaidat = $apartmanaidatsor->fetch(PDO::FETCH_ASSOC)
    ?>
    
    script type="text/javascript">
    function PaySec(el) {
    window[el.options[el.selectedIndex].value]();
    }
    
    function Elle() {
    document.getElementById('gelir_miktar').value = '';
    }
    
    function Arsa_Payi() {
    s1= parseInt(document.getElementById('gider_miktar').value);
    s2= parseInt(document.getElementById('mulk_arsapayi').value);
    document.getElementById('gelir_miktar').value = s1/<?php echo $apartmantoplampay; ?>*s2;
    }
    
    function Esit() {
    s1= parseInt(document.getElementById('gider_miktar').value);
    document.getElementById('gelir_miktar').value = s1/<?php echo $apartmanmulksayisi; ?>;
    }
    
    function Endeks() {
    alert("Yapiliyor");
    }
    
    function Aidat() {
    s1= parseInt(document.getElementById('gider_miktar').value);
    s2= parseInt(document.getElementById('mulk_arsapayi').value);
    document.getElementById('gelir_miktar').value = <?php echo $apartmanaidat['apartman_aidatucreti']; ?>;
    }
    
    </script>
        <?php } ?>
  • 18-12-2019, 16:06:33
    #2
    Eve geçiyim bakacağım
  • 29-12-2019, 11:53:41
    #3
    Arkadaşlar sorunu henüz cozebilmis değilim.
  • 29-12-2019, 14:04:08
    #4
    apartmantoplampay ve apartmanmulksayisi değerleri için tabloda tekrar tekrar sorgu yapmanıza gerek yok.
    Tek sorguda bu verileri aşağıda paylaştığım gibi elde edebilirsiniz.

    Gider miktar bölümündeki input a aşağıdaki onchange elementini ekleyin;
    onchange="expenseAmountChanged(this)"
    Ornek;
    <input type="number" name="gider" value="" onchange="expenseAmountChanged(this)">

    https://codeshare.io/5Dqy6p
  • 30-12-2019, 09:42:07
    #5
    Gördüğüm kadarıyla foreach ile bütün inputların ID değerleri aynı. Bir sayfada aynı Id den birden fazla olamaz. Onları Class olarak değiştirirsen ve tabiki alttaki js leride ona göre düzenlersen problemin çözülür diye düşünüyorum
  • 03-01-2020, 23:25:31
    #6
    coder63 adlı üyeden alıntı: mesajı görüntüle
    apartmantoplampay ve apartmanmulksayisi değerleri için tabloda tekrar tekrar sorgu yapmanıza gerek yok.
    Tek sorguda bu verileri aşağıda paylaştığım gibi elde edebilirsiniz.

    Gider miktar bölümündeki input a aşağıdaki onchange elementini ekleyin;
    onchange="expenseAmountChanged(this)"
    Ornek;
    <input type="number" name="gider" value="" onchange="expenseAmountChanged(this)">

    https://codeshare.io/5Dqy6p
    Dediğiniz yöntemden yola çıkarak sonunda sorunumu çözdüm çok teşekkürler.