Turkish Tutorial of Codeigniter | PHP| Part 24 |Blog Sitesi Yapımı 20

View this thread on: d.buzz | hive.blog | peakd.com | ecency.com
·@pars11·
0.000 HBD
Turkish Tutorial of Codeigniter | PHP| Part 24 |Blog Sitesi Yapımı 20
<hr>

> **Codeigniter**
CodeIgniter is an Application Development Framework - a toolkit - for people who build web sites using PHP. Its goal is to enable you to develop projects much faster than you could if you were writing code from scratch, by providing a rich set of libraries for commonly needed tasks, as well as a simple interface and logical structure to access these libraries. CodeIgniter lets you creatively focus on your project by minimizing the amount of code needed for a given task.

[Source](https://github.com/bcit-ci/CodeIgniter)

<hr>

<center>
 ![ci-logo-big.png](https://res.cloudinary.com/hpiynhbhq/image/upload/v1515627089/xxgyoygth4i4gyucvmrw.png)

[Resim Kaynak](https://codeigniter.com)
 </center>

<hr>

 <br>

### Linklerimiz
[Github](https://github.com/bcit-ci/CodeIgniter)

[Codeigniter Website](https://codeigniter.com)

[Proje Dosyamız](https://drive.google.com/file/d/1TQ_okasdPbDQKIuBvl2VnhBT6k2f86vX/view?usp=sharing)

<hr>

What Will I Learn? | Neler Öğreneceğim?
------------ | -------------
- Phpmyadmin table edit (For article category) | - Phpmyadmin tablo düzenleme (Yazı kategorisi için)
- Yonetimpaneli.php Controller Edit (For article category)| - Yonetimpaneli.php Controller Düzenleme (Yazı kategorisi için)
- Yaziekle.php View Edit (For article category)| - Yaziekle.php View Düzenleme (Yazı kategorisi için)
- Yaziguncelle.php View Edit (For article category)| - Yaziguncelle.php View Düzenleme (Yazı kategorisi için)
- Yazilar.php View Edit (For article category)| - Yazilar.php View Düzenleme (Yazı kategorisi için)

<hr>

Requirements | Gereksinimler
------------ | -------------
- Notepad++ ([Website](https://notepad-plus-plus.org/download/v7.5.4.html))| - Notepad++ ([Website](https://notepad-plus-plus.org/download/v7.5.4.html))
- Intermediate code and algorithm knowledge| - Orta derece kod ve algoritma bilgisi
- Basic HTML and CSS knowledge | - Basit HTML and CSS bilgisi
- Basic PHP knowledge | - Basit PHP bilgisi
- Basic Database knowledge | - Basit Veritabanı bilgisi
- Localhost or Server (For run the project) | - Localhost veya sunucu (Projeyi çalıştırmak için)

<hr>

Difficulty | Zorluk
------------ | -------------
- Intermediate| - Orta

<hr>

#### Curriculum (Bu konuyla ilgili içeriklerim)
Part 22: [Turkish Tutorial of Codeigniter | PHP| Part 22 |Blog Sitesi Yapımı 18
](https://utopian.io/utopian-io/@pars11/turkish-tutorial-of-codeigniter-or-php-or-part-22-or-blog-sitesi-yapimi-18)

Part 23: [Turkish Tutorial of Codeigniter | PHP| Part 23 |Blog Sitesi Yapımı 19
](https://utopian.io/utopian-io/@pars11/turkish-tutorial-of-codeigniter-or-php-or-part-23-or-blog-sitesi-yapimi-19)

Part 24: (Şuan buradasınız) [Proje Dosyamız](https://drive.google.com/file/d/1TQ_okasdPbDQKIuBvl2VnhBT6k2f86vX/view?usp=sharing)

For other tutorials you can visit [my profile.](https://utopian.io/@pars11)

Diğer eğitimler için [profilimi](https://utopian.io/@pars11) ziyaret edebilirsiniz.

<hr>

#### Tutorial Contents (Yazının İçeriği)
Bu eğitimizdede blog projemize devam ediyoruz. Önceki eğitimimizde  yönetim panelimizin kategori entegrelerine devam etmiştik ve kategori silme ve güncelleme özelliklerimizin entegrelerini yapmıştık. Bu eğitimimizde ise yazılarımıza kategorilerimizin entegrelerini yapacağız yazı eklerken yazımızın kategorisinide seçtireceğiz bunun için öncelikle yazilar tablomuzu güncelleyeceğiz. Sonra modelimizdeki gerekli düzenlemeleri yapacağız. Controllerımızda yeni düzenlemeler yapacağız ve son olarak duyuruekle view'imizide düzenleyerek bu dersimizide bitireceğiz.

<hr>

# Phpmyadmin tablo düzenleme (Yazılar tablosu)
Evet öncelikle yazılar tablomuzu düzenleyerek yazıkategorisi bölümü eklememiz gerekli ki yazılarımızın hangi kategorimizde bulunduğunu öğrenebilelim. Bunun için phpmyadmin'mize gireceğiz ben localhost kullandığım için "localhost/phpmyadmin/" url'em ile giriş yapacağım. Siz kullandığınız veritabanı sistemine girebilirsiniz. Burada yazılar tablomuza ek bir sütun ekleyeceğiz.

![1.png](https://res.cloudinary.com/hpiynhbhq/image/upload/v1517590155/tgwk31r1ztaz1r9mmlis.png)

Açılan panelimizde "blogsitesi" veritabanımıza tıkladıktan sonra yazilar tablomuza tıklayacağız.

![2.png](https://res.cloudinary.com/hpiynhbhq/image/upload/v1517590264/nlv5ntmmmovexgokrnqx.png)

Tablomuzu görüntüledikten sonra üst taraftan yapı bölümüne tıklayacağız.

![3.png](https://res.cloudinary.com/hpiynhbhq/image/upload/v1517590344/ggcvs8srsptcxel7rcuj.png)

Buradan ise yazibaslik'dan sonrasına bir sütun ekle diyerek git tuşuna basacağız.

![4.png](https://res.cloudinary.com/hpiynhbhq/image/upload/v1517590426/kvix6l4ohfpc8xmrx7nd.png)

Gelen alandan sütunumuzun özelliklerini belirleyip kaydet diyeceğiz. Ben sütunumuzun adını "yazikategori" türünü varchar uzunluğunu 250 olarak belirledim siz isteğinize göre bir düzenleme yapabilirsiniz.

![5.png](https://res.cloudinary.com/hpiynhbhq/image/upload/v1517590535/geijnvzmwlinkwskmwj3.png)

Evet kategorilerimiz için tablomuzun düzenlemesini başarıyla tamamladık. Bu düzenlemeden sonra artık yazılarımızın kategori bölümünüde veritabanımıza kaydedebileceğiz.

<hr>

# Yonetimpaneli.php Controller Düzenleme (Yazı kategorisi için)
Evet yonetim panelimizdeki yazı ekleme fonksiyonumuz şuan sadece view'imizi açıyor ama biz yazılarımıza kategori eklemekte istiyoruz bunun için yazı ekle ve yazı güncelle fonksiyonumuzu ve viewlerimizi kategori ekleyebilmemiz için düzenleyeceğiz. 

Yazı ekle fonksiyonumuz şu şekilde:

<hr>

```public function yaziekle()```

```{```

```$this->load->model('vt');```

```$kategoriler=$this->vt->kategoricek();```

```$data=new stdClass;```

```$data->bilgi=$kategoriler;```

```$this->load->view('yonetim/yaziekle',$data);```

```}```

<hr>

Evet yeni yazı ekleme fonksiyonumuz bu şekilde kodlarımızı açıklamam gerekirse öncelikle "yaziekle" adında fonksiyonumuzu oluşturduk. Fonksiyonumuz içinde ise modelimizi yükledik, "kategoriler" adlı bir değişken oluşturduk ve modelimizdeki "kategoricek" fonksiyonumuzla kategori bilgilerimizi bu değişkenimize eşitledik. Sonra "data" adında yeni bir class oluşturduk ve bu class'ımızın "bilgi" bölümünü "kategoriler" değişkenimize eşitledik son olarak  yaziekle view'imizi datamızla yani kategori bilgilerimizle beraber açtık.

Şimdi veritabanımızıda yazı girişi yapmak için kullandığımız "yaziinsert" fonksiyonumuzu kategori bilgimizide alacak şekilde düzenleyeceğiz.

Yeni yaziinsert fonksiyonumuzda şu şekilde:

<hr>

```public function yaziinsert()```

```{```

```$baslik=$this->input->post('baslik');```

```$kategori=$this->input->post('kategori');```

```$aciklama=$this->input->post('aciklama');```

```$tarih=date('d-m-Y');```

```$data=array('yazibaslik'=>$baslik,```

```'yazikategori'=>$kategori,```

```'yaziaciklama'=>$aciklama,```

```'yazitarih'=>$tarih,```

```'yazilink'=>sef($baslik),```

```'yazitiksayisi'=>0);```
					
```$this->load->model('vt');```

```$insert=$this->vt->yaziekle($data);```

```if($insert)```

```{```

```$this->session->set_flashdata('bilgi','<div class="alert alert-success alert-dismissable">```

```<button type="button" class="close" data-dismiss="alert" aria-hidden="true">x</button>```

```Tebrikler. Yazınız başarıyla eklendi. </div>');```

```redirect('yonetimpaneli/yazilar');```

```}```

```}```

<hr>

Evet "yaziinsert" fonksiyonumuzunda yeni hali bu şekilde olacak. Sadece yaziekle view'imizden aldığımız inputlarımıza kategoriler inputumuzda ekledik ve data array'imizde modelimize göndermek için kategori değişkenimizide seçtik. 

<hr>

![6.png](https://res.cloudinary.com/hpiynhbhq/image/upload/v1517593270/d96wlyp3iwu9ai5sbrdt.png)

Şimdi "yaziguncelle" ve yaziupdate fonksiyonumuzuda aynı şekilde güncellememiz gerekiyor. Çünkü bu işlemlerlede yazımızda kategorilendirme bulunacak artık.

Yaziguncelle fonksiyonumuzun yeni hali şu şekilde:

<hr>

```public function yaziguncelle($id)```

```{```

```$this->load->model('vt');```

```$inf=$this->vt->yazibilgi($id);```

```$kategoriler=$this->vt->kategoricek();```

```$data['inf']=$inf;```

```$data['bilgi']=$kategoriler;```

```$this->load->view('yonetim/yaziguncelle',$data);```

```}```

<hr>

Evet yaziguncelle fonksiyonumuzda yeni hali bu şekilde bildiğiniz gibi yaziguncelle fonksiyonumuzda yazımızın bilgileriyle beraber "yaziguncelle" view'imizi açıyorduk. Şimdi kategori seçme alanımızıda eklediğimiz için bu data class'ımızda bilgi diye bir alan daha oluşturup buradan ise kategorimizin bilgilerinide view'imize gönderdik ki güncelleme işlemi yaparken seçilmiş kategorimizide "yaziupdate" fonksiyonumuza gönderebilelim.

Şimdi ise modelimizle beraber yazı güncellerimizi yapan "yaziupdate" fonksiyonumuzu düzenleyeceğiz.

Yaziupdate fonksiyonumuzun yeni hali şu şekilde:

<hr>

```public function yaziupdate($id)```

```{```

```$baslik=$this->input->post('baslik');```

```$kategori=$this->input->post('kategori');```

```$aciklama=$this->input->post('aciklama');```

```$data=array('yazibaslik'=>$baslik,```

```'yazikategori'=>$kategori,```

```'yaziaciklama'=>$aciklama,```

```'yazilink'=>sef($baslik));```
		
```$this->load->model('vt');```

```$sonuc=$this->vt->yaziguncelle($data,$id);```

```if($sonuc)```

```{```

```$this->session->set_flashdata('bilgi','<div class="alert alert-success alert-dismissable">```

```<button type="button" class="close" data-dismiss="alert" aria-hidden="true">x</button>```

```Tebrikler. Yazınız başarıyla güncellendi. </div>');```

```redirect('yonetimpaneli/yazilar');```

```}```

```}```

<hr>

Evet "yaziupdate" fonksiyonumuzda yeniledik. İnputlarımızı çektiğimiz değişkenlerimize kategori bilgimizide ekledik. Ve gönderdiğimiz dizimizede bu değişkenimizi ekledik. Böylelikle yazılar veritabanımıza güncelle fonksiyonumuzdada kategori bilgimizide göndermiş olduk.

![1.png](https://res.cloudinary.com/hpiynhbhq/image/upload/v1517601396/qi13oa2atsqjisksealx.png)

Evet yönetim panelimizin controllerının düzenlemeleride bu kadardı yazılarımıza kategori entegresi için şimdi view'lerimizin düzenlemesine geçebiliriz.

<hr>

# Yaziekle.php View Düzenleme (application/views/yonetim/yaziekle.php)
Evet yazılarımıza kategori entegremizi yaptığımız için yani her yazımızın artık bir kategorisi olacağı için yazı ekle view'imize bir adet daha form grup ekleyerek kategori seçme bölümümüzü koyacağız. Zaten controllerımızdada kategori bilgilerimizi yönlendirdiğimiz için view'imizde sadece foreach döngümüzle kategorilerimizin adını gelen verimizden yazdıracağız.

Kodlarımız şu şekilde:

<hr>

```<div class="form-group">```

```<label>Yazı Kategorisi</label>```

```<select name="kategori" class="form-control">```

```<?php foreach($bilgi as $bilgi) { ?>```

```<option><?php echo $bilgi->kategoriadi ?></option>```

```<?php } ?>```

```</div>```

```</select>```

<hr>

Evet kategorileri listeleme kodumuz bu şekilde kodlarımızı genel olarak açıklamam gerekirse "Yazı kategorisi" label'ımızı oluşturduk yeni bir select oluşturduk ve içine foreach döngümüzle controllerımızdan gelen bilgi class'ımızın kategoriadı bölümünü yazdırdık böylelikle veritabanımızdaki tüm kategorilerin kategori adlarını select'imizin içine doldurmuş olduk. Select'imizin adıda kategori olduğu için controllerımız burada seçtiğimiz kategori adını yazımızın kategori bölümüne yazacak.

![2.png](https://res.cloudinary.com/hpiynhbhq/image/upload/v1517602031/uo9njhzalhqenzecf8g5.png)

Evet yazı ekle view'imizinde düzenlemesi bu kadardı. Yazı güncelle view'imizin düzenlemesine geçebiliriz.

<hr>

# Yaziguncelle.php View Düzenleme (application/views/yonetim/yaziguncelle.php)
Evet yazı güncelleme view'imizide yazı ekle view'imize yaptığımız gibi kategori seçme alanı ekleyeceğiz. Kodumuz yine aynı şekilde olacak bir düzenleme yapmamıza gerek yok siz isterseniz default select alanına yazımızın eski kategorisini sabitleyebilirsiniz ama ben şimdilik gerek duymadım.

Kodlarımız şu şekilde:

<hr>

```<div class="form-group">```

```<label>Yazı Kategorisi</label>```

```<select name="kategori" class="form-control">```

```<?php foreach($bilgi as $bilgi) { ?>```

```<option><?php echo $bilgi->kategoriadi ?></option>```

```<?php } ?>```

```</div>```

```</select>```

<hr>

Evet yukarıda yazı ekle view'imizde yazdığımız kodun aynısını yazı güncelle view'imizede ekliyoruz.

![3.png](https://res.cloudinary.com/hpiynhbhq/image/upload/v1517602327/bhwjyjcl35dcjbfiiztz.png)

Evet yazı güncelleme view'imizden düzenlemesi bu kadardı artık yazı güncelleme işlemimizede kategori seçim bölümümüzü ekledik.

<hr>

# Yazilar.php View Düzenleme (application/views/yonetim/yazilar.php)
Evet yazılarımıza kategori entegremiz için son olarak yazılar view'imizi düzenleyeceğiz. Hatırlayacağınız üzere yazilar sayfamızda yazılarımızı tablo biçiminde listeliyorduk ama şuan kategori bölümümüz bulunmuyor tablomuzda şimdi tablo sütunlarımıza bunun eklemesini yapacağız. Ve gelen bilgilerimizle yazılarımızın kategorilerinide tablomuzda yazdıracağız.

Kodlarımız şu şekilde:

<hr>

```<th>Yazı Kategori</th>```

```<td><?php echo $bilgi->yazikategori;?></td>```

<hr>

Evet yukarıda th tagımızla belirlediğimiz yeni sütun adımızı ve td ile tagımızla belirlediğimiz içindeki bilgileri yazilar view'imizdeki tablomuzun kodlarının içine yerleştireceğiz. Aşağıdaki görselde işaretlediğim şekilde.

![4.png](https://res.cloudinary.com/hpiynhbhq/image/upload/v1517602805/ua8vlzx2xgei6ign4jp5.png)

Evet bu güncellemeyle beraber yazılarımıza kategorilerimizin entegresinide tamamlamış olduk.

<hr>

Ekran görüntüsü:

![5.png](https://res.cloudinary.com/hpiynhbhq/image/upload/v1517603046/umiipnffro8i0s0adftj.png)

<hr>

Büyük ihtimal yeni utopian güncellemesiyle beraber bu eğitim serisini ingilizce olarak devam ettiremeyeceğim. Çünkü türkçe olarak anlatması bile zamanımı alıyor. Zaten farkettiğiniz gibi uzun uzun cümlelerle detaylı anlatımlar yapıyordum ki bu seride devam edersem aynı şekilde devam eder bunu ingilizce olarak yapacak kadarda yeterli ingilizcem yok maalasef bu yüzden farklı şekillerde farklı ingilizce serilerle devam etmeyi düşünüyorum. Ama sizinde bu geçtiğimiz 20 küsür partlık eğitimde bir çok şeyi kavradığınızı umuyorum. Yani bu 20 partı okuyan arkadaşlar projenin devamını çok güzel bir şekilde getirebilir veya kendi projelerini yazabilirler. Başka eğitimlerde ve yazılarda görüşmek üzere okuduğunuz için teşekkürler.
👍 , , , , , ,