Şu aşağıdaki kodlara bir bakabilir misiniz? Sepetteki ürün adedi ile fiyatını çarpmaya çalışıyorum. "nan" hatası veriyordu. Aşağıdaki kod ile düzeldi. Ama yine ilk ürün için çalışıyor kod. Diğer ürünlerde "nan" hatası veriyor. Bir de bu ürünleri siteye ilk eklediğimde "urun adedi" diye bir alan yok. Ürünü "sepete ekle" butonuna tıkladığımda sepetim sayfasına gidiyor bu ürün. Sepete eklenen ürünler için "ürün adedi" el ile giriliyor. El ile girmiş olduğum ürün adedi ile fiyatı çarpmaya tabi tutmak istiyorum. Büyük ihtimalle bu yüzden "nan" değeri veriyor.
<?php
$sepeturunlerigoster = $db->query("SELECT * FROM sepeteeklenenurunler");
while ($urunekle = $sepeturunlerigoster->fetch()) {
?>
<div class="sepetimurunleri-sayfasi-urunadi">Ürün Adı:
<?php echo $urunekle['urun_adi']; ?>
</div>
<div class="sepetimurunleri-sayfasi-fiyati">Fiyatı:
<input type="number" id="urunfiyati" class="urunfiyati" value="<?php echo $urunekle['urun_fiyati']; ?>" />
TL
</div>
<div class="sepetimurunleri-sayfasi-adet-sayisi">Adedi:
<input type="number" id="urunadedi" class="urunadedi" value="<?php echo $urunekle['urun_adedi']; ?>" />
</div>
<button onclick="fiyatal()" id="fiyat" value="">Güncelle</button>
<script>
function fiyatal() {
var fiyatt = document.getElementById('urunfiyati').value;
var adett = parseInt(document.getElementById('urunadedi').value);
var sonuc = fiyatt*adett;
document.getElementById('toplamaalani').innerHTML = sonuc;
}
</script>
Peki ne yapmam lazım anlamadım. Bir de birden fazla input'un değerini id ile alamıyor muyuz? Bu arada class ile almak istediğimde de "undefined" hatası veriyor. Evet input'u döngünün dışına çıkardığımda verdiğim bir sayıyı ekrana yazdırıyor. Ama benim almam gereken değer, select ile listelettirdiğim yerde.
Bu kodları uyguladığımda şöyle bir sonuç veriyor. Yani "sepete ekle" yi tıklayınca resimdeki gibi oluyor.
https://www.hizliresim.com/irlh7fu
Tamam. Ürünlerimi listeletiyorum. 1. ürünün "sepete ekle" butonuna tıklayınca form aracılığı ile veritabanına kayıt edecek ve sayfa tekrar yüklenecek. Yani formun "action" alanına "urunlerim.php?urunekle=" gibi yazdığımda ve insert ettiğimde, sayfa yüklendiğinde sadece 1 ürün gözüküyor. Bütün ürünlerin listelenmesi lazım. Yani "post" işlemi yapıldığında sayfa aynı şekilde yüklensin istiyorum. Nasıl yapabiliriz acaba?
Tekrar merhaba. Sayfayı form aracılığıyla gönderdikten sonra id ye göre insert işlemi yapmam lazım. Dediğiniz gibi "get" metoduyla insert yaptım. Insert sonrası sayfayı tekrar yüklemek istiyorum. Ama sayfa id'li üründe kaldı. Header metodu da işe yaramıyor. Ne yapmam gerekli acaba?
<form action="skinserisiurunleri.php" method="POST">
<input type="text" style="display:none;" name="resim" style="" value="<?php echo $skinserisiurunleri['urun_resim']; ?>" />
<input type="text" style="display:none;" id="ad" name="ad" style="" value="<?php echo $skinserisiurunleri['urun_adi']; ?>" />
<input type="text" style="display:none;" id="stok" name="stok" style="" value="<?php echo $skinserisiurunleri['urun_stokkodu']; ?>" />
<input type="text" style="display:none;" id="fiyat" name="fiyat" style="" value="<?php echo $skinserisiurunleri['urun_fiyati']; ?>" />
<button type="submit" id="id" onclick="" value="">Sepete Ekle</button>
<!-- <input type="submit" id="button" name="ekle" value="Sepete Ekle" /> -->
</form>
<?php
if($_POST) {
$id = $_POST['ekle'];
$urunresim = $_POST['resim'];
$urunstokkodu = $_POST['stok'];
$urunfiyati = $_POST['fiyat'];
$urunadi = $_POST['ad'];
$skinserisiurunlerigoster = $db->query("SELECT * FROM urun WHERE urun_id='$id'");
$sepeteeklenenurunlergoster = $db->prepare("INSERT INTO sepeteeklenenurunler SET
urun_resim = :urunresim, urun_stokkodu = :urunstokkodu,
urun_fiyati = :urunfiyati, urun_adi = :urunadi");
$sepeteeklenenurunler = $sepeteeklenenurunlergoster->execute([
':urunresim' => $urunresim,
':urunstokkodu' => $urunstokkodu,
':urunfiyati' => $urunfiyati,
':urunadi' => $urunadi
]);
if($sepeteeklenenurunler) {
header("Location:skinserisiurunleri.php");
} else {
echo "Kayıt başarısız!";
}
}
}
?>
Merhabalar. Şimdi olayı şöyle anlatayım. 1. ürünün id si 315, 2. ürünü id si 316. İlk ürünün butonuna tıklarsam veritabanına ilk ürün; 2. ürünün butonuna tıklarsam 2. ürün veritabanına kayıt olacak. Bunun çözümünün butona id değeri vermekten geçtiğini ve o id değeri ile veritabanına kayıt yapabileceğimi düşünüyorum. Yapmak istediğim bu. Veritabanına ajax ile kayıt ediyorum ama sadece 1. ürün kayıt oluyor. İkinci ürünün butonuna tıkladığımda da birinci ürünü kayıt ediyor.
Arkadaşlar. Sepete ekleme işlemlerini yapıyorum ama sadece ilk ürün ekleniyor. "get" ile "id" yi gönderip id'ye göre eklettirmem lazım. "urunler.php" sayfasında butonun değerini alabiliyorum ama "sepetim.php" sayfasına nasıl gönderip get ile insert işlemini nasıl yapabilirim bilemedim. Kodlar aşağıda.
urunler.php
<div class="sepeteekle-butonu">
<button id="sepetislemi" onclick="" value="<?php echo $skinserisiurunleri['urun_id']; ?>">Sepete Ekle</button>
</div>
<div id="sepeteekle">
<input type="text" name="resim" value="<?php echo $skinserisiurunleri['urun_resim']; ?>" />
<input type="text" name="stok" value="<?php echo $skinserisiurunleri['urun_stokkodu']; ?>" />
<input type="text" name="fiyat" value="<?php echo $skinserisiurunleri['urun_fiyati']; ?>" />
<input type="text" name="ad" value="<?php echo $skinserisiurunleri['urun_adi']; ?>" />
</div>
<script>
$("button").click(function() {
var fired_button = $(this).val();
var resim = $("input[name=resim]").val();
var stok = $("input[name=stok]").val();
var fiyat = $("input[name=fiyat]").val();
var ad = $("input[name=ad]").val();
$.ajax({
url: "sepetim.php",
type:"POST",
data:{
'resim':resim,
'stok':stok,
'fiyat':fiyat,
'ad':ad
},
success: function(result)
{
$("input[name=resim]").val("");
$("input[name=stok]").val("");
$("input[name=fiyat]").val("");
$("input[name=ad]").val("");
console.log(result);
}});
});
</script>
sepetim.php
<?php
if($_POST) {
$resim = $_POST['resim'];
$stok = $_POST['stok'];
$fiyat = $_POST['fiyat'];
$ad = $_POST['ad'];
$sepetimurunlerigoster = "INSERT INTO sepeteeklenenurunler (
urun_resim, urun_stokkodu, urun_fiyati, urun_adi) VALUES (?,?,?,?)";
$sepetimurunleri = $db->prepare($sepetimurunlerigoster);
$sepetimurunleri->execute([$resim,$stok,$fiyat,$ad]);
if($sepetimurunleri) {
echo "Tamam";
} else {
echo "Hata";
}
}
?>
<script>
</script>
Tekrar merhaba arkadaşlar. Şimdi 2 ürünüm var ikisini de listeletiyorum. Sepete ekleme işlemini yapıyor ama sadece birinci ürünün butonuna tıklarsam birinci ürünü kayıt edebiliyorum veritabanına. İkinci ürünün butonuna tıkladığımda ise kayıt edemiyorum. Ne yapmam lazım acaba? Kodlar aşağıda.
urunler.php
<div class="skinserisiurunleri-sayfasi-resim" name="resim">
<a href="skinserisiurunleriurun.php?skinserisiurunleriurunegit=<?php echo $skinserisiurunleri['urun_id']; ?>">
<img src="images/eklenenurunresimleri/<?php echo $skinserisiurunleri["urun_resim"]; ?>" />
</a>
</div>
<div class="skinserisiurunleri-sayfasi-urunadi" name="sepeteeklenenurunler_adi">
<?php echo substr($skinserisiurunleri['urun_adi'],0,55); ?>
</div>
<div class="skinserisiurunleri-sayfasi-stokkodu" name="sepeteeklenenurunler_stokkodu">Stok Kodu:
<?php echo substr($skinserisiurunleri['urun_stokkodu'],0,14); ?>
</div>
<div class="skinserisiurunleri-sayfasi-fiyati" name="sepeteeklenenurunler_fiyati">
<?php echo substr($skinserisiurunleri['urun_fiyati'],0,24); ?> TL
</div>
<div class="sepeteekle-butonu-input-div">
<input type="text" name="resim" value="<?php echo $skinserisiurunleri['urun_resim']; ?>">
<input type="text" name="ad" value="<?php echo $skinserisiurunleri['urun_adi']; ?>">
<input type="text" name="stok" value="<?php echo $skinserisiurunleri['urun_stokkodu']; ?>">
<input type="text" name="fiyat" value="<?php echo $skinserisiurunleri['urun_fiyati']; ?>">
</div>
<div class="sepeteekle-butonu">
<button type="button" id="vericek">Veri Gönder</button>
</div>
<script>
$(document).ready(function ()
{
$("#vericek").click(function () {
var resim = $("input[name=resim]").val();
var ad = $("input[name=ad]").val();
var stok = $("input[name=stok]").val();
var fiyat = $("input[name=fiyat]").val();
$.ajax({
url: "sepetim.php",
type:"POST",
data:{
'resim':resim,
'ad':ad,
'stok':stok,
'fiyat':fiyat
},
success: function(result)
{
$("input[name=resim]").val("");
$("input[name=ad]").val("");
$("input[name=stok]").val("");
$("input[name=fiyat]").val("");
console.log(result);
}});
});
});
</script>
sepetim.php
<?php
if($_POST) {
$resim = $_POST['resim'];
$ad = $_POST['ad'];
$stok = $_POST['stok'];
$fiyat = $_POST['fiyat'];
$sepetimurunlerigoster = $db->prepare("INSERT INTO sepeteeklenenurunler (urun_resim,urun_stokkodu,urun_urunfiyati,urun_urunadi) VALUES (?,?,?,?)");
$ekle = $sepetimurunlerigoster->execute(array($resim,$stok,$fiyat,$ad));
if($ekle) {
echo "Kayıt tamam";
} else {
echo "Kayıt olmadı";
}
}
?>
Script alanının kodunu bir örnekten aldım. Kodları aldığım yer "form option" "value" içine tek tek "1", "2", "3", "4" diye değer veriyor. Ama benim, veritabanından almam lazım bu bilgiyi. Bir de galiba "onreadystatechange" kodu buraya uymuyor.
Son olarak yapmak istediğim şeyi şu safhaya getirdim. Kodlar aşağıda. Yardımcı olabilir misiniz?
ürünler.php
<?php
session_start();
include "baglanti.php";
?>
<!doctype html>
<html lang="tr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="description" content="E-Ticaret Sitesi">
<meta name="keywords" content="site, sitesi, e-ticaret sitesi">
<meta name="author" content="Mali">
<link rel="stylesheet" href="style/bootstrap/bootstrap.min.css">
<link rel="stylesheet" href="style/bootstrap/bootstrap.css">
<link rel="stylesheet" href="fontawesome/webfonts/fontawesome-all.min.css" />
<link rel="stylesheet" href="style/skinserisiurunleri.css" />
<title>E-Ticaret Sitesi</title>
</head>
<body>
<div class="container p0">
<div>
<?php include "header.php"; ?>
</div>
<div>
<?php include "menu.php"; ?>
</div>
<div class="skinserisiurunleri-sayfasi-div">
<?php
$skinserisiurunlerigoster = $db->query("SELECT urun_id, urun_resim, urun_stokkodu,
urun_fiyati, urun_adi FROM urun WHERE urun_turu='Skin Serisi'");
while ($skinserisiurunleri = $skinserisiurunlerigoster->fetch()) {
?>
<div class="skinserisiurunleri-ic-div">
<div class="skinserisiurunleri-sayfasi-resim" name="resim">
<a href="skinserisiurunleriurun.php?skinserisiurunleriurunegit=<?php echo $skinserisiurunleri['urun_id']; ?>">
<img src="images/eklenenurunresimleri/<?php echo $skinserisiurunleri["urun_resim"]; ?>" />
</a>
</div>
<div class="skinserisiurunleri-sayfasi-urunadi" name="sepeteeklenenurunler_adi">
<?php echo substr($skinserisiurunleri['urun_adi'],0,55); ?>
</div>
<div class="skinserisiurunleri-sayfasi-stokkodu" name="sepeteeklenenurunler_stokkodu">Stok Kodu:
<?php echo substr($skinserisiurunleri['urun_stokkodu'],0,14); ?>
</div>
<div class="skinserisiurunleri-sayfasi-fiyati" name="sepeteeklenenurunler_fiyati">
<?php echo substr($skinserisiurunleri['urun_fiyati'],0,24); ?> TL
</div>
<div class="sepeteekle-butonu">
<button onclick="ornek(this.value)">Sepete Ekle</button>
</div>
</div>
<?php } ?>
<div id="sonuc"></div>
</div>
<div class="indexsayfasi-digerbilgiler">
<?php include "indexdigerbilgiler.php"; ?>
</div>
</div>
<script>
function ornek(gelendeger) {
var istek = new XMLHttpRequest();
istek.onreadystatechange = function(){
if (this.readyState==4 && this.status==200) {
document.getElementById('sonuc').innerHTML = this.responseText;
} else {
document.getElementById('sonuc').innerHTML = "Bilinmeyen Bir hata Oluştu";
};
istek.open("GET", "sepetim.php?deger=" + gelendeger, true);
istek.send();
}
}
</script>
</body>
</html>
sepetim.php
<?php
session_start();
include "baglanti.php";
?>
<!doctype html>
<html lang="tr">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="description" content="E-Ticaret Sitesi">
<meta name="keywords" content="site, sitesi, e-ticaret sitesi">
<meta name="author" content="Mali">
<!-- Bootstrap CSS -->
<link rel="stylesheet" href="style/bootstrap/bootstrap.min.css">
<link rel="stylesheet" href="style/bootstrap/bootstrap.css">
<link rel="stylesheet" href="fontawesome/webfonts/fontawesome-all.min.css" />
<link rel="stylesheet" href="style/sepetim.css" />
<title>E-Ticaret Sitesi</title>
</head>
<body>
<div class="container p0">
<div>
<?php include "header.php"; ?>
</div>
<div>
<?php include "menu.php"; ?>
</div>
<div class="sepetimurunleri-sayfasi-div">
<div class="sepetimurunleri-ic-div">
<div id="sepetislemleri">
<?php
$gelen = $_GET['deger'];
$sepetimurunlerigoster = $db->query("SELECT * FROM urun WHERE urun_id='$gelen' ORDER BY urun_id ASC LIMIT 1");
$resim = $sepetimurunlerigoster['urun_resim'];
$adi = $sepetimurunlerigoster['urun_adi'];
$stok = $sepetimurunlerigoster['urun_stokkodu'];
$fiyat = $sepetimurunlerigoster['urun_fiyati'];
?>
<div class="sepetimurunleri-sayfasi-resim-div">
<div class="sepetimurunleri-sayfasi-resim">
<img src="images/eklenenurunresimleri/<?php echo $resim; ?>">
</div>
</div>
<div class="sepetimurunleri-ozellikler-div">
<div class="sepetimurunleri-sayfasi-urunadi">Ürün Adı:
<?php echo $adi; ?>
</div>
<div class="sepetimurunleri-sayfasi-stokkodu">Stok Kodu:
<?php echo $stok; ?>
</div>
<div class="sepetimurunleri-sayfasi-fiyati">Fiyatı:
<?php echo $fiyat; ?>
</div>
<div class="sepetimurunleri-sayfasi-adet-sayisi">
<input type="number" name="adet_sayisi" value="1">
</div>
<div class="sepetimurunleri-sayfasi-sil-ve-odeme-div">
<div class="sepetimurunleri-butonu">Ödemeye Geç</button>
</div>
<div class="sepetimurunleri-sayfasi-sil-div">
<img src="images/icons/delete.png" title="Sil"/>
</div>
</div>
</div>
<?php } ?>
</div>
</div>
<div class="indexsayfasi-digerbilgiler">
<?php include "indexdigerbilgiler.php"; ?>
</div>
</div>
</body>
</html>