{"id":499,"date":"2012-12-09T11:08:07","date_gmt":"2012-12-09T08:08:07","guid":{"rendered":"http:\/\/ulviercan.com\/teknoblog\/?p=499"},"modified":"2015-01-05T19:02:55","modified_gmt":"2015-01-05T16:02:55","slug":"jquery-ve-php","status":"publish","type":"post","link":"https:\/\/www.ulviercan.com\/teknoblog\/jquery\/jquery-ve-php\/","title":{"rendered":"jQuery ve PHP"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-500\" title=\"hello_world\" alt=\"\" src=\"https:\/\/ulviercan.com\/teknoblog\/wp-content\/uploads\/2012\/12\/hello_world.png\" width=\"450\" height=\"100\" srcset=\"https:\/\/www.ulviercan.com\/teknoblog\/wp-content\/uploads\/2012\/12\/hello_world.png 450w, https:\/\/www.ulviercan.com\/teknoblog\/wp-content\/uploads\/2012\/12\/hello_world-300x67.png 300w, https:\/\/www.ulviercan.com\/teknoblog\/wp-content\/uploads\/2012\/12\/hello_world-248x55.png 248w\" sizes=\"auto, (max-width: 450px) 100vw, 450px\" \/><\/p>\n<p>Merhabalar. Bu hafta jQuery ve PHP i\u015flemlerini inceleyece\u011fiz. Bana g\u00f6re uygularken \u00f6\u011frenmek yaz\u0131l\u0131m konusunda kendimizi geli\u015ftirmek i\u00e7in en iyi y\u00f6ntem. Bu d\u00fc\u015f\u00fcnceden yola \u00e7\u0131karak, jQuery ve PHP ikilisinin bir arada oldu\u011fu iki adet k\u00fc\u00e7\u00fck uygulama geli\u015ftirdim. Bunlar:<!--more--><\/p>\n<div class=\"alignleft\"><!--Ads2--><\/div>\n<div class=\"clear\"><\/div>\n<ul>\n<li>Auto Complete (Otomatik tavsiye veren inputlar) &#8211; <a href=\"https:\/\/ulviercan.com\/teknoblog\/wp-content\/uploads\/myCodeSamples\/jQuery_PHP\/autoComplete.zip\" target=\"_blank\">[ \u00d6rnek uygulamay\u0131 indir ]<\/a><\/li>\n<li>Form Validation (Form do\u011frulama) &#8211; <a href=\"https:\/\/ulviercan.com\/teknoblog\/wp-content\/uploads\/myCodeSamples\/jQuery_PHP\/formValidation.zip\" target=\"_blank\">[ \u00d6rnek uygulamay\u0131 indir ]<\/a><\/li>\n<\/ul>\n<p>Ajax&#8217;\u0131 daha iyi anlamak:<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-514\" title=\"akis_diagrami_jquery_ajax\" alt=\"\" src=\"https:\/\/ulviercan.com\/teknoblog\/wp-content\/uploads\/2012\/12\/akis_diagrami_jquery_ajax.png\" width=\"450\" height=\"348\" srcset=\"https:\/\/www.ulviercan.com\/teknoblog\/wp-content\/uploads\/2012\/12\/akis_diagrami_jquery_ajax.png 450w, https:\/\/www.ulviercan.com\/teknoblog\/wp-content\/uploads\/2012\/12\/akis_diagrami_jquery_ajax-300x232.png 300w, https:\/\/www.ulviercan.com\/teknoblog\/wp-content\/uploads\/2012\/12\/akis_diagrami_jquery_ajax-71x55.png 71w\" sizes=\"auto, (max-width: 450px) 100vw, 450px\" \/><\/p>\n<h1>Auto Complete<\/h1>\n<p>Bu uygulama, input&#8217;a girilen veriye g\u00f6re jQuery UI kullanarak tavsiye sistemi olu\u015fturur. \u0130nput&#8217;a herhangi bir veri girdi\u011fimiz anda, veri hedef dosyaya g\u00f6nderilerek, o dosyada i\u015flenen verinin sonucu bir liste halinde ekrana bast\u0131r\u0131yoruz. Bu uygulama iki adet dosyam\u0131z olacak. Bunlar:<br \/>\n1-) <strong>index.html:<\/strong> Formun yer alaca\u011f\u0131, ve jQuery kodlar\u0131m\u0131z\u0131n yer alaca\u011f\u0131 dosya.<br \/>\n2-) <strong>search.php:<\/strong> Veriyi i\u015fleyecek olan dosya.<\/p>\n<p>Uygulama \u00f6rne\u011fi -&gt; <a href=\"https:\/\/ulviercan.com\/teknoblog\/wp-content\/uploads\/myCodeSamples\/jQuery_PHP\/autoComplete\/\" target=\"_blank\">https:\/\/ulviercan.com\/teknoblog\/wp-content\/uploads\/myCodeSamples\/jQuery_PHP\/autoComplete\/<\/a><\/p>\n<p><strong>index.html:<\/strong><\/p>\n<pre class=\"brush: xml; title: ; notranslate\" title=\"\">\r\n\r\n&lt;!--\r\n * @author Ulvi ERCAN ulviercan.com - destek@ulviercan.com\r\n * @copyright L\u00fctfen kaynak g\u00f6stererek yay\u0131nlay\u0131n\u0131z\r\n--&gt;\r\n\r\n&lt;!doctype html&gt;\r\n\r\n&lt;html lang=&quot;en&quot;&gt;\r\n&lt;head&gt;\r\n    &lt;meta charset=&quot;utf-8&quot; \/&gt;\r\n    &lt;link rel=&quot;stylesheet&quot; href=&quot;https:\/\/code.jquery.com\/ui\/1.9.2\/themes\/base\/jquery-ui.css&quot; \/&gt;\r\n    &lt;script src=&quot;https:\/\/code.jquery.com\/jquery-1.8.3.js&quot;&gt;&lt;\/script&gt;\r\n    &lt;script src=&quot;https:\/\/code.jquery.com\/ui\/1.9.2\/jquery-ui.js&quot;&gt;&lt;\/script&gt;\r\n\r\n    &lt;style&gt;\r\n    .ui-autocomplete-loading {\r\n        background: white url('images\/ui-anim_basic_16x16.gif') right center no-repeat;\r\n    }\r\n    &lt;\/style&gt;\r\n    &lt;script&gt;\r\n    $(function() {\r\n        function log( message ) {\r\n            $( &quot;&lt;div&gt;&quot; ).text( message ).prependTo( &quot;#log&quot; );\r\n            $( &quot;#log&quot; ).scrollTop( 0 );\r\n        }\r\n\r\n        $( &quot;#iller&quot; ).autocomplete({\r\n            source: &quot;search.php&quot;,\r\n            minLength: 1,\r\n            select: function( event, ui ) {\r\n                log( ui.item ?\r\n                    &quot;Se\u00e7ilen: &quot; + ui.item.value:\r\n                    &quot;Hi\u00e7 bir \u015fey se\u00e7ilmedi, girdi: &quot; + this.value );\r\n            }\r\n        });\r\n    });\r\n    &lt;\/script&gt;\r\n&lt;\/head&gt;\r\n&lt;body&gt;\r\n\r\n&lt;div class=&quot;ui-widget&quot;&gt;\r\n    &lt;label for=&quot;iller&quot;&gt;\u0130ller: &lt;\/label&gt;\r\n    &lt;input id=&quot;iller&quot; \/&gt;\r\n&lt;\/div&gt;\r\n\r\n&lt;div class=&quot;ui-widget&quot; style=&quot;margin-top: 2em; font-family: Arial;&quot;&gt;\r\n    Sonu\u00e7:\r\n    &lt;div id=&quot;log&quot; style=&quot;height: 200px; width: 300px; overflow: auto;&quot; class=&quot;ui-widget-content&quot;&gt;&lt;\/div&gt;\r\n&lt;\/div&gt;\r\n\r\n&lt;\/body&gt;\r\n&lt;\/html&gt;\r\n<\/pre>\n<p>Input&#8217;a odaklan\u0131lm\u0131\u015fken her bir keyup olay\u0131nda, jQuery UI sayesinde, input i\u00e7erisindeki veri &#8220;search.php&#8221; dosyas\u0131na g\u00f6nderiliyor. Bunun ger\u00e7ekle\u015fmesi i\u00e7in \u00f6n \u015fart, input i\u00e7erisindeki veri uzunlu\u011funun minLength ile belirtilen de\u011fere e\u015fit veya daha y\u00fcksek olmas\u0131. D\u00f6necek olan veri, jQuery UI taraf\u0131ndan JSON olarak beklenmekte. Listeden herhangi bir veri se\u00e7ildi\u011fi anda select olay\u0131m\u0131z \u00e7al\u0131\u015f\u0131yor ve de\u011feri (ui.item.value) log() fonksiyonuna g\u00f6nderiyor. Bu fonksiyon i\u00e7erisinde ise, de\u011ferimiz alt k\u0131s\u0131mda bulunan log ID&#8217;sine sahip div&#8217;in ba\u015f\u0131na prepend() metodu ile eklenip, kayd\u0131rma \u00e7ubu\u011funu en yukar\u0131 kayd\u0131r\u0131l\u0131yor.<\/p>\n<p><strong>search.php:<\/strong><\/p>\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">\r\n&lt;?php\r\n\r\n\/**\r\n * @author Ulvi ERCAN ulviercan.com - destek@ulviercan.com\r\n * @copyright L\u00fctfen kaynak g\u00f6stererek yay\u0131nlay\u0131n\u0131z\r\n *\/\r\n\r\n header('Content-Type: Text\/html; Charset=utf8');\r\n\r\n$str = &quot;Adana Ad\u0131yaman Afyon A\u011fr\u0131 Amasya Ankara Antalya Artvin Ayd\u0131n Bal\u0131kesir Bilecik Bing\u00f6l Bitlis Bolu Burdur Bursa \u00c7anakkale \u00c7ank\u0131r\u0131 \u00c7orum Denizli Diyarbak\u0131r Edirne Elaz\u0131\u011f Erzincan Erzurum Eski\u015fehir Gaziantep Giresun G\u00fcm\u00fc\u015fhane Hakkari Hatay Isparta Mersin \u0130stanbul \u0130zmir Kars Kastamonu Kayseri K\u0131rklareli K\u0131r\u015fehir Kocaeli Konya K\u00fctahya Malatya Manisa K.Mara\u015f Mardin Mu\u011fla Mu\u015f Nev\u015fehir Ni\u011fde Ordu Rize Sakarya Samsun Siirt Sinop Sivas Tekirda\u011f Tokat Trabzon Tunceli \u015eanl\u0131urfa U\u015fak Van Yozgat Zonguldak Aksaray Bayburt Karaman K\u0131r\u0131kkale Batman \u015e\u0131rnak Bart\u0131n Ardahan I\u011fd\u0131r Yalova Karab\u00fck Kilis Osmaniye D\u00fczce&quot;;\r\n\r\n$arr = explode(&quot; &quot;, $str);\r\n\r\n$input = preg_quote(urldecode($_GET&#x5B;&quot;term&quot;]));\r\n\r\n$result = preg_grep('\/^' . $input . '\/i', $arr);\r\n\r\necho json_encode($result);\r\n\r\n?&gt;\r\n<\/pre>\n<p>Bu dosyada yer alacaklar yapaca\u011f\u0131m\u0131z sisteme g\u00f6re esneklik g\u00f6sterebilir. Ancak tek bir \u015fart var, ekrana bast\u0131raca\u011f\u0131m\u0131z veri JSON format\u0131nda olmal\u0131. Bu betik k\u0131saca \u015funlar\u0131 yap\u0131yor.<\/p>\n<ul>\n<li>$str de\u011fi\u015fkeninde illeri bo\u015flukla ay\u0131rarak bir y\u0131\u011f\u0131n veri olu\u015fturduk.<\/li>\n<li>Explode fonksiyonu ile bu y\u0131\u011f\u0131n\u0131 bir dizi haline getirdik.<\/li>\n<li>index.html sayfas\u0131ndan g\u00f6nderilen, veriyi arama yapmaya uygun hale getirmek i\u00e7in, urldecode fonksiyonunu kulland\u0131k ve d\u00fczenli ifadeler kullanaca\u011f\u0131m\u0131z i\u00e7in, d\u00fczenli ifadelerde \u00f6zel karakterler olan karakterleri escape ettik.<\/li>\n<li>preg_grep fonksiyonu ile dizinin her bir eleman\u0131n\u0131n ba\u015flang\u0131c\u0131nda gelen de\u011feri arad\u0131k. Bunun SQL e\u015fleni\u011fi: &#8220;SELECT * FROM tablo_adi WHERE input LIKE &#8216;%kolon_adi'&#8221; \u015feklinde olacakt\u0131r.<\/li>\n<li>Son olarak sonu\u00e7 dizisini json_encode ile JSON format\u0131na d\u00f6n\u00fc\u015ft\u00fcr\u00fcp ekrana bast\u0131rd\u0131k.<\/li>\n<\/ul>\n<h1>Form Validation<\/h1>\n<p>Bu uygulama ile sayfam\u0131z de\u011fi\u015fmeden, php yard\u0131m\u0131 ile formdaki hatalar\u0131 kontrol ediyoruz. Bu uygulamam\u0131z da iki adet dosyadan olu\u015fuyor. Bunlardan ilk index.html yani formun bulundu\u011fu dosya di\u011feri ise, hata kontrolc\u00fcs\u00fc olan ve sunucu tarafl\u0131 \u00e7al\u0131\u015fan ajax.php dosyas\u0131. Yapt\u0131\u011f\u0131m uygulamada bu dosyan\u0131n i\u00e7erisinde sadece hatalar\u0131 kontrol ediyoruz. \u0130stersek, hatan\u0131n olmad\u0131\u011f\u0131 durumlar i\u00e7in veritaban\u0131na kay\u0131t, oturum ba\u015flatma vs. gibi i\u015flemleri de yapabiliriz.<\/p>\n<p>Uygulama \u00f6rne\u011fi -&gt; <a href=\"https:\/\/ulviercan.com\/teknoblog\/wp-content\/uploads\/myCodeSamples\/jQuery_PHP\/formValidation\/\" target=\"_blank\">https:\/\/ulviercan.com\/teknoblog\/wp-content\/uploads\/myCodeSamples\/jQuery_PHP\/formValidation\/<\/a><\/p>\n<p><strong>index.html:<\/strong><\/p>\n<pre class=\"brush: xml; title: ; notranslate\" title=\"\">\r\n&lt;!--\r\n * @author Ulvi ERCAN ulviercan.com - destek@ulviercan.com\r\n * @copyright L\u00fctfen kaynak g\u00f6stererek yay\u0131nlay\u0131n\u0131z\r\n--&gt;\r\n\r\n&lt;!doctype html&gt;\r\n\r\n&lt;html lang=&quot;en&quot;&gt;\r\n&lt;head&gt;\r\n    &lt;meta charset=&quot;utf-8&quot; \/&gt;\r\n    &lt;link rel=&quot;stylesheet&quot; href=&quot;https:\/\/code.jquery.com\/ui\/1.9.2\/themes\/base\/jquery-ui.css&quot; \/&gt;\r\n    &lt;script src=&quot;https:\/\/code.jquery.com\/jquery-1.8.3.js&quot;&gt;&lt;\/script&gt;\r\n    &lt;script src=&quot;https:\/\/code.jquery.com\/ui\/1.9.2\/jquery-ui.js&quot;&gt;&lt;\/script&gt;\r\n\r\n&lt;style type=&quot;text\/css&quot;&gt;\r\n&lt;!--\r\n    body{\r\n        font-family: Arial;\r\n        font-size: 11px;\r\n        color: #616367;\r\n    }\r\n\r\n    h2{\r\n        margin: 10px;\r\n        padding:0;\r\n    }\r\n\r\n    #main{\r\n        margin: 0 auto;\r\n        width: 1084px;\r\n    }\r\n\r\n\t#container{\r\n\t   float: left;\r\n\t   margin: 20px;\r\n       border: 1px dashed #ccc;\r\n       width: 500px;\r\n\t}\r\n\r\n    .container_ic{\r\n        margin: 5px;\r\n        padding: 10px;\r\n        background-color: #e9e9e9;\r\n    }\r\n\r\n\t#gonderilenVeriler{\r\n\t   float: right;\r\n\t   margin: 20px;\r\n       border: 1px dashed #ccc;\r\n       width: 500px;\r\n       clear:right\r\n\t}\r\n\r\n    .gonderilenVeriler_ic{\r\n        margin: 5px;\r\n        padding: 10px;\r\n        background-color: #e9e9e9;\r\n    }\r\n\r\n\t#donenSonuclar{\r\n\t   margin: 20px;\r\n       border: 1px dashed #ccc;\r\n       width: 500px;\r\n       clear: left;\r\n\t}\r\n\r\n    .donenSonuclar_ic{\r\n        margin: 5px;\r\n        padding: 10px;\r\n        background-color: #e9e9e9;\r\n    }\r\n\r\n    .satir{\r\n        height: 26px;\r\n        clear: both;\r\n    }\r\n\r\n    .sutun{\r\n        float: left;\r\n        width: 100px;\r\n    }\r\n\r\n    .sutun2{\r\n        float: left;\r\n        width: 170px;\r\n    }\r\n\r\n    .durum{\r\n        color: red;\r\n        font-weight: bold;\r\n        line-height: 25px;\r\n    }\r\n\r\n    .clear{\r\n        clear: both;\r\n    }\r\n--&gt;\r\n&lt;\/style&gt;\r\n&lt;\/head&gt;\r\n&lt;body&gt;\r\n\r\n    &lt;div id=&quot;main&quot;&gt;\r\n    &lt;form id=&quot;kayitFormu&quot;&gt;\r\n        &lt;div id=&quot;container&quot;&gt;\r\n            &lt;h2&gt;Kay\u0131t Formu&lt;\/h2&gt;\r\n            &lt;div class=&quot;container_ic&quot;&gt;\r\n                &lt;div class=&quot;satir&quot;&gt;\r\n                    &lt;div class=&quot;sutun&quot;&gt;Ad\u0131n\u0131z:&lt;\/div&gt;\r\n                    &lt;div class=&quot;sutun2&quot;&gt;&lt;input type=&quot;text&quot; name=&quot;ad&quot; id=&quot;ad&quot; \/&gt;&lt;\/div&gt;\r\n                    &lt;div class=&quot;durum&quot; id=&quot;ad_durum&quot;&gt;&lt;\/div&gt;\r\n                &lt;\/div&gt;\r\n                &lt;div class=&quot;satir&quot;&gt;\r\n                    &lt;div class=&quot;sutun&quot;&gt;Soyad\u0131n\u0131z:&lt;\/div&gt;\r\n                    &lt;div class=&quot;sutun2&quot;&gt;&lt;input type=&quot;text&quot; name=&quot;soyad&quot; id=&quot;soyad&quot; \/&gt;&lt;\/div&gt;\r\n                    &lt;div class=&quot;durum&quot; id=&quot;soyad_durum&quot;&gt;&lt;\/div&gt;\r\n                &lt;\/div&gt;\r\n                &lt;div class=&quot;satir&quot;&gt;\r\n                    &lt;div class=&quot;sutun&quot;&gt;Cinsiyet:&lt;\/div&gt;\r\n                    &lt;div class=&quot;sutun2&quot;&gt;\r\n                        &lt;label&gt;&lt;input type=&quot;radio&quot; name=&quot;cinsiyet&quot; value=&quot;Erkek&quot; \/&gt; Erkek&lt;\/label&gt;\r\n                        &lt;label&gt;&lt;input type=&quot;radio&quot; name=&quot;cinsiyet&quot; value=&quot;Kad\u0131n&quot; \/&gt; Kad\u0131n&lt;\/label&gt;\r\n                    &lt;\/div&gt;\r\n                    &lt;div class=&quot;durum&quot; id=&quot;cinsiyet_durum&quot;&gt;&lt;\/div&gt;\r\n                &lt;\/div&gt;\r\n                &lt;div class=&quot;satir&quot;&gt;\r\n                    &lt;div class=&quot;sutun&quot;&gt;Bizi nas\u0131l buldunuz:&lt;\/div&gt;\r\n                    &lt;div class=&quot;sutun2&quot;&gt;\r\n                        &lt;label&gt;&lt;input type=&quot;checkbox&quot; name=&quot;nasil&#x5B;]&quot; value=&quot;\u0130nternet&quot; \/&gt; \u0130nternet&lt;\/label&gt;\r\n                        &lt;label&gt;&lt;input type=&quot;checkbox&quot; name=&quot;nasil&#x5B;]&quot; value=&quot;Sms&quot; \/&gt; Sms&lt;\/label&gt;\r\n                        &lt;label&gt;&lt;input type=&quot;checkbox&quot; name=&quot;nasil&#x5B;]&quot; value=&quot;Bas\u0131n&quot; \/&gt; Bas\u0131n&lt;\/label&gt;\r\n                    &lt;\/div&gt;\r\n                    &lt;div class=&quot;durum&quot; id=&quot;nasil_durum&quot;&gt;&lt;\/div&gt;\r\n                &lt;\/div&gt;\r\n                &lt;div class=&quot;satir&quot; style=&quot;height: 73px;&quot;&gt;\r\n                    &lt;div class=&quot;sutun&quot;&gt;Sevdi\u011finiz Cihazlar:&lt;\/div&gt;\r\n                    &lt;div class=&quot;sutun2&quot;&gt;\r\n                        &lt;select multiple=&quot;multiple&quot; name=&quot;sevdiginiz_cihazlar&#x5B;]&quot; id=&quot;sevdiginiz_cihazlar&quot;&gt;\r\n                            &lt;option value=&quot;GalaxySIII&quot;&gt;Galaxy S III&lt;\/option&gt;\r\n                            &lt;option value=&quot;iPhone5&quot;&gt;iPhone 5&lt;\/option&gt;\r\n                            &lt;option value=&quot;SonyXperia&quot;&gt;Sony Xperia&lt;\/option&gt;\r\n                            &lt;option value=&quot;Nokia&quot;&gt;Nokia&lt;\/option&gt;\r\n                        &lt;\/select&gt;\r\n                    &lt;\/div&gt;\r\n                    &lt;div class=&quot;durum&quot; id=&quot;sevdiginiz_durum&quot;&gt;&lt;\/div&gt;\r\n                &lt;\/div&gt;\r\n                &lt;div class=&quot;satir&quot;&gt;\r\n                    &lt;div class=&quot;sutun&quot;&gt;&amp;nbsp;&lt;\/div&gt;\r\n                    &lt;div class=&quot;sutun2&quot;&gt;&lt;input type=&quot;submit&quot; name=&quot;gonder&quot; id=&quot;gonder&quot; value=&quot;Kaydet&quot; \/&gt;&lt;\/div&gt;\r\n                    &lt;div id=&quot;donenVeri&quot;&gt;&lt;\/div&gt;\r\n                &lt;\/div&gt;\r\n            &lt;\/div&gt;\r\n        &lt;\/div&gt;\r\n    &lt;\/form&gt;\r\n\r\n    &lt;div id=&quot;gonderilenVeriler&quot;&gt;\r\n    &lt;h2&gt;G\u00f6nderilen Veriler&lt;\/h2&gt;\r\n        &lt;div class=&quot;gonderilenVeriler_ic&quot;&gt;&lt;\/div&gt;\r\n    &lt;\/div&gt;\r\n\r\n    &lt;div id=&quot;donenSonuclar&quot;&gt;\r\n    &lt;h2&gt;D\u00f6nen Sonu\u00e7lar&lt;\/h2&gt;\r\n        &lt;div class=&quot;donenSonuclar_ic&quot;&gt;&lt;\/div&gt;\r\n    &lt;\/div&gt;\r\n&lt;\/div&gt;\r\n\r\n&lt;script type=&quot;text\/javascript&quot;&gt;\r\n&lt;!--\r\n    $(&quot;#kayitFormu&quot;).submit(function() {\r\n\r\n        $.ajax({\r\n            url: &quot;ajax.php&quot;,\r\n            dataType: &quot;json&quot;,\r\n            type: &quot;post&quot;,\r\n            data: $(&quot;#kayitFormu&quot;).serialize(), \/\/ Form verisini query string haline d\u00f6n\u00fc\u015ft\u00fcrd\u00fck\r\n            success: function(donenVeri) {\r\n                $(&quot;.durum&quot;).empty();\r\n\r\n                if( donenVeri.hata ){\r\n                    $.each(donenVeri.hataliAlanlar, function(i, val) {\r\n                        $(&quot;#&quot; + val.id + &quot;_durum&quot;).html(val.hataMesaji).hide().fadeIn(&quot;slow&quot;);\r\n                    });\r\n                }\r\n            },\r\n            error: function(jqXHR, textStatus, errorThrown) {\r\n                console.log(textStatus, errorThrown); \/\/ Konsola hatay\u0131 bast\u0131r\u0131yoruz\r\n            }\r\n        });\r\n\r\n        \/\/ G\u00f6nderilen verileri g\u00f6rmek i\u00e7in ikinci ajax iste\u011fimizi yap\u0131yoruz\r\n        $.ajax({\r\n            url: &quot;ajax.php&quot;,\r\n            dataType: &quot;html&quot;,\r\n            type: &quot;post&quot;,\r\n            data: &quot;gonderilenVeriyiGor=true&amp;&quot; + $(&quot;#kayitFormu&quot;).serialize(), \/\/ Form verisini query string haline d\u00f6n\u00fc\u015ft\u00fcrd\u00fck\r\n            success: function(donenVeri) {\r\n                $(&quot;#gonderilenVeriler .gonderilenVeriler_ic&quot;).html(donenVeri)\r\n            }\r\n        });\r\n\r\n        \/\/ D\u00f6nen sonucu html format\u0131nda g\u00f6rmek i\u00e7in \u00fc\u00e7\u00fcnc\u00fc ajax iste\u011fimizi yap\u0131yoruz\r\n        $.ajax({\r\n            url: &quot;ajax.php&quot;,\r\n            dataType: &quot;html&quot;,\r\n            type: &quot;post&quot;,\r\n            data: $(&quot;#kayitFormu&quot;).serialize(), \/\/ Form verisini query string haline d\u00f6n\u00fc\u015ft\u00fcrd\u00fck\r\n            success: function(donenVeri) {\r\n                $(&quot;#donenSonuclar .donenSonuclar_ic&quot;).html(donenVeri)\r\n            }\r\n        });\r\n        return false;\r\n    });\r\n--&gt;\r\n&lt;\/script&gt;\r\n&lt;\/body&gt;\r\n&lt;\/html&gt;\r\n<\/pre>\n<p>Bu sistem bir b\u00fct\u00fcn olarak \u00e7al\u0131\u015fmaktad\u0131r. HTML kodlar\u0131n\u0131 incelerseniz, server&#8217;dan d\u00f6necek olan cevab\u0131 input&#8217;a has bir \u015fekilde belirtmek i\u00e7in her bir input&#8217;un bir durum kutusu var. Yani ad k\u0131sm\u0131nda bir hata varsa, ad input&#8217;unun yan\u0131na hatay\u0131 detayl\u0131 bir \u015fekilde &#8220;ad giriniz&#8221; veya &#8220;ad\u0131n\u0131z en az iki karakter uzunlu\u011funda olmal\u0131&#8221; \u015feklinde belirtiyoruz. \u0130lk iste\u011fi a\u00e7\u0131klamak gerekirse, Ajax ile g\u00f6nderilen veriyi i\u015fleyecek olan dosya &#8220;ajax.php&#8221; olarak belirlendi. D\u00f6nen verinin format\u0131n\u0131n ise JSON olaca\u011f\u0131n\u0131 s\u00f6yledik. G\u00f6nderim tipimiz POST. D\u00f6nen verinin i\u00e7erisinde hata ikilik de\u011feri var. E\u011fer bu de\u011fer true ise, formda bir hata var ve ona g\u00f6re i\u015flemleri yap\u0131yoruz. Bu i\u015flemler d\u00f6nen hatalar\u0131 ekrana animasyonlu bir \u015fekilde bast\u0131rmak ve e\u011fer form ikinci defa g\u00f6nderiliyorsa \u00f6nceki g\u00f6nderimden kalan hatalar\u0131 ekrandan temizlemektir.<\/p>\n<p>Di\u011fer iki Ajax iste\u011fi ise sizlere, g\u00f6nderilen veriyi ve d\u00f6nen cevab\u0131 g\u00f6stermek ama\u00e7l\u0131 kullan\u0131lm\u0131\u015ft\u0131r.<\/p>\n<p><strong>ajax.php:<\/strong><\/p>\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">\r\n&lt;?php\r\n\r\n\/**\r\n * @author Ulvi ERCAN ulviercan.com - destek@ulviercan.com\r\n * @copyright L\u00fctfen kaynak g\u00f6stererek yay\u0131nlay\u0131n\u0131z\r\n *\/\r\n\r\n    if($_POST&#x5B;&quot;gonderilenVeriyiGor&quot;]){\r\n        echo &quot;&lt;pre&gt;&quot;;\r\n        var_dump($_POST);\r\n        echo &quot;&lt;\/pre&gt;&quot;;\r\n        exit;\r\n    }\r\n\r\n    $sonuc = array(&quot;hata&quot; =&gt; false);\r\n\r\n    if($_POST&#x5B;&quot;ad&quot;]==&quot;&quot;){\r\n        $sonuc&#x5B;&quot;hata&quot;] = true;\r\n        $sonuc&#x5B;&quot;hataliAlanlar&quot;]&#x5B;] = array(&quot;id&quot; =&gt; &quot;ad&quot;, &quot;hataMesaji&quot; =&gt; &quot;Ad Bo\u015f Olamaz&quot;);\r\n\r\n    }elseif(strlen($_POST&#x5B;&quot;ad&quot;]) &lt; 2){\r\n        $sonuc&#x5B;&quot;hata&quot;] = true;\r\n        $sonuc&#x5B;&quot;hataliAlanlar&quot;]&#x5B;] = array(&quot;id&quot; =&gt; &quot;ad&quot;, &quot;hataMesaji&quot; =&gt; &quot;Ad alan\u0131 en az 2 karakter olmal\u0131&quot;);\r\n    }\r\n\r\n    if($_POST&#x5B;&quot;soyad&quot;]==&quot;&quot;){\r\n        $sonuc&#x5B;&quot;hata&quot;] = true;\r\n        $sonuc&#x5B;&quot;hataliAlanlar&quot;]&#x5B;] = array(&quot;id&quot; =&gt; &quot;soyad&quot;, &quot;hataMesaji&quot; =&gt; &quot;Soyad Bo\u015f Olamaz&quot;);\r\n\r\n    }elseif(strlen($_POST&#x5B;&quot;soyad&quot;]) &lt; 2){\r\n        $sonuc&#x5B;&quot;hata&quot;] = true;\r\n        $sonuc&#x5B;&quot;hataliAlanlar&quot;]&#x5B;] = array(&quot;id&quot; =&gt; &quot;soyad&quot;, &quot;hataMesaji&quot; =&gt; &quot;Soyad alan\u0131 en az 2 karakter olmal\u0131&quot;);\r\n\r\n    }\r\n\r\n    if(empty($_POST&#x5B;&quot;cinsiyet&quot;])){\r\n        $sonuc&#x5B;&quot;hata&quot;] = true;\r\n        $sonuc&#x5B;&quot;hataliAlanlar&quot;]&#x5B;] = array(&quot;id&quot; =&gt; &quot;cinsiyet&quot;, &quot;hataMesaji&quot; =&gt; &quot;L\u00fctfen cinsiyetinizi se\u00e7in&quot;);\r\n\r\n    }\r\n\r\n    if(count($_POST&#x5B;&quot;nasil&quot;]) &lt; 1){\r\n        $sonuc&#x5B;&quot;hata&quot;] = true;\r\n        $sonuc&#x5B;&quot;hataliAlanlar&quot;]&#x5B;] = array(&quot;id&quot; =&gt; &quot;nasil&quot;, &quot;hataMesaji&quot; =&gt; &quot;En az bir kutu i\u015faretlemelisiniz&quot;);\r\n    }\r\n\r\n    echo json_encode($sonuc);\r\n?&gt;\r\n<\/pre>\n<p>Kodun en ba\u015f\u0131nda kulland\u0131\u011f\u0131 if deyimi, 2. iste\u011fimiz olan g\u00f6nderilen veriyi g\u00f6rmek ama\u00e7l\u0131 olarak kullan\u0131lm\u0131\u015ft\u0131r. Bu istek esnas\u0131nda exit komutu sayesinde sadece if blo\u011fu i\u00e7inde yer alan kodlar \u00e7al\u0131\u015fmaktad\u0131r. Bu k\u0131sm\u0131n yapaca\u011f\u0131 i\u015f ise $_POST dizisini ekrana d\u00f6kmek olacakt\u0131r.<\/p>\n<p>Kodun kalan k\u0131sm\u0131nda ise her bir alan i\u00e7in gerekli kontrolleri yapt\u0131k ve bu kontrollerin sonu\u00e7lar\u0131n\u0131 belirli bir yap\u0131ya sahip olan dizimize att\u0131k. Daha sonra bu diziyi JSON format\u0131na \u00e7evirerek ekrana bast\u0131rd\u0131k. Dizinin yap\u0131s\u0131 \u015fu \u015fekildedir:<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\n\r\narray(2) {\r\n  &#x5B;&quot;hata&quot;]=&gt;\r\n  bool(true)\r\n  &#x5B;&quot;hataliAlanlar&quot;]=&gt;\r\n  array(4) {\r\n    &#x5B;0]=&gt;\r\n    array(2) {\r\n      &#x5B;&quot;id&quot;]=&gt;\r\n      string(2) &quot;ad&quot;\r\n      &#x5B;&quot;hataMesaji&quot;]=&gt;\r\n      string(14) &quot;Ad Bo\u015f Olamaz&quot;\r\n    }\r\n    &#x5B;1]=&gt;\r\n    array(2) {\r\n      &#x5B;&quot;id&quot;]=&gt;\r\n      string(5) &quot;soyad&quot;\r\n      &#x5B;&quot;hataMesaji&quot;]=&gt;\r\n      string(17) &quot;Soyad Bo\u015f Olamaz&quot;\r\n    }\r\n    &#x5B;2]=&gt;\r\n    array(2) {\r\n      &#x5B;&quot;id&quot;]=&gt;\r\n      string(8) &quot;cinsiyet&quot;\r\n      &#x5B;&quot;hataMesaji&quot;]=&gt;\r\n      string(28) &quot;L\u00fctfen cinsiyetinizi se\u00e7in&quot;\r\n    }\r\n    &#x5B;3]=&gt;\r\n    array(2) {\r\n      &#x5B;&quot;id&quot;]=&gt;\r\n      string(5) &quot;nasil&quot;\r\n      &#x5B;&quot;hataMesaji&quot;]=&gt;\r\n      string(33) &quot;En az bir kutu i\u015faretlemelisiniz&quot;\r\n    }\r\n  }\r\n}\r\n<\/pre>\n<p>Burada ad, soyad, cinsiyet ve nasil \u015feklinde nitelendirdi\u011fimiz ID anahtar\u0131n\u0131n de\u011ferleri, d\u00f6nen hatan\u0131n index.html sayfas\u0131ndaki hangi input&#8217;un yan\u0131na yazd\u0131r\u0131laca\u011f\u0131n\u0131 belirtiyor.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Merhabalar. Bu hafta jQuery ve PHP i\u015flemlerini inceleyece\u011fiz. Bana g\u00f6re uygularken \u00f6\u011frenmek yaz\u0131l\u0131m konusunda kendimizi geli\u015ftirmek i\u00e7in en iyi y\u00f6ntem. Bu d\u00fc\u015f\u00fcnceden yola \u00e7\u0131karak, jQuery ve PHP ikilisinin bir arada oldu\u011fu iki adet k\u00fc\u00e7\u00fck uygulama geli\u015ftirdim. Bunlar:<\/p>\n","protected":false},"author":3,"featured_media":500,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8,9],"tags":[41,21,37,14],"class_list":["post-499","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-jquery","category-php","tag-javascript","tag-jquery-2","tag-jquery-php","tag-php-2"],"_links":{"self":[{"href":"https:\/\/www.ulviercan.com\/teknoblog\/wp-json\/wp\/v2\/posts\/499","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ulviercan.com\/teknoblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.ulviercan.com\/teknoblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.ulviercan.com\/teknoblog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ulviercan.com\/teknoblog\/wp-json\/wp\/v2\/comments?post=499"}],"version-history":[{"count":34,"href":"https:\/\/www.ulviercan.com\/teknoblog\/wp-json\/wp\/v2\/posts\/499\/revisions"}],"predecessor-version":[{"id":694,"href":"https:\/\/www.ulviercan.com\/teknoblog\/wp-json\/wp\/v2\/posts\/499\/revisions\/694"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.ulviercan.com\/teknoblog\/wp-json\/wp\/v2\/media\/500"}],"wp:attachment":[{"href":"https:\/\/www.ulviercan.com\/teknoblog\/wp-json\/wp\/v2\/media?parent=499"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.ulviercan.com\/teknoblog\/wp-json\/wp\/v2\/categories?post=499"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.ulviercan.com\/teknoblog\/wp-json\/wp\/v2\/tags?post=499"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}