• 17-09-2022, 20:03:08
    #1
    Merhaba ben Uğur KILCI, PHP Json Parse isimli videomda PHP API hatta PHP REST API kullanırken sıklıkla karşılaştığımız PHP Json Parse konusunu anlatıyorum. Videodaki websitenin kaynak kodları video açıklamasındadır.


    https://www.youtube.com/watch?v=k0ukP2fWLao
  • 05-10-2022, 19:31:40
    #2
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Merhaba, videonuzu daha önceden izlemistim.

    https://www.viennaairport.com/jart/prj3/va/data/flights/inc.json
    havalimani sitesindeki api yi curl ile baglanip php de tabloya dökebiliyorum.
    1- Api de zamanlar d-m-YTH:i:s seklinde ortada T harfi var onu substr kullanarak sondan 6 degeri alarak 18:23:07 sekline ulastim
    2-
    $flights = ($data['monitor']['departure']);
    $count = count($flights);
    seklinde toplam veri sayisini aldim

    3-
    if($flights[$i]['status']['code'] == "APP") { echo "<b class=\"bg-primary text-white\" >Iniyor"; }
    kodlariyla inise gecmis olanlarida isaretleyebiliyorum.

    Yapamadiklarim: Ben sadece belli basli ucaklari listeleyecegim. Örnegin [fn] => TK 8158 olan [fn] => PC 901 vs gibi ucaklari filtrelemek istiyorum. TK 8158 olmazda TK 6304 olur, yani TK***** bu filtreleme konusunu bir türlü asamadim. Kodlarim karisik ama isterseniz yollarim... Ne yapmaliyim sizce?
  • 05-10-2022, 19:56:54
    #3
    marz adlı üyeden alıntı: mesajı görüntüle
    Merhaba, videonuzu daha önceden izlemistim.

    https://www.viennaairport.com/jart/prj3/va/data/flights/inc.json
    havalimani sitesindeki api yi curl ile baglanip php de tabloya dökebiliyorum.
    1- Api de zamanlar d-m-YTH:i:s seklinde ortada T harfi var onu substr kullanarak sondan 6 degeri alarak 18:23:07 sekline ulastim
    2-
    $flights = ($data['monitor']['departure']);
    $count = count($flights);
    seklinde toplam veri sayisini aldim

    3-
    if($flights[$i]['status']['code'] == "APP") { echo "<b class=\"bg-primary text-white\" >Iniyor"; }
    kodlariyla inise gecmis olanlarida isaretleyebiliyorum.

    Yapamadiklarim: Ben sadece belli basli ucaklari listeleyecegim. Örnegin [fn] => TK 8158 olan [fn] => PC 901 vs gibi ucaklari filtrelemek istiyorum. TK 8158 olmazda TK 6304 olur, yani TK***** bu filtreleme konusunu bir türlü asamadim. Kodlarim karisik ama isterseniz yollarim... Ne yapmaliyim sizce?
    En basit mantığı fn'yi foreach ile liste ve listenin içine if else ekle. ifin içinde substr ile ilk 2 harfi TK olanları göster de. Bu en basit halidir. Bu işini görür. Ama milyonlarca veriyi bir sayfada işleyeceğim gibi şeylere gireceksen önce öyle bir şeye girme. Sayfalara ayır. Yoksa site çöküyor. Zaman aşımına uğruyor. Yada 100 küsur veriden fazla veriyi işleyeceksen o zaman zor yolu seçebilirsin. Zor yolun olayı foreach kullanmadan bunu yapmaya çalışmaktır. İşin içine algoritma vs girebiliyor. Bu biraz kafa gerektiren bir mevzuya giriyor. Ama önerim önce basit halini yap sonra çalışıyorsa ve kasmalar vsler oluyorsa, sonra optimizeye kafa patlat.

    Diğer zor kısmı konusunda araştırmak gerek. Ama bu işlem daha optimize çalışacağına eminim. Sadece bunu yapmanın yolunu vs bulmak gerek. foreach ile listelemek yerine array içinde ilk 2 harfi TK olanları listelemek. sallıyorum array_bilmem_ne($arr, "TK"); şuna benzer bir kod olsa o zaman daha da optimize edilebilir. Tabii bu biraz daha meşakatli bir süreç. Araştırmak lazım. Algoritmalara vs bakmak lazım.

    Üzerine düşününce hariç bırakarakta yapılabilir. Şu bu hariç şeklinde. Tabii bu söylediğim daha optimize bir senaryo için. Bunun için ekstra kasmana gerek yok aslında. https://github.com/ugurkilci/hafizilib/blob/master/php-arraydan-diziden-veri-%C3%A7%C4%B1kartma.php burada hariç silme vs ile bir şeyler yapmışım zamanında. Yine bu kafada düşünüp daha optimize senaryo için çalışmalar yapılabilir.
  • 05-10-2022, 20:13:49
    #4
    $array_search = array_search('çıkarılacak veri', $array);
    Veri cok oldugu icin bu kasma yapar saniyorum, en iyisi ve mantiklisi ilk 2 harfi TK olanlari listelemek bencede ama onu yapamadim iste. Sabahtan beri youtube ve github dan örnekler izleyip denedim. Hepside derslerinde json verisini kendi hazirlayip listeletiyor vs.

    Javascript ilede yapilabilir ajax vs ama onlara kafam basmaz daha.
    Cevap yazip vakit ayirdiginiz icin tesekkür ederim. Bir cok videonuz bilgisayarimda var.

    Search yöntemiyle aramalara yogunlasayim bakalim.
  • 05-10-2022, 20:37:49
    #5
    marz adlı üyeden alıntı: mesajı görüntüle
    $array_search = array_search('çıkarılacak veri', $array);
    Veri cok oldugu icin bu kasma yapar saniyorum, en iyisi ve mantiklisi ilk 2 harfi TK olanlari listelemek bencede ama onu yapamadim iste. Sabahtan beri youtube ve github dan örnekler izleyip denedim. Hepside derslerinde json verisini kendi hazirlayip listeletiyor vs.

    Javascript ilede yapilabilir ajax vs ama onlara kafam basmaz daha.
    Cevap yazip vakit ayirdiginiz icin tesekkür ederim. Bir cok videonuz bilgisayarimda var.

    Search yöntemiyle aramalara yogunlasayim bakalim.
    Proje hoşuma gitti, bi kurcalamak istiyorum
  • 05-10-2022, 20:54:30
    #6
    Buyursunlar efendim, bundan sonrasını yaparsın gibime geliyor
    Bu da çalışan hali: https://ugurkilci.com/projects/json/ sadece TK ve PC olanları listeliyor
    <?php
    // Başka siteden veri çekmeye yarıyor. Yani klasik Curl
    function _c($a){
        $ch         = curl_init();
        $header     = array();
        $header[]   = "Accept-Language: tr-tr,en;q=0.5"; 
        curl_setopt_array($ch, [
            CURLOPT_URL             => $a,
            CURLOPT_USERAGENT       => "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36",
            CURLOPT_RETURNTRANSFER  => true,
            CURLOPT_SSL_VERIFYPEER  => false,
            CURLOPT_SSL_VERIFYHOST  => false,
            CURLOPT_FOLLOWLOCATION  => true,
            CURLOPT_HTTPHEADER   => $header,
            CURLOPT_AUTOREFERER     => true
        ]);
        $source = curl_exec($ch);
        curl_close($ch);
        return $source;
    }
    $c = _c("https://www.viennaairport.com/jart/prj3/va/data/flights/inc.json"); // Tüm JSON'ı çektim
    $c = json_decode($c, true); // strClass yerine Arraya dönüştürdüm
    $c = $c["monitor"]["departure"]; // Döngüye sahip yeri buldum ve onu değişkene aktardım
    // Verileri listelemeye başladım
    foreach ($c as $row) {
        // Sadece ilk iki harfi "TK" yada "PC" olanları göster
        if (
                (substr( $row["fn"], 0, 2 ) == "TK") ||
                (substr( $row["fn"], 0, 2 ) == "PC")
        ) {
            print_r($row);
        }
    }
  • 05-10-2022, 21:56:24
    #7
        if (
                (substr( $row["fn"], 0, 2 ) == "TK") ||
                (substr( $row["fn"], 0, 2 ) == "PC")
        ) {
            print_r($row);
        }
    }
    Iste buydu tam yapmak istedigim, vakit verip birde tüm kodu yazmissin ALLAH senden razi olsun kardesim. Ne muradin varsa versin...
  • 06-10-2022, 10:39:36
    #8
    Selam Öncelikle Youtube Kanalında Seni takip ediyorum başarılı videolar yayınlıyorsun benimde soruma istediğim önemli bir konu var ne kadar araştırdıysamda pek kaynak ve sonuç bulamadım.

    Benim Sorunum Google Places Api buradan veri almak istiyorum api aldım googleden ama veri çekerken aldığım veri 20 tane ve bunu aşamıyorum bunun için bir yol varmıdır inceledinizmi böyle birşey daha önce?
  • 06-10-2022, 20:12:24
    #9
    Adalente adlı üyeden alıntı: mesajı görüntüle
    Selam Öncelikle Youtube Kanalında Seni takip ediyorum başarılı videolar yayınlıyorsun benimde soruma istediğim önemli bir konu var ne kadar araştırdıysamda pek kaynak ve sonuç bulamadım.

    Benim Sorunum Google Places Api buradan veri almak istiyorum api aldım googleden ama veri çekerken aldığım veri 20 tane ve bunu aşamıyorum bunun için bir yol varmıdır inceledinizmi böyle birşey daha önce?
    Öncelikle çok teşekkür ederim. Sonralıkla Google'nin limitlerine baktın mı? Belki bir limit vardır. 20 tane çekilebiliyordur gibicesine. Yada sayfalama sistemi vardır. Mesela Twitter API'lerinde bu var. Sayfa sayfa çekebiliyorsun. cURL'de kullanırken URL kullanıyoruz ya, onun sonuna ?page_token falan ekliyordum. Her postun sonunda diğer sayfaya geçebilmek için bir sayfa tokenı veriyordu. Belki burada da bu işlem vardır. Aslında özetlemek gerekirse API dökümanını detaylıca okuma gerek diyebilirim.