{"id":1044,"date":"2014-03-31T19:34:42","date_gmt":"2014-03-31T16:34:42","guid":{"rendered":"http:\/\/www.gncz.net\/?p=1044"},"modified":"2014-03-31T19:34:43","modified_gmt":"2014-03-31T16:34:43","slug":"php-ve-jquery-ile-surukleyerek-kategori-degistirme","status":"publish","type":"post","link":"https:\/\/gncz.net\/index.php\/php-ve-jquery-ile-surukleyerek-kategori-degistirme.html","title":{"rendered":"Php ve JQuery ile S\u00fcr\u00fckle B\u0131rak ile Kategori De\u011fi\u015ftirme"},"content":{"rendered":"<p>Bu uygulamam\u0131zda,\u00a0<strong>JQuery ile s\u00fcr\u00fckleyerek kategoriler aras\u0131 de\u011fi\u015ftirilebilir listeler olu\u015fturmak<\/strong>. JQuery\u2019nin\u00a0listeler aras\u0131 s\u00fcr\u00fckle b\u0131rak y\u00f6nteminin (draggable) yan\u0131nda, Php ve MySQL\u2019de veritaban\u0131yla destekleyece\u011fiz \u00e7\u00fcnk\u00fc yapt\u0131\u011f\u0131m\u0131z s\u0131ralaman\u0131n ba\u015fka yerlerde kullanabilmemiz i\u00e7in kaydedilmesi gerekiyor. Uygulamam\u0131z\u0131n veritaban\u0131 i\u015flemlerinde, \u00f6nceki yaz\u0131mda geli\u015ftirdi\u011fimiz\u00a0PDO s\u0131n\u0131f\u0131n\u0131\u00a0kullanaca\u011f\u0131z. Yaz\u0131m\u0131za veritaban\u0131 yap\u0131s\u0131n\u0131 g\u00f6stererek ba\u015flayabiliriz. Ayr\u0131ca yaz\u0131n\u0131n sonunda sql dosyas\u0131n\u0131 da bulabilece\u011finiz indirme ba\u011flant\u0131m\u0131z bulunacak. \u0130lki (\u00fcste bulunan) <strong>kategoriler<\/strong>, ikincisi ise <strong>liste<\/strong>\u00a0adl\u0131 tablomuz.<\/p>\n<table>\n<tbody>\n<tr>\n<td><strong>id<\/strong><\/td>\n<td><strong>adi<\/strong><\/td>\n<td><strong>sirasi<\/strong><\/td>\n<\/tr>\n<tr>\n<td>1<\/td>\n<td>Web sitesi<\/td>\n<td>1<\/td>\n<\/tr>\n<tr>\n<td>2<\/td>\n<td>Programlama dili<\/td>\n<td>2<\/td>\n<\/tr>\n<tr>\n<td>3<\/td>\n<td>Veritaban\u0131<\/td>\n<td>3<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<table>\n<tbody>\n<tr>\n<td><strong>id<\/strong><\/td>\n<td><strong>adi<\/strong><\/td>\n<td><strong>sirasi<\/strong><\/td>\n<td><strong>kategorisi<\/strong><\/td>\n<\/tr>\n<tr>\n<td>1<\/td>\n<td>Bcakir<\/td>\n<td>1<\/td>\n<td>1<\/td>\n<\/tr>\n<tr>\n<td>2<\/td>\n<td>Facebook<\/td>\n<td>2<\/td>\n<td>1<\/td>\n<\/tr>\n<tr>\n<td>3<\/td>\n<td>Instagram<\/td>\n<td>3<\/td>\n<td>1<\/td>\n<\/tr>\n<tr>\n<td>4<\/td>\n<td>Twitter<\/td>\n<td>4<\/td>\n<td>1<\/td>\n<\/tr>\n<tr>\n<td>5<\/td>\n<td>Google<\/td>\n<td>5<\/td>\n<td>1<\/td>\n<\/tr>\n<tr>\n<td>6<\/td>\n<td>Php<\/td>\n<td>1<\/td>\n<td>2<\/td>\n<\/tr>\n<tr>\n<td>7<\/td>\n<td>Python<\/td>\n<td>2<\/td>\n<td>2<\/td>\n<\/tr>\n<tr>\n<td>8<\/td>\n<td>Java<\/td>\n<td>3<\/td>\n<td>2<\/td>\n<\/tr>\n<tr>\n<td>9<\/td>\n<td>SQLite<\/td>\n<td>1<\/td>\n<td>3<\/td>\n<\/tr>\n<tr>\n<td>10<\/td>\n<td>MySQL<\/td>\n<td>2<\/td>\n<td>3<\/td>\n<\/tr>\n<tr>\n<td>11<\/td>\n<td>PostgreSQL<\/td>\n<td>3<\/td>\n<td>3<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Yukar\u0131da yer alan tablolar\u0131 (kategoriler ve\u00a0liste isimli) ve i\u00e7erisindeki \u00a0kay\u0131tlar\u0131n\u0131 kullanaca\u011f\u0131z. \u015eimdi uygulamam\u0131z\u0131n <strong>index.php<\/strong> sayfas\u0131n\u0131 yazabiliriz.<\/p>\n<pre class=\"lang:default decode:true\">&lt;?php\r\ninclude 'db\/db.php';\r\n$db = new baglan;\r\n$liste = $db-&gt;kategoriListesi();\r\n\/\/listeleri kolay olarak kullanmak i\u00e7in ayr\u0131\u015ft\u0131rma\r\n$kategoriler = $liste['0'];\r\n$icerikler = $liste['1'];\r\n$sayac = 0;\r\n?&gt;\r\n&lt;!DOCTYPE html PUBLIC \"-\/\/W3C\/\/DTD XHTML 1.0 Transitional\/\/EN\" \"http:\/\/www.w3.org\/TR\/xhtml1\/DTD\/xhtml1-transitional.dtd\"&gt;\r\n&lt;html xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\" xml:lang=\"en\" lang=\"en\"&gt;\r\n&lt;head&gt;\r\n    &lt;meta http-equiv=\"content-type\" content=\"text\/html; charset=UTF-8\" \/&gt;\r\n    &lt;meta name=\"author\" content=\"bcakir\" \/&gt;\r\n    &lt;script type=\"text\/javascript\" src=\"http:\/\/code.jquery.com\/jquery-1.9.1.js\"&gt;&lt;\/script&gt;\r\n    &lt;script type=\"text\/javascript\" src=\"http:\/\/code.jquery.com\/ui\/1.10.3\/jquery-ui.js\"&gt;&lt;\/script&gt;\r\n    &lt;title&gt;Php ve JQuery ile S\u00fcr\u00fckleyerek Kategori De\u011fi\u015ftirme&lt;\/title&gt;\r\n\r\n    &lt;script type=\"text\/javascript\"&gt;\r\n    $(document).ready(function(){\r\n        $(\".kategoriUl li\").draggable({\r\n            revert: true\r\n        });\r\n\r\n        $(\".kategoriUl\").droppable({\r\n            accept: \".kategoriUl li\",\r\n            drop: function(event, ui){\r\n                var birakilanUl = $(ui.draggable);\r\n                $(this).prepend(birakilanUl);\r\n                var suruklenenLi = ui.draggable.attr(\"id\");\r\n                var birakilanKat = ui.draggable.parent(\"ul\").attr(\"id\");\r\n                $.post(\"db\/db.php\", {lid: suruklenenLi, kid: birakilanKat});\r\n            }\r\n        });\r\n    });\r\n    &lt;\/script&gt;\r\n\r\n    &lt;style&gt;\r\n    h3 {margin: 5px 7px 0 7px; padding: 0 7px; font-size: 14px; line-height: 14px;}\r\n    ul {margin: 0 5px 5px 5px; padding: 5px; list-style-type: none; min-height: 40px;}\r\n    #kategori {float: left; width: 200px; margin-right: 20px;}\r\n    #kategori {border : 2px solid #ccc;}\r\n    .kategoriUl li {cursor: move; margin: 3px 0; padding: 5px;\r\n            background-color:#abe; border: #ccc solid 1px; color:#fff;}\r\n    &lt;\/style&gt;\r\n&lt;\/head&gt;\r\n&lt;body&gt;\r\n\r\n&lt;div id=\"kategoriler\"&gt;\r\n    &lt;?php foreach($kategoriler As $kategori): ?&gt;\r\n        &lt;div id=\"kategori\"&gt;\r\n            &lt;h3&gt;&lt;?php echo $kategori['adi']; ?&gt;&lt;\/h3&gt;\r\n            &lt;ul id=\"&lt;?php echo $kategori['id']; ?&gt;\" class=\"kategoriUl\"&gt;\r\n            &lt;?php foreach($icerikler[$sayac] As $icerik): ?&gt;\r\n                &lt;li id=\"&lt;?php echo $icerik['id']; ?&gt;\"&gt;&lt;?php echo $icerik['adi']; ?&gt;&lt;\/li&gt;\r\n            &lt;?php endforeach; ?&gt;\r\n            &lt;\/ul&gt;\r\n        &lt;\/div&gt;\r\n        &lt;?php $sayac++; ?&gt;\r\n    &lt;?php endforeach; ?&gt;\r\n&lt;\/div&gt;\r\n\r\n&lt;\/body&gt;\r\n&lt;\/html&gt;<\/pre>\n<p>Kategorilerimizi ve bu kategorilerin i\u00e7inde yer alan kay\u0131tlar\u0131m\u0131z\u0131 veritaban\u0131ndan al\u0131p g\u00f6sterdik. Kay\u0131tlar\u0131n s\u00fcr\u00fckleyerek kategorisi de\u011fi\u015ftirildi\u011finde g\u00fcncellemek i\u00e7in post i\u015flemi yapt\u0131k. A\u015fa\u011f\u0131da ise g\u00f6nderilen kayd\u0131n id de\u011ferini ve kategorisini al\u0131p g\u00fcncelleme i\u015flemini Php ile MySQL veritaban\u0131na yapaca\u011f\u0131z.<\/p>\n<pre class=\"lang:default decode:true \">&lt;?php\r\nclass baglan{\r\n    \/\/veritaban\u0131 bilgileri\r\n    const host = 'localhost';\r\n    const user = 'root';\r\n    const pass = '';\r\n    const db = 'bcakir';\r\n    public $conn;\r\n    public $sonuclar = array();\r\n\r\n    public function __construct(){ \/\/a\u00e7\u0131l\u0131\u015fta \u00e7al\u0131\u015ft\u0131r\r\n        $this-&gt;dbBaglantiKur();\r\n    }\r\n\r\n    public function dbBaglantiKur(){ \/\/veritaban\u0131 ba\u011flant\u0131s\u0131 kurma\r\n        try{\r\n            $this-&gt;conn = new PDO(\"mysql:dbname=\".self::db.\";host=\".self::host, self::user, self::pass);\r\n            $this-&gt;conn-&gt;query(\"SET NAMES 'utf8'\");\r\n            $this-&gt;conn-&gt;query('set character set utf8');\r\n        }catch(PDOException $e){\r\n             die($e-&gt;getMessage());\r\n        }\r\n    }\r\n\r\n    public function kategoriListesi(){ \/\/b\u00fct\u00fcn kategori ve i\u00e7eriklerini alma\r\n        $this-&gt;dbKategorileriCek();\r\n        foreach($this-&gt;sonuclar['0'] As $kategori){\r\n            $this-&gt;dbListeyiCek($kategori['id']);\r\n        }\r\n        return $this-&gt;sonuclar;\r\n    }\r\n\r\n    public function dbKategorileriCek(){ \/\/b\u00fct\u00fcn kategorileri alma\r\n        $veriler = $this-&gt;conn-&gt;prepare('SELECT id,adi FROM kategoriler Order By id Asc');\r\n        $veriler-&gt;execute();\r\n        $this-&gt;sonuclar[] = $veriler-&gt;fetchAll(PDO::FETCH_ASSOC);\r\n    }\r\n\r\n    public function dbListeyiCek($kat){ \/\/kategorinin i\u00e7eri\u011fini alma\r\n        $veriler = $this-&gt;conn-&gt;prepare('SELECT id,adi FROM liste Where kategorisi=? Order By sirasi Asc');\r\n        $veriler-&gt;execute(array($kat));\r\n        $this-&gt;sonuclar['1'][] = $veriler-&gt;fetchAll(PDO::FETCH_ASSOC);\r\n    }\r\n\r\n    public function dbVeriyiGuncelle($lid, $kid){ \/\/kay\u0131t\u0131 g\u00fcncelleme\r\n        $guncelle = $this-&gt;conn-&gt;prepare('UPDATE liste SET kategorisi = :kid WHERE id = :id');\r\n        return $guncelle-&gt;execute(array('id' =&gt; $lid, 'kid' =&gt; $kid));\r\n    }\r\n\r\n    public function listeKontrol($lid, $kid){ \/\/post ile gelen veri kontrol\u00fc\r\n        $lid = strip_tags(trim($lid));\r\n        $kid = strip_tags(trim($kid));\r\n        $this-&gt;dbVeriyiGuncelle($lid, $kid);\r\n    }\r\n}\r\n\r\n\/\/g\u00fcncelle iste\u011finde bulunulmu\u015fsa\r\nif(isset($_POST['lid']) &amp;&amp; isset($_POST['kid'])){\r\n    $baglan = new baglan;\r\n    $baglan-&gt;listeKontrol($_POST['lid'], $_POST['kid']);\r\n}\r\n?&gt;<\/pre>\n<p>Yukar\u0131da veritaban\u0131na PDO ile kategorilerimizin i\u00e7eri\u011fini kaydettik.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Bu uygulamam\u0131zda,\u00a0JQuery ile s\u00fcr\u00fckleyerek kategoriler aras\u0131 de\u011fi\u015ftirilebilir listeler olu\u015fturmak. JQuery\u2019nin\u00a0listeler aras\u0131 s\u00fcr\u00fckle b\u0131rak y\u00f6nteminin (draggable) yan\u0131nda, Php ve MySQL\u2019de veritaban\u0131yla destekleyece\u011fiz \u00e7\u00fcnk\u00fc yapt\u0131\u011f\u0131m\u0131z s\u0131ralaman\u0131n ba\u015fka yerlerde kullanabilmemiz i\u00e7in kaydedilmesi gerekiyor. Uygulamam\u0131z\u0131n veritaban\u0131 i\u015flemlerinde, \u00f6nceki yaz\u0131mda geli\u015ftirdi\u011fimiz\u00a0PDO s\u0131n\u0131f\u0131n\u0131\u00a0kullanaca\u011f\u0131z. Yaz\u0131m\u0131za veritaban\u0131 yap\u0131s\u0131n\u0131 g\u00f6stererek ba\u015flayabiliriz. Ayr\u0131ca yaz\u0131n\u0131n sonunda sql dosyas\u0131n\u0131 da bulabilece\u011finiz indirme ba\u011flant\u0131m\u0131z bulunacak. \u0130lki (\u00fcste bulunan) kategoriler, ikincisi ise liste\u00a0adl\u0131 tablomuz.<a class=\"more-link\" href=\"https:\/\/gncz.net\/index.php\/php-ve-jquery-ile-surukleyerek-kategori-degistirme.html\">[Devam\u0131n\u0131 Oku&#8230;]<\/a><\/p>\n","protected":false},"author":1,"featured_media":1046,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[28,20],"tags":[161,162,158,160,159],"_links":{"self":[{"href":"https:\/\/gncz.net\/index.php\/wp-json\/wp\/v2\/posts\/1044"}],"collection":[{"href":"https:\/\/gncz.net\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gncz.net\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gncz.net\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/gncz.net\/index.php\/wp-json\/wp\/v2\/comments?post=1044"}],"version-history":[{"count":2,"href":"https:\/\/gncz.net\/index.php\/wp-json\/wp\/v2\/posts\/1044\/revisions"}],"predecessor-version":[{"id":1048,"href":"https:\/\/gncz.net\/index.php\/wp-json\/wp\/v2\/posts\/1044\/revisions\/1048"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/gncz.net\/index.php\/wp-json\/wp\/v2\/media\/1046"}],"wp:attachment":[{"href":"https:\/\/gncz.net\/index.php\/wp-json\/wp\/v2\/media?parent=1044"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gncz.net\/index.php\/wp-json\/wp\/v2\/categories?post=1044"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gncz.net\/index.php\/wp-json\/wp\/v2\/tags?post=1044"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}