PHP - Inputlardaki Verilerle Sayısal İşlem Yapıp Veritabanına Ekleyemiyorum
Merhaba, php ile bir proje yapıyordum fakat bir noktada takıldım.
Burada yapmak istediğim ama bir türlü yapamadığım işlem, girdileri bir formülle hesaplamak ve ortaya çıkan sonucu da veritabanına kaydetmek.
Olayın mantığını örneklemem gerekirse;
item maliyet
, item_gider
, item_k_t
ve item_c_t
name'li inputlardaki sayısal verilerle işlem yapıp o işlemin sonucunu veritabanına eklemek istiyorum.
Bu konu hakkında birkaç farklı deneme yaptım fakat başarısız oldum.
- İşlemin sonucunu yazdıracağım hidden div'ler ekledim ve bir butona verdiğim 'name' ile işlemi yaptırıp echo komutu ile value vermeye çalıştım. Fakat butona bastığımda sayfa yenilendiği için sonucu verse bile diğer inputlarda bulunan veriler siliniyordu.
- Veritabanına post ederken işlem yapmayı denedim.
Şu şekilde;
'item_t' => $_POST['item_maliyet'] + $_POST['item_gider']
İşi özetlemek gerekirse saatlerdir uğraşıyorum ve baya canımı sıktı 😁
Tam anlamıyla anlatamadığımın farkındayım fakat yardımcı olacak varsa şimdiden teşekkür ederim.
Kodlar;
<?php
if(isset($_POST['ekle'])){
$sorgu = $db->prepare("INSERT INTO items SET
item_name=:item_name,
item_barkod=:item_barkod,
item_stok=:item_stok,
item_desc=:item_desc,
item_maliyet=:item_maliyet,
item_gider=:item_gider,
item_kar=:item_kar,
item_c_t=:item_c_t,
item_c_h=:item_c_h,
item_c_n=:item_c_n,
item_c_g=:item_c_g,
item_k_t=:item_k_t,
item_k_h=:item_k_h,
item_k_n=:item_k_n,
item_k_g=:item_k_g
");
$sonuc = $sorgu->execute(array(
'item_name' => $_POST['item_name'],
'item_barkod' => $_POST['item_barkod'],
'item_stok' => $_POST['item_stok'],
'item_desc' => $_POST['item_desc'],
'item_maliyet' => $_POST['item_maliyet'],
'item_gider' => $_POST['item_gider'],
'item_kar' => $_POST['item_kar'],
'item_c_t' => $_POST['item_c_t'],
'item_c_h' => $_POST['item_c_h'],
'item_c_n' => $_POST['item_c_n'],
'item_c_g' => $_POST['item_c_g'],
'item_k_t' => $_POST['item_k_t'],
'item_k_h' => $_POST['item_k_h'],
'item_k_n' => $_POST['item_k_n'],
'item_k_g' => $_POST['item_k_g'],
'item_t' => $_POST['item_k_g']
));
if($sonuc) {
header("location:items.php?add=ok");
}else{
header("location:items.php?add=no");
}
}
?>
<div class="container">
<div class="row">
<div class="col-md-12">
<div class="card">
<div class="card-header"><h4>Yeni Ürün Girişi</h4></div>
<div class="card-body">
<form action="" method="POST">
<h5><strong>1- Ürün Bilgilerini Girin</strong></h5>
<br>
<div class="form-row">
<div class="col-md-6 form-group">
<label>Ürün Adı</label>
<input type="text" autocomplete="off" class="form-control" name="item_name">
</div>
<div class="col-md-6 form-group">
<label>Barkod No</label>
<input type="text" autocomplete="off" class="form-control" name="item_barkod">
</div>
</div>
<div class="form-row">
<div class="col-md-6 form-group">
<label>Marka</label>
<select name="brand" class="form-control">
<?php
$sorgu = $db->prepare("SELECT * FROM markalar");
$sorgu->execute();
while($marka = $sorgu->fetch(PDO::FETCH_ASSOC)){ ?>
<option value="<?= $id['id']?>"><?= $marka['marka_ad'] ?></option>
<?php }
?>
</select>
</div>
<div class="col-md-6 form-group">
<label>Stok Bilgisi</label>
<input type="text" autocomplete="off" class="form-control" name="item_stok">
</div>
</div>
<div class="form-row">
<div class="col-md-12 form-group">
<label>Ürün Hakkında</label>
<textarea name="item_desc" autocomplete="off" class="form-control" rows="1"></textarea>
</div>
</div>
<hr>
<br>
<h5><strong>2- Ürün Satış Bilgilerini Girin</strong></h5>
<br>
<div class="form-row">
<div class="col-md-4 form-group">
<label>Geliş Fiyatı</label>
<div class="input-group">
<div class="input-group-text">₺</div>
<input type="text" autocomplete="off" class="form-control" name="item_maliyet">
</div>
</div>
<div class="col-md-4 form-group">
<label>Gider</label>
<div class="input-group">
<div class="input-group-text">₺</div>
<input type="text" autocomplete="off" class="form-control" name="item_gider">
</div>
</div>
<div class="col-md-4 form-group">
<label>Kar</label>
<div class="input-group">
<div class="input-group-text">₺</div>
<input type="text" autocomplete="off" class="form-control" name="item_kar">
</div>
</div>
</div>
<hr>
<br>
<h5><strong>3- Ürüne Ait Kargo Fiyatlarını Satış Platformlarına Göre Girin</strong></h5>
<br>
<div class="form-row">
<div class="col-md-3 form-group">
<label>Trendyol</label>
<div class="input-group">
<div class="input-group-text">₺</div>
<input type="text" autocomplete="off" class="form-control" name="item_c_t">
</div>
</div>
<div class="col-md-3 form-group">
<label>Hepsiburada</label>
<div class="input-group">
<div class="input-group-text">₺</div>
<input type="text" autocomplete="off" class="form-control" name="item_c_h">
</div>
</div>
<div class="col-md-3 form-group">
<label>N11</label>
<div class="input-group">
<div class="input-group-text">₺</div>
<input type="text" autocomplete="off" class="form-control" name="item_c_n">
</div>
</div>
<div class="col-md-3 form-group">
<label>Gittigidiyor</label>
<div class="input-group">
<div class="input-group-text">₺</div>
<input type="text" autocomplete="off" class="form-control" name="item_c_g">
</div>
</div>
</div>
<hr>
<br>
<h5><strong>4- Ürüne Ait Komisyon Oranlarını Yüzde Cinsinden Girin</strong></h5>
<br>
<div class="form-row">
<div class="col-md-3 form-group">
<label>Trendyol</label>
<div class="input-group">
<div class="input-group-text">%</div>
<input type="text" autocomplete="off" class="form-control" name="item_k_t">
</div>
</div>
<div class="col-md-3 form-group">
<label>Hepsiburada</label>
<div class="input-group">
<div class="input-group-text">%</div>
<input type="text" autocomplete="off" class="form-control" name="item_k_h">
</div>
</div>
<div class="col-md-3 form-group">
<label>N11</label>
<div class="input-group">
<div class="input-group-text">%</div>
<input type="text" autocomplete="off" class="form-control" name="item_k_n">
</div>
</div>
<div class="col-md-3 form-group">
<label>Gittigidiyor</label>
<div class="input-group">
<div class="input-group-text">%</div>
<input type="text" autocomplete="off" class="form-control" name="item_k_g">
</div>
</div>
</div>
<hr>
<br>
<div class="text-center">
<button class="btn btn-primary btn-lg" type="submit" name="ekle">Kaydet</button>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
Merhaba dostum sanırım problemini anladım. Umarım yardımcı olabilirim.
Sana tavsiyem hesaplama işini eğer aynı sayfada yapmak istiyorsan jquery'den yararlanabilirsin.
Bu sayede sayfada girilen verilere göre anlık olarak canlı bir şekilde göstertebilirsin.
Senin için örnek bir kod yazdım.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
<title>Document</title>
</head>
<body>
<div class="row" style="margin-bottom:25px;">Alış Fiyatı<input type="text" autocomplete="off" class="form-control" name="item_maliyet" placeholder="Maliyet Giriniz: " id="maliyet"><br></div>
<div class="row" style="margin-bottom:25px;">Satış Fiyatı<input type="text" autocomplete="off" class="form-control" name="item_c_t" placeholder="Satış Tutarı Giriniz: " id="satis-fiyat"><br></div>
<div class="row">Komisyon <input type="text" autocomplete="off" class="form-control" name="item_k_t" placeholder="Yüzde Giriniz: " id="komisyon"><br></div>
<h4>Net Kar: <div class="sonuc"></div></h4>
</body>
</html>
$(document).ready(function(){
$('#komisyon').keyup(function(){
const maliyet = $('#maliyet').val();
const satisFiyati = $('#satis-fiyat').val();
const komisyon = $('#komisyon').val();
const karTL = (satisFiyati - ((satisFiyati*komisyon)/100)) - maliyet;
$('.sonuc').html(karTL);
});
});
Bu sayede girilen verilere göre işlem yaptırırken butona basmana gerek kalmayacak ve kullanıcı matematik hesaplamalarınıda canlı bir şekilde görebiliceği için daha kullanışlı bir yapıya sahip olucak.
Kodlar üzerinde farkedicegin üzere komisyon girildikten sonra hesaplama işlemi aktif oluyor. En son çünkü hesaplama ona göre yapılır.
Bu arada kodların çalışması için jquery kütüphanesini dahil etmeyi ihmal etme lütfen.
Kolay gelsin umarım doğru anlayıp yorumlayabilmişimdir :)
İyi çalışmalar.