Girilen Sayının Asal Çarpanlarını Bulma

Girilen sayının asal çarpanlarını bulma. Kullanıcıdan girilen bir sayının asal çarpanlarını bulan bir örnek JAVA uygulaması geliştireceğiz

Merhaba arkadaşlar bugün sizlerle birlikte kullanıcıdan girilen bir sayının asal çarpanlarını bulan bir örnek JAVA uygulaması geliştireceğiz . Örnek projemizin kodlarını yazmaya başlamadan önce asal sayılar ve asal çarpanlar hakkında kısaca bilgi vermek istiyorum.

Asal Sayı Nedir

Asal sayılar sadece iki pozitif böleni bulunan pozitif sayılardır. Asal sayılar sadece kendisine ve 1 sayısına kalansız bölünebilmektedir. En küçük asal sayı iki (2) dir. Asal sayılar arasında sadece 1 tane çift asal sayı vardır oda iki (2) dir.

Asal Sayılar:

2, 3, 5, 7, 11, 13, 17, 19 şeklinde sonsuza kadar devam etmektedir.


Asal Çarpanlar Nasıl Bulunur?

Pozitif doğal sayımızı 1 sayısına eşit olana kadar kendisini tam bölen en küçük asal sayıya bölerek sayımızı asal asal çarpanlarını ayırıyoruz. Bu açıklamayı sizlere daha net anlayabilmeniz için aşağıdaki örneği inceleyebilirsiniz.

72 sayımızı 2.2.2.3.3 şeklinde asal çarpanlarına ayırabiliriz.

Evet bir pozitif doğal sayının asal çarpanlarına nasıl ayrıldığını da bu şekilde öğrenmiş olduk.

NOT: Negatif sayıların asal çarpanları yoktur.


Girilen Sayının Asal Çarpanlarını Bulma Örneği

Örneğimizde temel olarak Scanner sınıfını kullanarak kullanıcıdan sayı alacağız. Eğer Scanner sınıfı ile ilgili detaylı bilgiye ulaşmak isterseniz ilk örneğimizi inceleyebilirsiniz. Ardından aldığımız sayının pozitif olup olmadığını kontrol edeceğiz. Eğer sayımız pozitif bir sayı değilse kullanıcıya sayının pozitif bir sayı olmadığını belirteceğiz fakat sayımız pozitif bir sayı ise asal çarpanlarını bulacağız. Yapacaklarımızı da belirlediğimize göre algoritmamızı programa dökebiliriz.

İlk olarak projemize Scanner sınıfını dahil ediyor ve ardından bu sınıfımızda scan adında bir nesne türeterek sınıfımızı kullanmaya başlıyoruz.

import java.util.Scanner;
public class girilenSayiyiAsalCarpanlarinaAyirma {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		
	}
}

Artık kullanıcıdan verileri alabileceğimiz bir scan nesnemizi ürettik. Artık aldığımız değerin hafızada tutulabilmesi için bir adet değişken oluşturalım ve kullanıcıdan bu değişkene bir değer girmesini isteyelim.

import java.util.Scanner;
public class girilenSayiyiAsalCarpanlarinaAyirma {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int sayi = 0;
		System.out.println("Asal çarpanlarına ayrılacak sayıyı giriniz: ");
		sayi = scan.nextInt();
		
	}
}

Kullanıcımızdan gelen değeri sayı isimli değişkenimize aktadık. Artık almış olduğumuz bu sayının kurallara uygun olup olmadığını kontrol edebiliriz.

import java.util.Scanner;
public class girilenSayiyiAsalCarpanlarinaAyirma {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int sayi = 0;
		System.out.println("Asal çarpanlarına ayrılacak sayıyı giriniz: ");
		sayi = scan.nextInt();
		if(sayi < 1)
		{
			//Girilen değer 0 veya negatif bir sayı ise bu blok çalışacaktır.
			
		} else {
			//Girilen değer pozitif bir sayı ise bu blok çalışacaktır.
			
		}
		
	}
}

Kurallarımızı da oluşturduğumuza göre artık kurallarımız içerisinde işlemler yapabiliriz. İlk olarak kurallara uymayan kullanıcı girişleri için kullanıcıya “Girdiğiniz sayı pozitif bir doğal sayı değildir.” şeklinde bir bilgilendirme mesajı yazalım.

import java.util.Scanner;
public class girilenSayiyiAsalCarpanlarinaAyirma {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int sayi = 0;
		System.out.println("Asal çarpanlarına ayrılacak sayıyı giriniz: ");
		sayi = scan.nextInt();
		if(sayi < 1)
		{
			//Girilen değer 0 veya negatif bir sayı ise bu blok çalışacaktır.
			System.out.println("Girdiğiniz sayı pozitif bir doğal sayı değildir.");
			
		} else {
			//Girilen değer pozitif bir sayı ise bu blok çalışacaktır.
			
		}
		
	}
}

Artık girilen sayılar kurallara uygun olduğunu kabul ederek. Asal çarpanları tespit edebilecek döngümüzü oluşturabiliriz. İlk olarak bir değişken oluşturarak en küçük asal sayımızı değer olarak atıyoruz. Artından bir adet while döngüsü oluşturabiliriz. While döngümüzde belirlememiz gerek şart kullanıcıdan alınan sayı 1 sayısına eşit olana dek döngüye devam etmesidir.

Döngümüz devam ederken içerisinde bir adet şart koymamız gerekmektedir. Bu şartımız sayımızın mod unu alıp sıfıra eşit olması durumunda ekrana çarpan değerini yazmaktadır. Eşit olmaması durumunda çarpan değerini bir arttırarak tekrar kontrol etmesini sağlamaktadır.

import java.util.Scanner;
public class girilenSayiyiAsalCarpanlarinaAyirma {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int sayi = 0;
		System.out.println("Asal çarpanlarına ayrılacak sayıyı giriniz: ");
		sayi = scan.nextInt();
		if(sayi < 1)
		{
			//Girilen değer 0 veya negatif bir sayı ise bu blok çalışacaktır.
			System.out.println("Girdiğiniz sayı pozitif bir doğal sayı değildir.");
			
		} else {
			//Girilen değer pozitif bir sayı ise bu blok çalışacaktır.
			
			int carpan = 2; // Bölen değerini hesaplamak
			while(sayi != 1)
			{ // Sayı bire eşit değilse döngüye devam et.
				if(sayi % carpan == 0)
				{ // Sayı carpan değişkenine tam bölünüyorsa eğer bu bloğu çalıştır.
					sayi = sayi / carpan; // Sayımızı carpan değişkenine bölerek yeni oluşan değeri sayi değişkenine aktar.
					System.out.println(carpan); //bulmuş olduğumuz carpan değerini ekrana yaz.
					carpan = 2; //carpan değerini tekrar en küçük asal sayıya eşitle.
				} else { //Sayı carpan değişkenine tam bölünMÜyorsa eğer bu bloğu çalıştır.
					carpan++; //carpan değerini bir arttır.
				}
			}
		}
	}
}

Örneğimizin Tüm Kodları

Örneğimizde bulunan kodların tamamının bir araya getirilmiş halidir.

import java.util.Scanner;
public class girilenSayiyiAsalCarpanlarinaAyirma {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int sayi = 0;
		System.out.println("Asal çarpanlarına ayrılacak sayıyı giriniz: ");
		sayi = scan.nextInt();
		if(sayi < 1)
		{
			//Girilen değer 0 veya negatif bir sayı ise bu blok çalışacaktır.
			System.out.println("Girdiğiniz sayı pozitif bir doğal sayı değildir.");
			
		} else {
			//Girilen değer pozitif bir sayı ise bu blok çalışacaktır.
			
			int carpan = 2; // Bölen değerini hesaplamak
			while(sayi != 1)
			{ // Sayı bire eşit değilse döngüye devam et.
				if(sayi % carpan == 0)
				{ // Sayı carpan değişkenine tam bölünüyorsa eğer bu bloğu çalıştır.
					sayi = sayi / carpan; // Sayımızı carpan değişkenine bölerek yeni oluşan değeri sayi değişkenine aktar.
					System.out.println(carpan); //bulmuş olduğumuz carpan değerini ekrana yaz.
					carpan = 2; //carpan değerini tekrar en küçük asal sayıya eşitle.
				} else { //Sayı carpan değişkenine tam bölünMÜyorsa eğer bu bloğu çalıştır.
					carpan++; //carpan değerini bir arttır.
				}
			}
		}
	}
}

Girilen sayının asal çarpanlarını Bulma örneğimi incelediğiniz için teşekkür ederim. Sağlıklı günler dilerim.

Bloğumu halen incelemediniz mi ? https://enginyenice.com/

Hakkımda: https://enginyenice.com/hakkimda/

İletişim: https://enginyenice.com/iletişim/

Girilen Sayının Faktöriyelini Hesaplama

JAVA programlama dili kullanarak kullanıcıdan alınan bir sayının faktöriyelini hesaplayıp kullanıcıya hesaplamanın sonucunu kurallar uygun olarak göstereceğiz.

Merhaba arkadaşlar bu yazımızda sizlerle birlikte JAVA programlama dili kullanarak kullanıcıdan alınan bir sayının faktöriyelini hesaplayıp kullanıcıya hesaplamanın sonucunu göstereceğiz. Programımızı yazmaya başlamadan önce faktöriyelin ne olduğu hakkında kısaca bilgi vermek istiyorum.

Faktöriyel Nedir?

Matematiksel olarak sağına ! (ünlem) işareti koyulmuş sayıya verilen isimdir. Pozitif sayılar için geçerlidir. Detaylı bilgi için wikipedia sitesini ziyaret edebilirsiniz.

Peki bu ! (ünlem) işareti sayımıza nasıl bir anlam yükler ?

Sayımızın sağında bulunan ünlem işareti sayımızın kendisinden başlayıp 1 sayısına kadar olan tüm pozitif tam sayıların çarpımını ifade etmektedir. Örneğin

8! = 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1 = 40320

5! = 5 * 4 * 3 * 2 * 1 = 120

3! = 3 * 2 *1 = 6

1! = 1

Fakat önemli iki kural vardır.

  • 0 sayısının faktöriyeli bire eşittir.
  • Negatif sayıların faktöriyeli tanımsızdır.

0! = 1

-5! = Tanımsız

Genel olarak faktöriyel hesaplaması bu şekilde yapılmaktadır. Birazdan yapacağımız örnekte en önemli kısımlardan biriside faktöriyel kurallarıdır. Bu kurallara uygun şartlar yazmamamız durumunda yanlış sonuçlar elde edebileceğimizi unutmayım.

Artık faktöriyel hesaplamayı ve faktöriyel hesaplamanın temel kurallarınıda öğrendiğimize göre faktöriyel hesaplaması yapacağımız örnek projemize geçebiliriz.


Girilen Sayının Faktoriyelini Hesaplama Örneği

Örneğimiz temel olarak kullanıcıdan bir sayı girmesini isteyecektir. Girilen bu sayının temel faktöriyel kurallarına uygun olup olmadığını test ettikten sonra şartlara uygun bir sonuç üretip kullanıcıya bu sonucu gösterecektir.

import java.util.Scanner;
public class girilenSayininFaktoriyeli {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);

	}
}

İlk olarak kullanıcıdan bir veri girişi yapmasını isteyeceğiz. Bunun için bir önceki makalemizde SCANNER kullanımından bahsetmiştik eğer eksiğiniz olduğunu düşünüyorsanız bir önceki makalemize bakabilirsiniz. İlk olarak scanner sınıfımızı dahil edelim ve bu sınıftan bir adet nesne oluşturalım.

import java.util.Scanner;
public class girilenSayininFaktoriyeli {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);

	}
}

Evet artık bir adet scan adında scanner nesnemiz mevcut. Kullanıcıdan bir adet tam sayı almamız gerektiği için integer tipinde bir değişken oluşturalım ve kullanıcıdan bir değer girmesini gerektiğini belirtelim. Ardından kullanıcının girdiği değeri oluşturduğumuz integer değişkene aktaralım.

import java.util.Scanner;
public class girilenSayininFaktoriyeli {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int sayi = 0;
		System.out.println("Faktöriyeli hesaplanacak sayi: ");
		sayi = scan.nextInt();
	}
}

Evet artık elimizde sayı adında bir değişken var ve bu değişkenin içerisinde kullanıcıdan aldığımız değeri tutuyoruz. Artık faktöriyel hesaplayabiliriz. Bundan önce önemli 2 adet kuralımız vardı onlar için birer şart yazalım.

İlk şartımız girilen sayı 0 ise faktöriyeli daima birdir.

    if(sayi == 0)
    {
        System.out.println("1");
    }

ardından diğer şartımız olan negatif sayıların faktöriyeli tanımdızdır. Bunun içinde if şartımızın devamında else if şartı eklebiliriz.

Else if: Bir sorgulama işleminde iki veya daha fazla karşılaştırma yapılması gerekiyorsa kullanılır.

if(sayi == 0)
{
	System.out.println("Sonuç: 1");
} else if(sayi < 0)
{
	System.out.println("Sonuç: TANIMSIZ");
}

artık genel olarak 2 kuralımızı da kontrol edebiliyoruz. Üstteki iki kuralımızın geçersiz olması durumunda sayımızın pozitif bir sayı olduğunu kabul edebilir ve sayımızın faktöriyelini hesaplayabiliriz. Bunun için else if sorgumuzun devamına else şartı ekleyelim ve içerisinde sayımızın faktöriyelini hesaplayalım.

İlk olarak sonucun tutulduğu bir integer değişken oluşturalım. Ardından girilen sayıdan 1 sayısına kadar tüm elemanları çarpmamız gerekiyor. Bunun için biz for döngüsünü kullanabiliriz. Ardından hesapladığımız sonucu çıktı olarak ekrana bastırabiliriz.

if(sayi == 0)
		{
			System.out.println("Sonuç: 1");
		} else if(sayi < 0)
		{
			System.out.println("Sonuç: TANIMSIZ");
		} else {
			int sonuc = 1;
			for (int i = sayi; i > 0; i--) {
				sonuc = i * sonuc; 
			}
			System.out.println("Sonuç: "+sonuc);
		}

Artık programımız faktöriyel kurallarını biliyor ve kurallara uygun sonuçlar üretebiliyor.


Örneğimizin Tüm Kodları

Örneğimizde bulunan kodların tamamının bir araya getirilmiş halidir.

import java.util.Scanner;
public class girilenSayininFaktoriyeli {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int sayi = 0;
		System.out.println("Faktöriyeli hesaplanacak sayi: ");
		sayi = scan.nextInt();
		if(sayi == 0)
		{
			System.out.println("Sonuç: 1");
		} else if(sayi < 0)
		{
			System.out.println("Sonuç: TANIMSIZ");
		} else {
			int sonuc = 1;
			for (int i = sayi; i > 0; i--) {
				sonuc = i * sonuc; 
			}
			System.out.println("Sonuç: "+sonuc);
		}
	}
}

Girilen sayının faktöriyelini hesaplama örneğimi incelediğiniz için teşekkür ederim. Sağlıklı günler dilerim.

Bloğumu halen incelemediniz mi ? https://enginyenice.com/

Hakkımda: https://enginyenice.com/hakkimda/

İletişim: https://enginyenice.com/iletişim/

JAVA Girilen İki Sayının Toplamı

JAVA programlama dilini kullanarak. Klavyeden alınan iki sayıyı toplayıp sonucu çıktı ile kullanıcıya göstereceğiz.

Merhaba arkadaşlar bugün ki yazımızda sizlerle birlikle JAVA programlama dilini kullanarak. Klavyeden alınan iki sayıyı toplayıp sonucu çıktı ile kullanıcıya göstereceğiz. Kod editörü olarak Eclipse kullanıyor olacağım.

İlk olarak eclipse üzerinden “File>New >Java Project” diyerek yeni bir proje oluşturalım. Yeni oluşturduğumuz projeye sağ tıklayıp “New>Class” seçeneğini seçelim. Ardından Name kısmına istediğiniz bir sınıf ismi verebilirsiniz. Witch method subs would you like to create? seçeneğinden public static_void Main(String[] args) seçeneğini aktif edelim. Ardından Finish diyerek sınıfımı oluşturalım.

Kullanıcıdan veri girmesini istediğimiz zaman bir adet sınıf kullanıyoruz. Bu sınıfın adı Scanner dir.

Scanner Sınıfının Projeye Eklenmesi

Sınıfımızı projemize dahil edebilmek için import sözcüğünü kullanıyoruz. Projemizin en üst satırına gelerek

import java.util.Scanner;

komutunu ekliyoruz ve Scanner sınıfımız projemize dahil olmuş oluyor.

Scanner Sınıfından Nesne Üretilmesi

Scanner sınıfımızı projemize dahil ettik fakat kullanabilmemiz için bu sınıftan nesne & nesneler üretmemiz gerekiyor. Bizim Scanner sınıfından bir adet nesne üretmemiz yeterli olacaktır. Bunun için Main blokları içerisine

Scanner scan = new Scanner(System.in);

kodumuzu ekleyerek scan adında bir nesne üretmiş oluyoruz. Buradaki scan ismini siz istediğiniz gibi değiştirebilirsiniz. Genel olarak Scanner nesneleri scan olarak isimlendirilir.

Kullanıcıdan Veri Alma

İlk olarak alacağımız değerleri hafızada tutması için 3 adet değişken oluşturalım. Bunlara sayi1,sayi2 ve toplam isimlerini verelim.


int sayi1 = 0;
int sayi2 = 0;
int toplam = 0;

Veya

int sayi1 = 0,sayi2 = 0, toplam = 0;

Değişkenlerimiz aynı tipte olduğu için tek bir satır üzerinden de tanımlayabiliriz.

Artık kullanıcıdan veri almak için herşeyimiz hazır. Değişkenimize değer atayabilmek için scan nesnesini aşağıda gösterilen örnekteki gibi kullanabilir.

sayi1 = scan.nextInt()

Scanner sınıfı integer değer okumanın yanında bir çok farklı veri tipinide okuyabilmektedir. (String, float, byte vs..)

scan nesnesinden nasıl veri alacağımızı da öğrendiğimize göre artık örneğimizi tamamlayabiliriz. Değişkenlerimizi oluşturduktan sonraki satıra aşağıdaki kodları yazabiliriz.

System.out.println("Lütfen ilk sayıyı giriniz: "); 
sayi1 = scan.nextInt();
System.out.println("Lütfen ikinci sayıyı giriniz: ");
sayi2 = scan.nextInt();
toplam = sayi1 + sayi2;
System.out.println("Sayıların toplamı: "+ toplam);

Buradaki komutlar ile kullanıcıdan 2 adet sayı girmesini istedik ve ardından bu sayıları sayi1 ve sayi2 değişkenlerine aktardık. Ardından bu değişkenlerdeki değerleri toplayıp. Toplam değişkeni içerisine aktardık. Oluşan sonucu da ekrana çıktı olarak bastık.

Örneğimizin Tüm Kodları

import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int sayi1 = 0;
		int sayi2 = 0;
		int toplam = 0;

		System.out.println("Lütfen ilk sayıyı giriniz: "); 
		sayi1 = scan.nextInt();
		System.out.println("Lütfen ikinci sayıyı giriniz: ");
		sayi2 = scan.nextInt();
		toplam = sayi1 + sayi2;
		System.out.println("Sayıların toplamı: "+ toplam);
	}
}

Örneğimi incelediğiniz için teşekkür ederim. Sağlıklı günler dilerim.

Bloğumu halen incelemediniz mi ? https://enginyenice.com/

Hakkımda: https://enginyenice.com/hakkimda/

Hakkımda: https://enginyenice.com/hakkimda/

Laravel Veritabanı İşlemleri

Laravel Framworkü kullanarak veritabanı ile genel (ekle, düzenle, listele ve görüntümele) işlemlerinin nasıl gerçekleştirileceğini göstereceğim.

Merhabalar bugün sizlere Laravel Framwork‘ü ile veritabanı işlemlerinin nasıl yapılacağını anlatacağım. Detaylı sorgular için Laravel tarafından oluşturulmuş Database: Query Builder inceleyebilirsiniz.

1. Adım Laravel Projesi Oluşturma

Komut yöneticisini açıyoruz.(CMD & Terminal) ardından bilgisayarınızda global olarak laravel yüklü ise

laravel new crudExample

kodunu kullanabilirsiniz. Fakat bilgisayarınızda sadece composer yüklü ise

composer create-project --prefer-dist laravel/laravel crudExample

komutunu kullanarak crudExample adında bir Laravel projesi oluşturabilirsiniz. Yükleme işlemleri tamamlandıktan sonra.


2. Adım Veritabanı Oluşturma İşlemleri

Ben bu aşamada MySQL kullanacağım. İlk olarak phpmyadmin üzerinde bir adet veritabanı oluşturalım. Ben isim olarak crudexample adını veriyorum fakat siz istediğiniz herhangi bir ismi verebilirsiniz.

Artık Laravel framworküne bağlayacağımız bir veritabanımız var. Şimdi projemizin ana dizininde bulunan .env dosyasını açalım ve gerekli düzenlemeleri yapalım.

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=veritabanınızın adı (Örn: crudexample)
DB_USERNAME=veritabanınızın kullanıcı adı (Örn: root)
DB_PASSWORD=veritabanınızın şifresi (Örn: 123)

Laravel ile veritabanı bağlantımızı başarıyla yaptık.


3. Adım Tablo Oluşturma (Migration Oluşturma)

Artık veritabanı bağlantımızı da yaptığımıza göre tablolarımızı oluşturabiliriz. Laravel 7 ile birlikte komut satırına (CMD & Terminal ) komutlarımızı yazarak model oluşturabiliriz.

php artisan make:migration create_articles_table --create=articles

create_articles_table adında migration bilgilerimizin tutulacağı bir php dosyası oluşturacaktır.

–create=articles komutu ise bize hazır bir şablon vermektedir. Burada geçen articles ismi ise tablomuzun adını belitmektedir. create_articles_table dosyasına ulaşmak için “database/migrations” yolunu takip edebilirsiniz.

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateArticlesTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('articles', function (Blueprint $table) {
            $table->id();            // UNIQ ID
            $table->string('title'); // Yazı başlığı.
            $table->text('article'); // Yazımız
            $table->timestamps();    // Oluşturma ve Düzenleme tarihleri
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('articles');
    }
}

İçeriğinde başlık ve yazımızın bulunduğu bir tablonun temellerini hazırladık. Artık kodumuzu çalıştırarak tablomuzu veritabanına kayıt edebiliriz. Bu işlem için komut satırına (CMD & Terminal)

php artisan migrate

komutunu yazıp çalıştıralım. Veritabanımıza gidip baktığımızda 2 adet tablo oluştuğunu göreceksiniz.

migrations : Migrasyon verilerinin tutulduğu tablo.

articles : Bizim oluşturduğumuz. Yazılarımızın tutulacağı tablo.


4. Adım Route Oluşturma

Laravel’in genel veritabanı işlemlerinin yapıldığı hazır bir route inşa edebiliyor. Bunun için “route/web.php” dosyasının içerisine

Route::resource('articles','ArticleController');

Komutunu eklemeniz yeterlidir. Bu sayede oluşturacağımız Controller’ın routelarını tek bir komut ile tanımlamış olduk.


5. Adım Controller ve Model Oluşturma

Bu işlemi hızlıca yapabilmek için tekrar Komut satırını (CMD & Terminal) kullanacağız.

php artisan make:controller ArticleController --resource --model=Article

Bu komut ile bir AritcleController adında bir Controller ve Article adında bir Model oluşturuyoruz. Oluştururken bize model oluşturmak isteyip istemediğimiz hakkında soru soruyor bu soruya yes cevabını vererek Modelimizide oluşturmuş oluyoruz.

Peki bu –resource nedir ?

–resource komutu ile hazır kaynak kodlarımızı Controller’a dahil etmiş oluyoruz. Bu kaynak kodlarının içerisinde:

  • index() : Verilerimizin listeleneceği method
  • create(): Veri ekleme sayfamızın görüntüleneceği method
  • store(): Veri ekleme işlemimizin gerçekleşeceği method
  • show(): Tek bir verimizin detaylı listeleneceği method
  • edit(): Veri düzenleme sayfamızın görüntüleneceği method
  • update(): Veri güncelleme işleminin gerçekleşeceği method
  • destroy(): Veri silme işleminin gerçekleşeceği method

şeklinde bizlere hazır methodlar sağlamaktadır. Bu methodları Controllarınız üzerinden görmek isterseniz “app/http/Controllers/ArticleController.php” dosya yoluna gidip inceleyebilirsiniz.

<?php

namespace App\Http\Controllers;

use App\Article;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;

class ArticleController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        $articles = Article::get();
        return view("articles.list",['articles' => $articles]);
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        return view("articles.create");
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        $request->validate([
            'title'     => 'required',
            'article'   => 'required',
        ]);

        Article::create($request->all());
        return redirect()->route('articles.index')
                        ->with('success','Kayıt başarıyla yapıldı.');
    }

    /**
     * Display the specified resource.
     *
     * @param  \App\Article  $article
     * @return \Illuminate\Http\Response
     */
    public function show(Article $article)
    {
        return view("articles.show",['article'  => $article]);
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  \App\Article  $article
     * @return \Illuminate\Http\Response
     */
    public function edit(Article $article)
    {
        return view("articles.edit",['article'  => $article]);
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \App\Article  $article
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, Article $article)
    {
        $request->validate([
            'title'     => 'required',
            'article'   => 'required',
        ]);

        $article->update($request->all());

        return redirect()->route('articles.index')
                        ->with('success','Kayıt başarıyla güncellendi.');
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  \App\Article  $article
     * @return \Illuminate\Http\Response
     */
    public function destroy(Article $article)
    {
        $article->delete();
        return redirect()->route('articles.index')
                        ->with('success','Kayıt başarıyla silindi.');
    }
}

Evet gerekli veritabanı işlemlerini yapacak şekilde Controllerimizi düzenledik. Artık modelimizi düzenleyebiliriz.


6. Adım Model Düzenleme

“app/Article” model dosyamıza müdahale edeceğimiz verilerimizi tanımlıyoruz.

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Article extends Model
{
    protected $fillable = [
        'title', 'article'
    ];
}

7. Adım Sayfaların Oluşturulması

“resources/view” klasörünün içerisine 2 adet klasör oluşturalım.

  1. Klasör: shared
  2. Klasör: articles

shared: Bu klasörün içerisinde tüm sayfalarda olmasını istediğimiz parçaları bulunduracağız. Bir sade bir işlem yaptığımız için içersinde sadece “layout.blade.php” oluşturacağız.

shared/layout.php

<!DOCTYPE html>
<html>
<head>
    <title>Laravel 7 Veritabanı İşlemleri</title>
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous">
</head>
<body>

<div class="container mt-3">
    @yield('content')
</div>

<!-- Footer -->
<footer class="page-footer font-small blue fixed-bottom">

    <!-- Copyright -->
    <div class="footer-copyright text-center py-3">© 2020 Copyright:
      <a href="https://enginyenice.com/"> enginyenice.com</a>
    </div>
    <!-- Copyright -->

  </footer>
  <!-- Footer -->

</body>
</html>

2. Klasörümüz olan articles klasörünün içerisine

  • list.blade.php (Yazılarımızın listelendiği sayfa)
  • show.blade.php (Yazı detaylı gösterme sayfamız.)
  • create.blade.php (Yazı ekleme sayfamız)
  • edit.blade.php (Yazı düzenleme sayfamız)

articles/list.blade.php

@extends('shared.layout')

@section('content')
<div class="row">
    <div class="container">


        @if ($message = Session::get('success'))
        <div class="alert alert-success">
            <p>{{ $message }}</p>
        </div>
        @endif
        <a href="{{ route('articles.create')}}" class="btn btn-sm btn-success mt-2">Ekle</a>
        <table class="table table-bordered mt-2">
            <thead>
                <tr>
                    <th width="5%">ID</th>
                    <th width="15%">Başlık</th>
                    <th width="30%">Yazı</th>
                    <th width="20%">Göster</th>
                    <th width="20%">Düzenle</th>
                    <th width="10%">Sil</th>
                </tr>
            <thead>
            <tbody>
                @foreach ($articles as $article)
                <tr>
                    <td>{{ $article->id}}</td>
                    <td>{{ $article->title}}</td>
                    <td>{{ $article->article}}</td>
                    <td><a class="btn btn-sm btn-primary" href="{{ route('articles.show',$article->id) }}">Göster</a></td>
                    <td><a class="btn btn-sm btn-info" href="{{ route('articles.edit',$article->id) }}">Düzenle</a></td>
                    <td>
                    <form action="{{ route('articles.destroy', $article->id)}}" method="POST">
                            @csrf
                        @method('DELETE')
                        <button type="submit" class="btn btn-danger">Sil</button>
                        </form>
                    </td>
                </tr>
                @endforeach
            </tbody>


                <tfoot>
                    <tr>
                        <th width="5%">ID</th>
                        <th width="15%">Başlık</th>
                        <th width="30%">Yazı</th>
                        <th width="20%">Göster</th>
                        <th width="20%">Düzenle</th>
                        <th width="10%">Sil</th>
                    </tr>
                <tfoot>
        </table>
    </div>

</div>
@endsection

articles/show.blade.php sayfamız

@extends('shared.layout')

@section('content')
<div class="row">
    <div class="container">
    @if ($errors->any())
    <div class="alert alert-danger">
        <ul>
            @foreach ($errors->all() as $error)
                <li>{{ $error }}</li>
            @endforeach
        </ul>
    </div>
    @endif
    <form action="{{ route('articles.update',$article->id)}}" method="POST">
        @csrf
        @method('PUT')
        <div class="form-group row">
        <h1>Başlık: <strong>{{ $article->title }}</strong></h1>
        </div>

        <div class="form-group row">
            <p>Oluşturma Tarihi: <strong>{{ $article->created_at }}</strong></p>
        </div>

        <div class="form-group row">
            <p>Düzenlenme Tarihi: <strong>{{ $article->updated_at }}</strong></p>
        </div>

        <div class="form-group row">
            <p>Yazı: {{ $article->article }}</p>
        </div>
        <div class="form-group row">

        <a href="{{ route('articles.index') }}" class="btn btn-primary">Geri Git</a>
        </div>
    </form>
    </div>
</div>
@endsection

articles/create.blade.php

@extends('shared.layout')

@section('content')
<div class="row">
    <div class="container">
    @if ($errors->any())
    <div class="alert alert-danger">
        <ul>
            @foreach ($errors->all() as $error)
                <li>{{ $error }}</li>
            @endforeach
        </ul>
    </div>
    @endif
    <form action="{{ route('articles.store')}}" method="POST">
        @csrf
        <div class="form-group row">
            <label class="form-input col-sm-1 mt-1">Başlık</label>
            <input type="text" class="col-sm-11" name="title">
        </div>

        <div class="form-group row">
            <label class="form-input col-sm-1 mt-1">Yazı</label>
            <textarea name="article" class="col col-sm-11"></textarea>
        </div>
        <div class="form-group row">

            <button type="submit" class="btn btn-success d-inline-block col-sm-12">Ekle</button>
        </div>
    </form>
    <div class="form-group row text-center">
        <a href="{{ route('articles.index') }}" class="btn btn-secondary d-inline-block col-sm-12">Geri Git</a>
    </div>
    </div>
</div>
@endsection

articles/edit.blade.php

@extends('shared.layout')

@section('content')
<div class="row">
    <div class="container">
    @if ($errors->any())
    <div class="alert alert-danger">
        <ul>
            @foreach ($errors->all() as $error)
                <li>{{ $error }}</li>
            @endforeach
        </ul>
    </div>

    @endif

    <form action="{{ route('articles.update',$article->id)}}" method="POST">
        @csrf
        @method('PUT')
        <div class="form-group row">
            <label class="form-input col-sm-1 mt-1">Başlık</label>
        <input type="text" class="col-sm-11" name="title" value="{{ $article->title }}">
        </div>

        <div class="form-group row">
            <label class="form-input col-sm-1 mt-1">Yazı</label>
            <textarea name="article" class="col col-sm-11">{{ $article->article }}</textarea>
        </div>
        <div class="form-group row">

            <button type="submit" class="btn btn-success d-inline-block col-sm-12">Güncelle</button>
        </div>
    </form>
    <div class="form-group row text-center">
        <a href="{{ route('articles.index') }}" class="btn btn-secondary d-inline-block col-sm-12">Geri Git</a>
    </div>
    </div>
</div>
@endsection

Artık oluşturduğumuz sayfaları ziyaret edebiliriz. Tarayıcımızda http://localhost:8000/articles adresini ziyaret ederek sayfalarımıza ulaşabiliriz.


Bloğumu halen incelemediniz mi ? https://enginyenice.com/

Hakkımda: https://enginyenice.com/hakkimda/

İletişim : https://enginyenice.com/iletisim/