Json yolunu nasıl vereceğim
Form aracılığıyla bir json dosya oluşturdum. Bu json dosyasının içindekileri "index.php" sayfasında listelemem gerekiyor. Ama, bir ".json" dosyasının olup olmadığını nasıl kontrol edeceğim. Yani eğer "admin/panel/1.json" adresini verirsem, o dosyanın içini listeliyor, haricinde nasıl yapılacağını bilemedim.
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (13)
Sorunu şu şekilde hallettim. Teşekkür ederim.
<?php
$list = glob('./admin/panel/json/*.json');
$files = array_map('realpath', $list);
foreach($files as $json) {
$exp = explode( '/', $json );
$filename = end($exp);
$veriokujson = file_get_contents($filename);
$yeniveri = json_decode($veriokujson);
?>
Sanırım olaş şöyle geliliyor.
index pagi açtın ilgili klasörde .json degilde erhangi birjson varmı bakmak ve varsa bunları listelemek.
Öncelikle kkasör içine 1.json diye kaydedeceği zaman veri tabanınada json adlı tablo oluştur sonra bunları çekerken foreach ile listelet dediğin gibi get parametresi olarak da
index?data=1 olson bu 1 senin veri tabanındaki 1.json sonra klasöre bakıp file exist ile 1.son varmı bakabilirsin.
Yalnız burada çok önemli nokta klasöre json wklerken aynı zamanda veritabanına da eklemen gerek veri bütünlüğü iöin
mysql transaction kullanmalısın
ama önce sorununu gider ona sonra bak
Eğer json dosyaları kök klasördeyse tam olarak çalışıyor. Değilse aşağıdaki hatayı veriyor.
: file_get_contents(4.json): failed to open stream: No such file or directory in on line
Sorunun çözümü bu şekilde. Sadece yol veremedim. Yolu da verirsem sorun tamamıyla çözülüyor. Bir bakabilir misiniz? Şu yolu ekleyeceğiz sadece.
"admin/panel/json/"
$list = glob( dirname(__FILE__).'*.json' );
foreach($list as $json){
$exp = explode( '/', $json );
$filename = end($exp);
$veriokujson = file_get_contents($filename);
$yeniveri = json_decode($veriokujson);
echo $yeniveri->ss_ozellik;
}
"m100" kontrol ettireyim de nasıl. Onu soruyorum. Anlatamadım ben galiba tam olarak. Bir form var. Bu formu "1.json", "2.json", "3.json" şeklinde kaydediyorum. admin klasörümde json uzantılı bir dosya var mı onu soracam ve varsa index sayfamda bunu listeleteceğim. Yani aşağıdaki kod ile index sayfasında "2.json" ı listeletemem. Çünkü algılayamaz index sayfası. Aşağıdaki kod, son kullanıcı için uygun değil.
$file = __DIR__ . '/admin/panel/1.json';
if (file_exists($file)) {
// dosya mevcut
}
Şimdi "admin/panel" klasörü içinde, isimleri sadece sayı olan json dosyaları oluşturuyorum. Yani "1.json", "2.json" gibi. Kök klasöründe ise "index.php" sayfası var. Şimdi "admin/panel" içinde oluşturulmuş bir json dosyasının index sayfasında algılanması için "admin/panel" içinde dosya var mı yok mu diye sorabiliyor olmamız lazım. Şöyle anlatayım. Index sayfasında bir ürünün, satın al butonuna tıklayınca o ürüne ait diğer bilgilere şu şekilde ulaşabiliriz.
a.php?getparametresi=<?php echo $x['urun_id']; ?>
Bu bağlantıya mantığına göre bir şey olmalı. Yani son kullanıcı, form sayfasını post ettikten sonra oluşan "3.json" isimli bir dosyayı sunucunun içindeki "admin/panel" klasörü içine girip, json dosyasının adını öğrenip, bir kod editöründe "index.php" sayfasının slaydır bölgesini bulup, ilgili yere "3.json" yazamaz. Index sayfasının bir şekilde bu klasör içindeki dosyayı algılayıp o kısımda kullanılabiliyor olması lazım.
Bana şuna benzer bir şey lazım. Index dosyasının olup olmadığını algılaması lazım.
if(file_exists(.json))
Şimdi şöyle. "form.php" sayfasından gönderdiğim verileri "islem.php" sayfasında ".json" formatında oluşturuyorum. Bu verileri de "index.php" sayfasındaki slider'da sırasıyla; "resim, özellik" gibi listeletmem gerekiyor.
"Index.php" sayfasında listelettiğim resmin "satın al" butonuna tıklayınca, bu resme ait diğer resimler ve diğer verileri listeletmem lazım.
Yani; admin panelinde ürün ekliyorum. Index sayfasındaki slider'da o ürünün 1. resmini listeletiyorum ve satın al butonuna tıklayınca o resme ait diğer resimler ve özellikler listelenecek. Ama .json dosyasının adını benim bir şekilde "index.php" sayfasındaki slider'a ve "satın al" butonuyla tıkladığımda da "detay.php" sayfasına tanıtmam lazım.
Yani ürünü slider'ın tanıması için "get" gibi bir bağlantı lazım. Yani "admin" panelindeki ".json" dosyasını benim "get" gibi bir bağlantıyla index de listeletmem lazım. Akıl lazım bu konuda. Bu arada ".json" dosyalarının ismi için "json_id" diye bir alan var form'da. Yani isimleri hep sayı olarak kaydediyorum. Yani "1.json" gibi. Belki bir fikir verir size.
Soru: bir ".json" dosyasının olup olmadığını nasıl kontrol edeceğim.
Cevap:
<?php
$file = __DIR__ . '/admin/panel/1.json';
if (file_exists($file)) {
// dosya mevcut
}
Diger soylediklerini anlayamadim acikcasi, daha acik olursan belki yardimci olabiliriz.