Aşağıda demo ve indirme linki vereceğim uygulama da HTM sayfa içerisindeki günün Nöbetçi eczane ve yerleşim birimini, alarak ekrana yansıtacağız.
Önemli: Bazı iller sistemde kayıt edilmemiş, o nedenle sonuç boş dönebilir.
ANA SCRIPT
<?php /* Author: Sinan Tekmil Author URI: http://www.veblebi.com/ Script URI: http://www.veblebi.com/nobetci-eczaneler-uygulamasi/ v :1.0; */ $iller = array( 0=>'İl Seçiniz', 1=>'ADANA', 2=>'ADIYAMAN', 3=>'AFYON', 4=>'AĞRI', 5=>'AMASYA', 6=>'ANKARA', 7=>'ANTALYA', 8=>'ARTVİN', 9=>'AYDIN', 10=>'BALIKESİR', 11=>'BİLECİK', 12=>'BİNGÖL', 13=>'BİTLİS', 14=>'BOLU', 15=>'BURDUR', 16=>'BURSA', 17=>'ÇANAKKALE', 18=>'ÇANKIRI', 19=>'ÇORUM', 20=>'DENİZLİ', 21=>'DİYARBAKIR', 22=>'EDİRNE', 23=>'ELAZIĞ', 24=>'ERZİNCAN', 25=>'ERZURUM', 26=>'ESKİŞEHİR', 27=>'GAZİANTEP', 28=>'GİRESUN', 29=>'GÜMÜŞHANE', 30=>'HAKKARİ', 31=>'HATAY', 32=>'ISPARTA', 33=>'MERSİN', 34=>'İSTANBUL', 35=>'İZMİR', 36=>'KARS', 37=>'KASTAMONU', 38=>'KAYSERİ', 39=>'KIRKLARELİ', 40=>'KIRŞEHİR', 41=>'KOCAELİ', 42=>'KONYA', 43=>'KÜTAHYA', 44=>'MALATYA', 45=>'MANİSA', 46=>'KAHRAMANMARAŞ', 47=>'MARDİN', 48=>'MUĞLA', 49=>'MUŞ', 50=>'NEVŞEHİR', 51=>'NİĞDE', 52=>'ORDU', 53=>'RİZE', 54=>'SAKARYA', 55=>'SAMSUN', 56=>'SİİRT', 57=>'SİNOP', 58=>'SİVAS', 59=>'TEKİRDAĞ', 60=>'TOKAT', 61=>'TRABZON', 62=>'TUNCELİ', 63=>'ŞANLIURFA', 64=>'UŞAK', 65=>'VAN', 66=>'YOZGAT', 67=>'ZONGULDAK', 68=>'AKSARAY', 69=>'BAYBURT', 70=>'KARAMAN', 71=>'KIRIKKALE', 72=>'BATMAN', 73=>'ŞIRNAK', 74=>'BARTIN', 75=>'ARDAHAN', 76=>'IĞDIR', 77=>'YALOVA', 78=>'KARABÜK', 79=>'KİLİS', 80=>'OSMANİYE', 81=>'DÜZCE' ); $varsayilan = 0; // ilk acilista hangi il ile baslamasini isterseniz, plaka kodunu rakam olarak yazin.. ?> <!DOCTYPE html> <html prefix="og: http://ogp.me/ns#" dir="ltr" lang="tr-tr"> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> <title>Nöbetçi Eczaneler</title> <style> .n-container {width:100%;text-align:center} #frm_nobetci select {padding:3px;margin-bottom:6px} #frm_nobetci button {background:#00B3B3;padding:6px;border:1px solid #00A6A6;cursor:pointer;color:#fff;} #frm_nobetci button:hover {background:#008C8C;} #frm_nobetci button:active {background:#00A6A6;} #sonuc {font-size:14px;margin-top:10px;} #sonuc h4 {margin:0;padding:3px} #sonuc table {border-collapse: collapse;margin:0 auto;} #sonuc table th{padding:3px;background:#F9F9F9;border:1px solid #eee} #sonuc table td{padding:3px;border:1px solid #eee} </style> <script src="http://code.jquery.com/jquery-2.1.4.min.js"></script> <script src="region.js"></script> <script>var $ = jQuery.noConflict();</script> </head> <body> <div class="n-container"> <form id="frm_nobetci" method="post"> <select id="il" name="il"> <?php foreach($iller as $key => $il ):?> <?php $slc = ($varsayilan == $key) ? ' selected="selected"':null;?> <option value="<?php echo $key?>"<?php echo $slc?>><?php echo $il?></option> <?php endforeach?> </select> <br> <select id="ilce" name="ilce" style="display:none"></select> <br> <button type="submit">Getir</button> </form> <div id="sonuc"></div> </div> <script> function ilce_getir(il_id) { $( "#ilce" ).html(""); if(il_id > 0 ) { var db = regiondb[il_id]; $( "#ilce" ).append( "<option value=\"\">İlçe Seçiniz</option>" ); for (var i = 0; i < db.length; i++) { $( "#ilce" ).append( "<option value=\""+db[i].value+"\">"+db[i].text+"</option>" ); } $( "#ilce" ).show(300); } else { $( "#ilce" ).hide(300); } } $( "#il" ).change(function() { var il_id = parseInt($(this).val()) || 0; ilce_getir(il_id); }); // Form submit $( "#frm_nobetci" ).submit(function(event) { var il= parseInt($("#il").val()) || 0; var ilce= parseInt($("#ilce").val()) || 0; if(il < 1 ) { alert('Lütfen İl Seçiniz'); return false; } if(ilce < 1 ) { alert('Lütfen İlçe Seçiniz'); return false; } var yol = 'curl.php'; $.ajax( { type: "POST", url: yol, data: $(this).serialize(), success: function(cevap) { $('#sonuc').html(cevap); $('#sonuc').show(200); } }); event.preventDefault(); }); </script> <?php if($varsayilan):?> <script>ilce_getir(<?php echo $varsayilan?>)</script> <?php endif?> </body> </html>
CURL
<?php /* Author: Sinan Tekmil Author URI: http://www.veblebi.com/ Script URI: http://www.veblebi.com/nobetci-eczaneler-uygulamasi/ v :1.0; */ $url = 'http://e-nobet.org/ne_nobetler.php'; if(isset($_POST['il']) && $_POST['il']) { $postvars = ''; extract($_POST); $postvars = 'listele=1&il='.$il.'&ilce='.$ilce; $ch = curl_init(); curl_setopt($ch,CURLOPT_URL,$url); curl_setopt($ch,CURLOPT_POST, 1); curl_setopt($ch,CURLOPT_POSTFIELDS,$postvars); curl_setopt($ch,CURLOPT_RETURNTRANSFER, true); curl_setopt($ch,CURLOPT_CONNECTTIMEOUT ,3); curl_setopt($ch,CURLOPT_TIMEOUT, 20); $response = curl_exec($ch); curl_close ($ch); $response = iconv("ISO-8859-9","UTF-8", $response); // $test = str_replace(array('</tr>', '</td>' ),array('[tr]', '[td]' ), $response); $test = strip_tags($test); $exp = explode('[tr]',$test); $baslik = $ust = $alt = null; if($exp) { foreach($exp as $key => $v ) { $v = trim($v); if($v) { if($key == 0 ) { $baslik = '<h4>'.str_replace('[td]',null, $v).'</h4>'; } elseif($key == 1 ) { $exp_th = explode('[td]',$v); if($exp_th) { foreach($exp_th as $key1 => $th_v ) { if($key1 < 5 && $key1 > 0 ) $ust .= '<th>'.$th_v.'</th>'; } } } elseif($key > 1 ) { $exp_td = explode('[td]',$v); if($exp_td) { foreach($exp_td as $key2 => $td_v ) { if($key2 < 5 && $key2 > 0 ) { if($key2 == 1 ) $alt .= '<tr>'; $alt .= '<td>'.$td_v.'</td>'; if($key2 == 4) { $alt .= '</tr>'; } } } } } } } $ust = '<tr>'.$ust.'</tr>'; echo $baslik.'<table>'.$ust.$alt.'</table>'; } } ?>
Nasıl Yaptık?
ilgili sitede veriler AJAX, Javascript yoluyla ve ancak POST ile çekildiği için klasik veri okuma ve işleme şansımız yoktu. Önce İl ve ilçe seçimini sağlayacağımız ve verileri POST edebileceğimiz FORM alanını oluşturduk.
Daha sonra form submit eventini yazdık, ve verileri curl.php’ye gönderdik. Uzak adres olduğu için POST işleminde ajax erişim kısıtlaması(CROSS, access origin) vardı, yani yabancı UR den post işlemine kapalıydı, erişim belirtilmemişti, bu nedenle normal yoldan POST edebilmek için CURL kullandık.
Dönen veriyi de bir div alanına yansıttık, css ile biçimlendirdik ve işlemi bitirdik.
Demoyu Görmek için Tıklayın. Uygulamayı indirmek için Tıklayın.
17 Yorum
Hocam Merhabalar,
SSl kurulu bir internet sitesinde görüntüleme yapılmıyor ama sebebi nedir acaba beyaz sayfa var gözükmüyor.ve İframe ile ssl kurulu bir sayfaya çekemiyorum sebebi ne olabilir acaba.Teşekkürler İyi çalışmalar
Iframe içine, başka herhangi bir http siteyi dahil edebiliyor musunuz?
hocam elinize sağlık güzel olmus lakin getir tusuna tıklamadan yani direkt olarak gelme sansı yokmu şimdi bunu ben web sitenin bir kısımında kullanıcam sayfada hani orada direkt olarak koddan belirlediğim il ilçenin nöbet çizelgesi çıksın istiyorum.Kullandığım sistem wordpress.İlginiz için çok teşekkür ederim hocam.
Demoyu incelediniz mi? Zaten öyle, sitenizde nasıl kullanacaksınız tasarımı değiştirmek vb kalıyor geriye..
evet hocam yanyana şekilde değilde alt alta yapabiliyormuyuz onu diyecektim sizide uğraştırıyoruz hakkınızı helal edin hocam
Yada Hocam Şöyle Bir çalışma yapabilirmiyiz bir panel olucak oradan eczaneleri giricez.
Atiyorum 10 tane eczane var Bunları Sırayla Tekrarlayacak Gün gün ataması olucak Sonra Tekrar Yenileyecek
Nöbetçi Eczanedede Mantık Böyle İşliyor.
Eczane1
Eczane2
Eczane3
Eczane4
Eczane5
Eczane6
Eczane7
Eczane8
Eczane9
Eczane10
Eczane1
Eczane2
Eczane3
Eczane4
Eczane5
Eczane6
Eczane7
Eczane8
Eczane9
Eczane10
Şeklinde hocam
Sistem ajax’a geçmiş. O nedenle klasik biçimde verileri almak mümkün değil. Neyse CURL yöntemiyle çalışan uygulamayı yukarıda ön izleyebilir ve indirebilirsiniz…
Üstadım elinize sağlık çok güzel bir uygulama olmuş tebrik ederim.Bunda direk olarak il ve ilçe seçili olarak gelip orada nöbetçi eczane çıkabilirmi acaba?
ili buldum acıklamasını yazmıssınız teşekkür ederiz ilçeyi yapamadım yalnız.
Tekrar indirin, il ve ilçe için varsayılan değer ekledim… Demo da görebilirsiniz.
http://e-nobet.org/index.php?oda=42&i=28 hocam bakın bu siteden de çekebilirmiyiz acaba buradan yapabilirsek daha yararlu olur herhalde link değiştirerek bütün illere uygulayabilirmiyiz acaba
Evet bütün illere uygulanabilir, yalnız şu süreçte vakit ayıramam. Daha sonrası için bir örnek yapabilirim. Aslında tüm eczaneler ve nöbet listesi için basit bir script yazmayı düşünüyorum, dileyen sitesine de ekleyebilir, ama vakit alacağı için kısa zamanda yapma şansım yok.
tamam hocam teşekkürler bilgileriniz için iyi çalışmalar dilerim
hocam bu uygulamanın örneğini giresun içinde yapabilirmiyiz vaktiniz olursa
MErhabalar,
Öncelikle yapmış olduğunuz uygulama çok güzel böyle bir çalışma için sizi tebrik ederim.Lakin sadece istanbul için olması kötü Acaba Diğer İllerede bu uygulamayı yapmanız mümkünmüdür hocam?
Teşekkürler.
İyi Çalışmalar Dilerim…
Mümkündür lakin zaman ve uğraş sitiyor haliyle bu örnekte amacım file_get_contents, preg_match ve preg_replace kullanımına örnek vermekti.
Aynı yol ve yöntemlerle aşağıdaki listede verilen bölge eczazeneler nöbet listelerinden veri alınabilir. Herhangi bir standarda sahip olmadıkları için hepsi de teker, teker uğraş gerektiriyor. Tüm link adresleri bölge, bölge kaydedilecek, ilgili İl ya da ilçenin seçime bağlı olarak, hangi bölgede olduğu tespit edilecek ve ona ait link adresi esas alınacak, okunacak ve ekrana yansıtalacak….
Bölge Listesi
Hocam merhabalar.çok faydalı oldu bu.
fakat bugün hafta sonu ve sizin demoda da göreceğiniz üzere listelenen eczaneler ile http://www.istanbuleczaciodasi.org.tr/nobetler.php?t=i&ilceID=20 adresindekiler aynı değil hafta sonları için ayrı bir fonksiyon mu gerekli acaba?
Merhaba
Eksik bıraktığım bir yer olmuş. Sabah 9:00 ile 9:06 arası sistem okuma işlemi yapıyor. O aralıkta siteye kimse girmez ise ne olacak 🙂 09:06 dan sonra zaten okuma işlemi yapmıyor, haliyle 09:00 – 09:06 aralığında script çalışmamışsa dosya evvel bir tarihe ait olur.
Bu sorunu da dosyanın tarihine bakarak çözebiliriz, saat atıyoum 10 script çalıştı, ama dosya tarihi düne ait, o halde dünkü yerel dosya okunacak. Üstte bu soruna çözüm üreten kodları ekledim ve ayrıca zip dosyasını da güncelledim.
Şimdi artık saat 9 ile 11 arası işlem yapıyor. Mesai başladığında artık nöbetçi eczane durumu kalmıyor, tüm eczaneler açılıyor. 9 dan evvel bakan insanlar aslında hala dünü görecekleri için böyle bir uyarı yoluna gitmiştim.
XML yayını olsa ve tarih belirtilseydi, böyle bir sorunumuz olmazdı 🙂
Teşekkürler.