HIDevelop adlı üyeden alıntı:
mesajı görüntüle
PHP Json Dosyasında Satır Satır İşlem Yapma
21
●302
- 14-12-2021, 23:12:21Yani dosya bozuk hocamTrends adlı üyeden alıntı: mesajı görüntüle
Hataları düzeltip buradan test ettiğinizde sorun almıyorsanız bu kod da çalışacaktır. JSON parantez ve virgül sırasına dikkat edin. parantezler ve virgüllerin yanlış olmasına kızar.
- 15-12-2021, 07:55:50Anladığım kadarıyla dosyanızın her bir satırı ayrı bir json görevi görüyor. Eğer dizi şeklinde olsaydı sizin yönteminiz çalışırdı ama bu durumda her satırı ayrı ayrı okuyup parse etmek gerekiyor. Verdiğiniz örnekten yola çıkarak şöyle bir şey yapabiliriz:
<?php include 'mysqlBaglanti.php'; $file = new SplFileObject('tek.json'); echo '<pre>'; while (!$file->eof()) { $veri = json_decode($file->fgets(), true); if(json_last_error() === JSON_ERROR_NONE) { $madde_id = $veri['madde_id']; $kac = $veri['kac']; $kelime_no = $veri['kelime_no']; $cesit = $veri['cesit']; $anlam_gor = $veri['anlam_gor']; $on_taki = $veri['on_taki']; $madde = $veri['madde']; $cesit_say = $veri['cesit_say']; $anlam_say = $veri['anlam_say']; $taki = $veri['taki']; $cogul_mu = $veri['cogul_mu']; $ozel_mi = $veri['ozel_mi']; $lisan_kodu = $veri['lisan_kodu']; $lisan = $veri['lisan']; $telaffuz = $veri['telaffuz']; $birlesikler = $veri['birlesikler']; $font = $veri['font']; $madde_duz = $veri['madde_duz']; $gosterim_tarihi = $veri['gosterim_tarihi']; $sql = "INSERT INTO madde(madde_id, kac, kelime_no, cesit, anlam_gor, on_taki, madde, cesit_say, anlam_say, taki, cogul_mu, ozel_mi, lisan_kodu, lisan, telaffuz, birlesikler, font, madde_duz, gosterim_tarihi) VALUES ('$madde_id', '$kac', '$kelime_no', '$cesit', '$anlam_gor', '$on_taki', '$madde', '$cesit_say', '$anlam_say', '$taki', '$cogul_mu', '$ozel_mi', '$lisan_kodu', '$lisan', '$telaffuz', '$birlesikler', '$font', '$madde_duz', '$gosterim_tarihi')"; if(!mysqli_query($baglan, $sql)) { die('Error: ' . mysql_error()); } } } $file = null; - 15-12-2021, 12:22:20
- 15-12-2021, 12:41:24Hocam, şimdi belli bir satıra kadar geliyor ondan sonra duruyor. Neden olabilir? Ben durduğu satırdan sonraki satırı elle silip problemi giderdim ancak ilerleyen satırlarda tekrar aynı şekilde sorun oluyor. Ayrıca, Türkçe karakterler bozuk çıkıyor. Bunun için ayrıca bir öneriniz var mı?fatihemre adlı üyeden alıntı: mesajı görüntüle
- 15-12-2021, 15:37:56Farklı bir yöntem geliştirmeye çalıştım bunu da deneyebilir misiniz? Json dosyanızdaki tüm veriyi $data değişkenine aktarıp denemelisiniz.Trends adlı üyeden alıntı: mesajı görüntüle
$data = '{"_id":1,"madde_id":"1","kac":"0","kelime_no":"14800","cesit":"0","anlam_gor":"0","on_taki":null,"madde":"dulavrat otu","cesit_say":"0","anlam_say":"1","taki":null,"cogul_mu":"0","ozel_mi":"0","lisan_kodu":"0","lisan":"","telaffuz":null,"birlesikler":null,"font":null,"madde_duz":"dulavrat otu","gosterim_tarihi":null,"anlamlarListe":[{"anlam_id":"25840","madde_id":"1","anlam_sira":"1","fiil":"0","tipkes":"0","anlam":"Birleşikgillerden, hekimlikte kullanılan bir bitki (Arctium tomentosum)","gos":"0","ozelliklerListe":[{"ozellik_id":"19","tur":"3","tam_adi":"isim","kisa_adi":"a.","ekno":"30"},{"ozellik_id":"41","tur":"1","tam_adi":"bitki bilimi","kisa_adi":"bit. b.","ekno":"90"}]}]} {"_id":2,"madde_id":"2","kac":"0","kelime_no":"14801","cesit":"0","anlam_gor":"0","on_taki":null,"madde":"dulda","cesit_say":"1","anlam_say":"2","taki":null,"cogul_mu":"0","ozel_mi":"0","lisan_kodu":"0","lisan":"","telaffuz":null,"birlesikler":null,"font":null,"madde_duz":"dulda","gosterim_tarihi":null,"anlamlarListe":[{"anlam_id":"25841","madde_id":"2","anlam_sira":"1","fiil":"0","tipkes":"0","anlam":"Yağmur, güneş ve rüzgârın etkileyemediği gizli, kuytu yer, siper","gos":"0","orneklerListe":[{"ornek_id":"667","anlam_id":"25841","ornek_sira":"1","ornek":"Demirkır, güney tepelerinin duldalarına çektiği atları gece yarısına doğru yeniden ovaya indirdi.","kac":"1","yazar_id":"62","yazar":[{"yazar_id":"62","tam_adi":"Abbas Sayar","kisa_adi":"A. Sayar","ekno":"199"}]}],"ozelliklerListe":[{"ozellik_id":"19","tur":"3","tam_adi":"isim","kisa_adi":"a.","ekno":"30"},{"ozellik_id":"33","tur":"4","tam_adi":"halk ağzında","kisa_adi":"hlk.","ekno":"44"}]},{"anlam_id":"25842","madde_id":"2","anlam_sira":"2","fiil":"0","tipkes":"0","anlam":"Esirgeme, koruma, himaye","gos":"0","orneklerListe":[{"ornek_id":"668","anlam_id":"25842","ornek_sira":"1","ornek":"Yiğit duldasında yiğit saklanır.","kac":"1","yazar_id":"5","yazar":[{"yazar_id":"5","tam_adi":"Karacaoğlan","kisa_adi":"Karacaoğlan","ekno":"130"}]}],"ozelliklerListe":[{"ozellik_id":"32","tur":"4","tam_adi":"mecaz","kisa_adi":"mec.","ekno":"43"}]}],"atasozu":[{"madde_id":"3","madde":"dulda tutmak"}]}'; $pattern = '@{"_id":(.*?),"madde_id":"(.*?)","kac":"(.*?)","kelime_no":"(.*?)","cesit":"(.*?)","anlam_gor":"(.*?)","on_taki":(.*?),"madde":"(.*?)","cesit_say":"(.*?)","anlam_say":"(.*?)","taki":(.*?),"cogul_mu":"(.*?)","ozel_mi":"(.*?)","lisan_kodu":"(.*?)","lisan":"(.*?)","telaffuz":(.*?),"birlesikler":(.*?),"font":(.*?),"madde_duz":"(.*?)","gosterim_tarihi":(.*?),"anlamlarListe@si'; preg_match_all($pattern, $data, $matches); $i; foreach ($matches[1] as $key) { $madde_id = $matches[2][$i]; $kac = $matches[3][$i]; $kelime_no = $matches[4][$i]; $cesit = $matches[5][$i]; $anlam_gor = $matches[6][$i]; $on_taki = $matches[7][$i]; $madde = $matches[8][$i]; $cesit_say = $matches[9][$i]; $anlam_say = $matches[10][$i]; $taki = $matches[11][$i]; $cogul_mu = $matches[12][$i]; $ozel_mi = $matches[13][$i]; $lisan_kodu = $matches[14][$i]; $lisan = $matches[15][$i]; $telaffuz = $matches[16][$i]; $birlesikler = $matches[17][$i]; $font = $matches[18][$i]; $madde_duz = $matches[19][$i]; $gosterim_tarihi = $matches[20][$i]; $sql = "INSERT INTO madde(madde_id, kac, kelime_no, cesit, anlam_gor, on_taki, madde, cesit_say, anlam_say, taki, cogul_mu, ozel_mi, lisan_kodu, lisan, telaffuz, birlesikler, font, madde_duz, gosterim_tarihi) VALUES ('$madde_id', '$kac', '$kelime_no', '$cesit', '$anlam_gor', '$on_taki', '$madde', '$cesit_say', '$anlam_say', '$taki', '$cogul_mu', '$ozel_mi', '$lisan_kodu', '$lisan', '$telaffuz', '$birlesikler', '$font', '$madde_duz', '$gosterim_tarihi')"; if(!mysqli_query($baglan, $sql)) { die('Error : ' . mysql_error()); } $i++; } - 15-12-2021, 15:44:28Hocam, json dosyası çok büyük 80 küsür MB. Sizin gönderdiğiniz kod ile satır satır yazmak gerekir gibi geldi. Tabii bu durum benim php konusunda cahilliğimden de kaynaklanıyor olabilir. Dosya üzerinde direk çalışma yapmam gerekiyor hocam, dosyada array içerisine alınacak ek verilerde var. Kodunuzun dosyada nasıl çalışacağına dair revize edebilirim yardımcı olabilir misiniz? Biraz armut piş ağzıma düş oluyor ama ne yapayım, özür diliyorumlookout adlı üyeden alıntı: mesajı görüntüle
- 15-12-2021, 15:48:32Est hocam.Trends adlı üyeden alıntı: mesajı görüntüle
Ben de çok tecrübeli değilim de aklıma şu geldi:
Belirttiğiniz json dosyasının içindeki tüm veriyi kopyalayıp yeni bir data.php dosyası oluşturup içine $data değişkenini oluşturup karşısına da json dosyasından kopyaladığım veriyi yapıştırmak geldi. Sonra Size verdiğim kodlardan önce data.php dosyasını çağırırsanız çalışacağını düşünüyorum.
dosyada array içerisine alınacak ek verilerde var: Neresi alınacak? Orası için de ayrı bir pattern hazırlayıp aynı değişkeni($data) okuyarak verileri alabilirsiniz. - 15-12-2021, 16:00:38Hocam,lookout adlı üyeden alıntı: mesajı görüntüle
Aşağıda iki satır iletiyorum, aradaki farklılıkları gözetebilirsiniz, bazı satırlarda böyle ek veriler var. Onlarıda array içerisine ayrıca alacağım. Üst tarafta @fatihemre; hocamın kodu çalışıyor sanıyorum aşağıdaki satırdaki ek veriler olduğundan dolayı işlem o satıra geldiğinde duruyor. Burayı çözümlememiz gerekiyor, diye düşünüyorum tabii ki alternatif bir çözümde olabilir. Ayrıca, Türkçe karakterler veri tabanına yanlış kaydediliyor. Örneğin, dumağı --> "dumağı" olarak kaydediliyor. Bunun sebebi ne olabilir? Hem size hem genel olarak soruyorum.
Okuyan, yardım eden, yardımcı olmak isteyen herkese teşekkür ediyorum.
{"_id":32,"madde_id":"32","kac":"0","kelime_no":"14819","cesit":"1","anlam_gor":"0","on_taki":null,"madde":"dumansız baca olmaz, kahırsız koca olmaz","cesit_say":"0","anlam_say":"1","taki":null,"cogul_mu":"0","ozel_mi":"0","lisan_kodu":"0","lisan":"","telaffuz":null,"birlesikler":null,"font":null,"madde_duz":"dumansiz baca olmaz, kahirsiz koca olmaz","gosterim_tarihi":null,"anlamlarListe":[{"anlam_id":"25891","madde_id":"32","anlam_sira":"1","fiil":"0","tipkes":"0","anlam":"`dumanı olmayan baca olamayacağı gibi karısına sıkıntı vermeyen koca da olmaz` anlamında kullanılan bir söz","gos":"0"}]} {"_id":33,"madde_id":"33","kac":"0","kelime_no":"14820","cesit":"0","anlam_gor":"0","on_taki":null,"madde":"domdom","cesit_say":"0","anlam_say":"1","taki":null,"cogul_mu":"0","ozel_mi":"0","lisan_kodu":"0","lisan":"(Hindistan'daki Dumdum şehrinin adından)","telaffuz":null,"birlesikler":null,"font":null,"madde_duz":"domdom","gosterim_tarihi":null,"anlamlarListe":[{"anlam_id":"25892","madde_id":"33","anlam_sira":"1","fiil":"0","tipkes":"0","anlam":"Domdom kurşunu","gos":"0","ozelliklerListe":[{"ozellik_id":"19","tur":"3","tam_adi":"isim","kisa_adi":"a.","ekno":"30"}]}]}
Hataları düzeltip buradan test ettiğinizde sorun almıyorsanız bu kod da çalışacaktır. JSON parantez ve virgül sırasına dikkat edin. parantezler ve virgüllerin yanlış olmasına kızar.

Ben de çok tecrübeli değilim de aklıma şu geldi: