Peki o zaman şunu nasıl yapabilirim. İnternette şöyle bir şey var. Text dosyasından veritabanına aktarma işlemini yapıyor.
Text dosyamın içeriği
{
"Alıcının Adı": [
"ad"
],
"Alıcının Firma Adı": [
"firma"
],
"Alıcının Şehri": [
"18"
],
"Alıcının İlçesi": [
"ilçe"
],
"Alıcının Telefon Numarası": [
"999999999"
],
"Alıcının E-Posta Adresi": [
"[email protected]"
],
"Alıcının Sipariş Notları": [
"siparişler"
],
"Ürünün Stok Kodu": [
"8"
],
"Ürünün Stok Sayısı": [
"8"
],
"Ürünün Adı": [
"Ürün 2"
]
}
Text dosyasını veritabanına aktarmama yarayan sayfa içeriği
<?php
include("baglanti.php");
$dosya=new SplFileObject('ornektext.txt');
while(!$dosya->eof()) {
$satir=$dosya->fgets();
list($isim, $firmaadi, $sehir, $ilce, $telefon, $eposta, $siparis, $stokkodu, $stoksayisi, $urunadi)=explode(',',$satir);
$sorgu = $db->prepare('INSERT INTO sepetonaylanan VALUES (NULL,?,?,?,?,?,?,?,?,?,?)');
$sorgu->bindValue(1,$isim,PDO::PARAM_STR);
$sorgu->bindValue(2,$firmaadi,PDO::PARAM_STR);
$sorgu->bindValue(3,$sehir,PDO::PARAM_STR);
$sorgu->bindValue(4,$ilce,PDO::PARAM_STR);
$sorgu->bindValue(5,$telefon,PDO::PARAM_STR);
$sorgu->bindValue(6,$eposta,PDO::PARAM_STR);
$sorgu->bindValue(7,$siparis,PDO::PARAM_STR);
$sorgu->bindValue(8,$stokkodu,PDO::PARAM_INT);
$sorgu->bindValue(9,$stoksayisi,PDO::PARAM_INT);
$sorgu->bindValue(10,$urunadi,PDO::PARAM_STR);
$sorgu->execute();
}
?>
Veritabanına kayıt etmiyor ve verdiği hata
Undefined offset: 9 in C:\AppServ\www\ornek\kaydett.php on line 7
Yani hatayı şurada buluyor.
ist($isim, $firmaadi, $sehir, $ilce, $telefon, $eposta, $siparis, $stokkodu, $stoksayisi, $urunadi)=explode(',',$satir);
Merhabalar. "database" bu kod işime yaradı ama aşağıdaki kodlarla sonuç şu şekil dönüyor. Peki bunu virgülden sonra bir satır aşağıya gelecek şekilde nasıl yapabilirim.
if ($_POST) {
$dizi['Alıcının Adı'] = $_POST['aliciadisoyadi'];
$dizi['Alıcının Firma Adı'] = $_POST['alicifirma'];
$dizi['Alıcının Şehri'] = $_POST['sehir'];
$dizi['Alıcının İlçesi'] = $_POST['aliciilce'];
$dizi['Alıcının E-Posta Adresi'] = $_POST['alicieposta'];
$dizi['Alıcının Sipariş Notları'] = $_POST['siparisnotlari'];
$dizi['Ürünün Stok Kodu'] = $_POST['urununstokkodu'];
$dizi['Ürünün Stok Sayısı'] = $_POST['urununstoksayisi'];
$dosya = fopen("ornektext.txt", "a");
file_put_contents('ornektext.txt', json_encode($dizi, JSON_UNESCAPED_UNICODE));
fclose($dosya);
}
{"Alıcının Adı":["ali"],"Alıcının Firma Adı":["firması"],"Alıcının Şehri":["1"],"Alıcının İlçesi":["selçuklu"],"Alıcının E-Posta Adresi":["alietalinoktakom"],"Alıcının Sipariş Notları":["sipariş notlarım"],"Ürünün Stok Kodu":["7","8"],"Ürünün Stok Sayısı":["7","8"]}
Merhabalar. "miyachung" sizin bu kodlar ile yan yana "array,array" şeklinde çıkıyor. Galiba print kullanmam gerekli ama nerede kullanmam lazım bilemedim.
Tekrar merhaba. Implode fonksiyonunu kullanmam gerekiyormuş. Ama aşağıdaki kodlar ile "array,array,array,array,array,array,array,array," diye bir sonuç alıyorum.
if ($_POST) {
$dizi = [
$dizi[] = $_POST['aliciadisoyadi'],
$dizi[] = $_POST['alicifirma'],
$dizi[] = $_POST['sehir'],
$dizi[] = $_POST['aliciilce'],
$dizi[] = $_POST['alicieposta'],
$dizi[] = $_POST['siparisnotlari'],
$dizi[] = $_POST['urununstokkodu'],
$dizi[] = $_POST['urununstoksayisi']
];
$row = $dizi;
$dosya = fopen("ornektext.txt", "a");
$diziler = implode(",", $row);
fwrite($dosya, print_r($diziler, TRUE));
fclose($dosya);
}
Kodlar çalışıyor ama tek satır kayıt yapıyor. Benim istediğimin örneğini elle hazırladım resmi aşağıda. yani tek post ile iki satır ürün; sepette üç ürün varsa üç satır ürün kayıt edecek. Yani resimde, müşteriye ait olan: eposta, şehir, ilçe vs. bilgiler aynı ama ürün özellikleri farklı. İlk satırdaki ürünün stok kodu "7"; ikinci ürünün stok kodu 8 farkettiyseniz. Eğer 5 ürün varsa sepetimde, ben form'u post ettiğimde o 5 ürün 5 satırda kayıt olacak. Daha doğrusu ben size şöyle bir akıl danışayım. Şimdi ben ürünleri tek tek kayıt etmezsem, müşterinin ne ürün aldığını, özelliklerini, hangi kullanıcının ne aldığını nasıl kayıt edebilirim. Aklıma bu geliyor. Acaba form kısmında mı bir hata yapıyorum. Kodları aşağıya koyuyorum.
https://www.hizliresim.com/hmxhavj
<form action="tamamlanansiparisler.php" method="POST">
<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
</div>
<div class="firma-adi-input">
<input type="text" name="alicifirma[]" />
</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="eposta-yazisi">
E-Posta Adresi: *
</div>
<div class="eposta-input">
<input type="text" name="alicieposta[]" />
</div>
<div class="siparisnotlari-yazisi">
Şiparişiniz İle İlgili Not Bırakabilirsiniz
</div>
<div class="siparisnotlari-textarea">
<textarea name="siparisnotlari[]"></textarea>
</div>
<?php
$sepeturunlerigoster = $db->query("SELECT * FROM sepeteeklenenurunler");
while ($urunekle = $sepeturunlerigoster->fetch()) {
?>
<div class="sepetionayla-fiyatgosterimi-div">
<div class="sepetimurunleri-sayfasi-stokkodu">Stok Kodu:
<?php echo $urunekle['urun_stokkodu']; ?>
<input type="text" name="urununstokkodu[]" value="<?php echo $urunekle['urun_stokkodu']; ?>" />
</div>
<div class="sepetimurunleri-sayfasi-stoksayisi">Stok Adedi:
<?php echo $urunekle['urun_stoksayisi']; ?>
<input type="text" name="urununstoksayisi[]" value="<?php echo $urunekle['urun_stoksayisi']; ?>" />
</div>
</div>
<?php } ?>
</div>
<div class="siparisitamamla">
<input type="submit" value="Siparişi Tamamla" />
</div>
</form>
Kayıt ekleniyor. Stokkodu alanı ve stokkodusayısı "1" olarak ekleniyor. Yalnız eklemek istediğim ürün 1'den fazla yani 2 tane ürünü aynı anda kaydetmek istiyorum. yani şu şekilde olması gerekli. Kaydet butonuna bastığımda, sepetteki bu iki ürün kayıt edilecek.
İsim Firma Şehir İlçe E-Posta Stokkodu - Stok Sayısı
Ahmet - Ahmet a.ş - İstanbul - Falanca İlçe - ahmetinpostası@ahmetinpostasi.coom - 5 - 20
Ahmet - Ahmet a.ş - İstanbul - Falanca İlçe - ahmetinpostası@ahmetinpostasi.coom - 9 - 30
Bir de şöyle bir hata alıyorum 7-8 satırdan.
PHP Notice: Undefined offset: 1 in
Benim çalışabileceğim bir arkadaşım yok. Javascript tarafını sen hallet diyebileceğim yani. Şu anda hepsini öğrenmeye çalışıyorum.
Bu, media query kullanımı değil mi? Bu üç satır kodu beraber mi kullanmam lazım?
Arkadaşlar ürünü kaydederken, ürün açıklaması kısmına yani textarea'ya girdiğim açıklamayı iki satır, iki satır paragraflar halinde yazdığımda "nl2br" fonksiyonu firefox tarayıcısında bir satır aşağıya inmesini sağlıyor. ama diğer tarayıcılarda iki veya daha fazla satır aralıklarla listelenmesini sağlıyor. yani firefox'da nasıl verebilirim iki satır boşluk. Yani aşağıdaki gibi boşluğu nasıl verebilirim firefox'da.
Aşağıdaki metni anlattığıma örnek olsun diye koydum.
""""""""""Arkadaşlar ürünü kaydederken, ürün açıklaması kısmına yani textarea'ya girdiğim açıklamayı iki satır,
iki satır paragraflar halinde yazdığımda "nl2br" fonksiyonu firefox tarayıcısında bir satır aşağıya
inmesini sağlıyor. ama diğer tarayıcılarda iki veya daha fazla satır aralıklarla listelenmesini
sağlıyor. yani firefox'da nasıl verebilirim iki satır boşluk.""""""""""
Merhaba arkadaşlar. "nl2br" ile sorunumu çözmüştüm ama dikkatimi bir şey çekti. Resimde dikkat ederseniz tek satır atlıyor ama ürünü kayıt ederken, textarea alanına girdiğim ürün açıklamasına 2 satır atlatamıyorum. Yani yeni satırı iki satır aşağıdan devam etmek istiyorum. Bunun için "nl2br" gibi bir fonksiyon var mı acaba?
https://www.hizliresim.com/9xo7dno