'$arr[0]', '$arr[1]'
Bunun gibi mi? Bu söylediğim yerde syntax hatası var diyor. Benim versiyon 7.3 yalnız.
"array" lerin değerlerini alıyoruz ve "$arr" değişkenine aktardık. "array_pop", ise diziden son elemanı silme işlemi yapıyordu. Biz burada ne yapmış oluyoruz. Daha da önemlisi "...$arr" yazan yere ne yazmam lazım. Hata var gibi orada.
Merhaba. Şimdi benim bu kodları düzenleyebilmem için ne yaptığını anlamam lazım. Öncelikle bu (ilk) satırda hata veriyor. Ne hatası olduğu belli değil.
public function insert(string $table, array $data): bool
Şimdi burada "insert" isimli bir fonksiyon kullanmışız. Burada "string" i ve "array" i niye yazdık. Aşağıdaki kodda da, "sql" isimli bir dizi değişken oluşturmuşuz.
$sql = [];
foreach ($data as $key => $value) {
Ben bu yapıdan pek bir şey anlamadım. Açıklayabilir misiniz, size zahmet?
Verileri array ile çekmeyi bilemedim. txt dosyaya da kayıt edilebilir. Fark etmez.
Burada normalde iki tane form var. Kafa karışıklığı olmasın diye 1'e indirdim.
formsayfasi.php
<form action="tamamlanansiparisler.php" method="post" enctype="multipart/form-data">
<div class="alici-kisiselbilgiler-div">
<div class="alici-adi-soyadi-yazisi">
Adı - Soyadı: *
</div>
<div class="alici-adi-soyadi-input">
<input type="text" name="aliciadisoyadi" />
</div>
<div class="firma-adi-yazisi">
Firma (İsteğe Bağlı)
</div>
<div class="firma-adi-input">
<input type="text" name="alicifirma" />
</div>
<div class="ulke-adi-yazisi">
Ülke: *
</div>
<div class="ulke-adi">
Türkiye
</div>
<div class="sehir-adi-yazisi">
Şehir: *
</div>
<div class="sehir-adi-input">
<select name="Sehir">
<option value="0">Şehir Seçiniz</option>
<option value="1">Adana</option>
<option value="2">Adıyaman</option>
<option value="3">Afyonkarahisar</option>
<option value="4">Ağrı</option>
<option value="5">Amasya</option>
<option value="6">Ankara</option>
<option value="7">Antalya</option>
<option value="8">Artvin</option>
<option value="9">Aydın</option>
<option value="10">Balıkesir</option>
<option value="11">Bilecik</option>
<option value="12">Bingöl</option>
<option value="13">Bitlis</option>
<option value="14">Bolu</option>
<option value="15">Burdur</option>
<option value="16">Bursa</option>
<option value="17">Çanakkale</option>
<option value="18">Çankırı</option>
<option value="19">Çorum</option>
<option value="20">Denizli</option>
<option value="21">Diyarbakır</option>
<option value="22">Edirne</option>
<option value="23">Elazığ</option>
<option value="24">Erzincan</option>
<option value="25">Erzurum</option>
<option value="26">Eskişehir</option>
<option value="27">Gaziantep</option>
<option value="28">Giresun</option>
<option value="29">Gümüşhane</option>
<option value="30">Hakkâri</option>
<option value="31">Hatay</option>
<option value="32">Isparta</option>
<option value="33">Mersin</option>
<option value="34">İstanbul</option>
<option value="35">İzmir</option>
<option value="36">Kars</option>
<option value="37">Kastamonu</option>
<option value="38">Kayseri</option>
<option value="39">Kırklareli</option>
<option value="40">Kırşehir</option>
<option value="41">Kocaeli</option>
<option value="42">Konya</option>
<option value="43">Kütahya</option>
<option value="44">Malatya</option>
<option value="45">Manisa</option>
<option value="46">Kahramanmaraş</option>
<option value="47">Mardin</option>
<option value="48">Muğla</option>
<option value="49">Muş</option>
<option value="50">Nevşehir</option>
<option value="51">Niğde</option>
<option value="52">Ordu</option>
<option value="53">Rize</option>
<option value="54">Sakarya</option>
<option value="55">Samsun</option>
<option value="56">Siirt</option>
<option value="57">Sinop</option>
<option value="58">Sivas</option>
<option value="59">Tekirdağ</option>
<option value="60">Tokat</option>
<option value="61">Trabzon</option>
<option value="62">Tunceli</option>
<option value="63">Şanlıurfa</option>
<option value="64">Uşak</option>
<option value="65">Van</option>
<option value="66">Yozgat</option>
<option value="67">Zonguldak</option>
<option value="68">Aksaray</option>
<option value="69">Bayburt</option>
<option value="70">Karaman</option>
<option value="71">Kırıkkale</option>
<option value="72">Batman</option>
<option value="73">Şırnak</option>
<option value="74">Bartın</option>
<option value="75">Ardahan</option>
<option value="76">Iğdır</option>
<option value="77">Yalova</option>
<option value="78">Karabük</option>
<option value="79">Kilis</option>
<option value="80">Osmaniye</option>
<option value="81">Düzce</option>
</select>
</div>
<div class="ilce-adi-yazisi">
İlçe / Semt: *
</div>
<div class="ilce-adi-input">
<input type="text" name="aliciilce" />
</div>
<div class="telefon-yazisi">
Telefon: *
</div>
<div class="telefon-input">
<input type="text" name="alicitelefon" />
</div>
<div class="eposta-yazisi">
E-Posta Adresi: *
</div>
<div class="eposta-input">
<input type="text" name="alicieposta" />
</div>
<!-- <div class="formundevami"> -->
<div class="siparisnotlari-yazisi">
Şiparişiniz İle İlgili Not Bırakabilirsiniz - (İsteğe Bağlı)
</div>
<div class="siparisnotlari-textarea">
<textarea name="siparisnotlari"></textarea>
</div>
<div class="siparisitamamla">
<input type="submit" name="formbir" value="Siparişi Tamamla" />
</div>
<!-- Sepetim Sayfasından çekilmesi gereken inputlar başlangıç -->
<?php
$sepeturunlerigoster = $db->query("SELECT * FROM sepeteeklenenurunler");
while ($urunekle = $sepeturunlerigoster->fetch()) {
?>
<div class="sepetionayla-fiyatgosterimi-div" style="display:none;">
<div class="sepetimurunleri-sayfasi-urunadi">Ürün Adı:
<?php echo $urunekle['urun_adi']; ?>
<input type="text" name="urununadi[]" value="<?php echo $urunekle['urun_adi']; ?>" />
</div>
<div class="sepetimurunleri-sayfasi-stokkodu" style="display:none;">Stok Kodu:
<?php echo $urunekle['urun_stokkodu']; ?>
<input type="number" name="urununstokkodu[]" value="<?php echo $urunekle['urun_stokkodu']; ?>" />
</div>
<div class="sepetimurunleri-sayfasi-stoksayisi" style="display:none;">Stok Adedi:
<?php echo $urunekle['urun_stoksayisi']; ?>
<input type="number" name="urununstoksayisi[]" value="<?php echo $urunekle['urun_stoksayisi']; ?>" />
</div>
<!-- <form action="" method="post"> -->
<div class="sepetimurunleri-sayfasi-fiyati">Fiyatı:
<input type="number" name="unitPrice[]" value="<?php echo $urunekle['urun_fiyati']; ?>" />
TL
</div>
<div class="sepetimurunleri-sayfasi-adet-sayisi">Adedi:
<input type="number" name="productCount[]" value="1" />
</div>
</div>
<?php } ?>
<div class="genislik">
<div class="odemetablosu-yazisi">
Ödeme Tablosu
<div class="odemetablosu-yazisi-border"> </div>
</div>
<div class="odemetablosu" id="output"></div>
<div class="toplamtablosu" id="info"> </div>
</div>
<!-- Sepetim Sayfasından çekilmesi gereken inputlar bitiş -->
</div>
</form>
tamamlanansiparisler.php
<div class="skinserisiurunleri-sayfasi-div">
<?php
if ($_POST['formbir']) {
$aliciadisoyadi = $_POST['aliciadisoyadi'];
$alicifirma = $_POST['alicifirma'];
$Sehir = $_POST['Sehir'];
$aliciilce = $_POST['aliciilce'];
$alicitelefon = $_POST['alicitelefon'];
$alicieposta = $_POST['alicieposta'];
$siparisnotlari = $_POST['siparisnotlari'];
$urununstokkodu = $_POST['urununstokkodu'];
$urununstoksayisi = $_POST['urununstoksayisi'];
$unitPrice = $_POST['unitPrice'];
$productCount = $_POST['productCount'];
$urunstokkodu = count($urununstokkodu);
$urunstoksayisi = count($urununstoksayisi);
$urunadet = count($productCount);
$toplam = array_sum($unitPrice);
$onaylananurunlerigoster = $db->query("INSERT INTO sepetonaylanan
(sepetonaylanan_adisoyadi, sepetonaylanan_firmaadi, sepetonaylanan_sehiradi,
sepetonaylanan_ilcesemt, sepetonaylanan_telefon, sepetonaylanan_eposta,
sepetonaylanan_siparisnotlari, sepetonaylanan_urun_stokkodu,
sepetonaylanan_urun_stoksayisi, sepetonaylanan_urun_fiyati,
sepetonaylanan_urun_adedi) VALUES
('$aliciadisoyadi', '$alicifirma', '$Sehir', '$aliciilce', '$alicitelefon',
'$alicieposta', '$siparisnotlari', '$urunstokkodu', '$urunstoksayisi',
'$toplam', '$urunadet')");
if($onaylananurunlerigoster) {
echo "Siparişiniz Başarıyla Tamamlanmıştır";
} else {
echo "Kayıt başarısız!";
}
?>
</div>
Ş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!";
}
}
}
?>