Posts

Php Ders 5 – Koşullar

Programlamada koşullar, belirttiğimiz durumların gerçek (true) olması veya olmaması (false) halinde çalışacak kodları belirlemek için kullanılır.

If/Else/ElseIf

If, parantezin içerisindeki koşul true ise belirtilen işlemi ve eğer gene belirtilirse false olması durumda belirtilen işlemi yapan kurgudur. Kullanımı aşağıdaki gibidir;

if( Koşul ) {
işlem
} elseif ( Başka Bir Koşul) {
işlem
} else {
işlem
}

<?php
define("TAM_ISMI_KULLAN", FALSE);

$isim = "Erhan";
$soyad = "Kılıç";

if(TAM_ISMI_KULLAN == TRUE){ // (Burada oluşturduğumuz sabitin true'ya eşit olması koşulu belirtmişiz. Eğer bir eşitlik koşulu koymasak bile koşul parantezinin içine koyduğumuz değişken, sabit veya başka bir şeyin true'ya eşit olup olmamasına bakar Php. 
    $tamisim= $isim. " " . $soyad; // Burada ise eğer tam ismi kullan sabitimiz true ise isim ve soyad değişkenlerini birleştirmektedir.
} else{ // Else kullanımı zorunlu değildir.
    $tamisim = $isim; // Eğer true değilse ki değil, sadece isim değişkeni ile tamisim değişkenini oluşturuyoruz.
}

echo "Herkese Merhaba!!";
 echo $isim;
?>

Bazen ise koşulumuzda olumsuz olduğu durumları belirtmek isteyebiliriz. Yukarıdaki örneği geliştirirsek eğer TAM_ISIM_KULLANMA sabiti oluşturup bu sabitin false olduğu durumlarda çalışacak bir kod yazmak isteyebiliriz. O zaman aşağıdaki gibi bir işlem yaparız;

<?php
define("TAM_ISMI_KULLANMA", FALSE);

$isim = "Erhan";
$soyad = "Kılıç";

if(!TAM_ISMI_KULLANMA){ // (Burada ise başına ! işareti koyarak false olduğu durumu koşul olarak belirtiyoruz. Temelde şu şekilde de yapabilirdik: if(TAM_ISMI_KULLANMA == FALSE). Aslında false eşitliği arasak bile koşul false olduğu için Php bunu true olarak algılayıp gerekli işlemi gerçekleştirmektedir. False olması koşulu koyduk ve false olduğunda koşulumuz true oluyor.
    $tamisim = $isim;
} else{
    $tamisim= $isim. " " . $soyad;
}

echo "Herkese Merhaba!!";
echo $isim;
?>

Switch/Case

Switch/Case ise if‘den farklı olarak belirttiğimiz koşullar listesinden birisi çalışırsa geçerli kodları çalıştıracaktır. Mesela bir değişkenimizin olabileceği koşul durumları 2-3’ten fazla ise, if ile yazmaya kalkışırsak bir çok elseif yazmak zorunda kalırız. Switch/Case ile bir çok koşulu daha rahat oluşturabiliriz.

Kullanım yapısı;

switch (n) { // n burada koşul durumlarının sorgulanacağı şeydir. Herhangi bir şey olabilir.
case label1:
      kodlar
break; // break kullanmamızın sebebi eğer koşul doğru olup kodlar çalışsa bile Php diğer koşulların doğru olup olmadığını test etmeye devam etmesinden dolayı çıkış yapmasını sağlamaktır.
case label2:
      kodlar
break;
case label3:
      kodlar
break;

default: // default ise hiç bir koşul gerçekleşmediğinde çalışacak kodları belirlemek için kullanılır. Zorunlu değildir.
      kodlar
}

Örnek;

<?php

$islem = "toplama";
 $a = 1;
 $b = 10;

switch ($islem) {
    case 'toplama':
        echo $a + $b;
        break;
    case 'bölme':
        echo $a / $b;
        break;
    case 'çarpma':
        echo $a * $b;
        break;
    case 'çıkarma':
        echo $a - $b;
        break;
}

?>

 

Php İle Haftanın Günlerini Bulmak

Merhaba arkadaşlar. Bugün, bulunduğumuz hafta dahil olmak üzere 5 haftanın günlerini tek tek bulmam gerekti. Yazdığım kodları dilediğiniz gibi kullanarak istediğiniz günleri elde edebilirsiniz. Mantığını basittir. DateTime classını bilmeniz yeterlidir.

Sadece hafta içlerini bir dizide toplamaktayım. Bunu $lastDay değişkeni cuma olarak ayarladıktan sonra döngünün başında 3 gün sonraya güncelliyorum. Böylece pazartesiyi bulmuş oluyorum ve her günü ayrı ayrı diziye giriyorum.

// Bugünü oluşturuyoruz
 $today = new DateTime();
// Bulunduğumuz haftanın başını buluyoruz.
 $monday = clone $today;
 $monday = $monday->modify(('Sunday' == $monday->format('l')) ? 'Monday last week' : 'Monday this week');
// Oluşturacağım döngüdeki $lastDay değişkenini bör önceki haftanın cuması olarak ayarlıyorum. Böylece pazartesiye güncelleyebileceğim.
 $lastDay = clone $monday;
 $lastDay = $lastDay ->modify('-3 day');
// 5 haftayı belirten dizimizi oluşturuyoruz.
 $dates = array(
  "week1" => array(),
  "week2" => array(),
  "week3" => array(),
  "week4" => array(),
  "week5" => array()
 );
// Döngümüzü başlatıyoruz. Burada $dates dizimizi foreach içerisine sokuyoruz.
foreach ($dates as $key => $date) {
// $lastDay değişkenini kullanarak haftanın ilk gününü buluyoruz.
 $firstDay = clone $lastDay;
 $firstDay = $firstDay->modify('+3 day');
// Bundan sonra her günü bir artırarak geri kalan 4 günü buluyoruz.
 $secondDay = clone $firstDay;
 $secondDay = $secondDay->modify('+1 day');
 $thirdDay = clone $secondDay;
 $thirdDay = $thirdDay->modify('+1 day');
 $forthDay = clone $thirdDay;
 $forthDay = $forthDay->modify('+1 day');
 $fifthDay = clone $forthDay;
 $fifthDay = $fifthDay->modify('+1 day');
// $lastDay değişkenini 5. gün yani cuma olarak ayarlıyoruz. Bu şekilde döngünün başında pazartesiyi bulabileceğiz.
 $lastDay = clone $fifthDay;
// $date dizisinde ilgili haftaya günleri ekliyorum. Burada ben farklı indexler kullandım. İstediğiniz gibi düzenleyebilirsiniz.
 $dates[$key] = array(
  $firstDay->format('M d D') => $firstDay->format('Y-m-d'),
  $secondDay->format('M d D') => $secondDay->format('Y-m-d'),
  $thirdDay->format('M d D') => $thirdDay->format('Y-m-d'),
  $forthDay->format('M d D') => $forthDay->format('Y-m-d'),
  $fifthDay->format('M d D') => $fifthDay->format('Y-m-d'),
 );
}

PHP ve Json

phpjsonPHP ve Json ikilisi arasındaki ilişkiyi ve Json’un PHP’de kullanımını anlatmak için öncelikle Json nedir onun üzerinde duralım.

Programlamada farklı platformlar arasında veri alışverişi ihtiyacı vardır. Mesela bir sosyal platformdan son paylaşımları çekip kendi projenizde kullanmak isteyebilirsiniz. Bu tür işlemler için platformlar arasında bir paylaşım olması lazımdır. Bu paylaşım için bazı teknolojiler geliştirilmiştir. Mesela bunlardan birisi XML teknolojisidir. Fakat XML, Javascript ile beraber iyi kullanılamamaktadır. İşte burada Json, Javascript ile uyumlu olduğundan çok tercih edilmektedir.

Json içerisindeki veriler her programlamada bulunan dizi ve obje şeklindedir.

Object

“{“ ile başlar ve “}” ile biter. İçerisine veriler “Anahtar” ve “Veri” şeklinde yazılır. Örnek;

{
 "name": "Erhan",
 "surname": "Kılıç"
}

Dizi

“[“ ile başlar ve “]” ile biter. İçerisindeki veriler sadece “Veri” şeklinde yazılır. Örnek;

[
 "Erhan", "Kılıç"
]

Json içerisinde ikisi bir arada istenildiği gibi kullanılabilir. Örnek;

{
 "tip": "kitap",
 "tur": "roman",
 "urunler": [
 {"ad": "Ihtiyar Kemanci", "yazar": "Nihat Genc"},
 {"ad": "Su Cilgin Turkler", "yazar": "Turgut Ozakman"},
 {"ad": "Kar", "yazar": "Orhan Pamuk"}
 ]
}

Json’un tercih edilmesinin en önemli sebebi Javascript’deki obje ve dizi yapısının tamamen aynı olmasıdır. Örnek olarak Javascript‘te de yapmaya çabaladığımızda siz de farkedeceksiniz.

PHP’de Json Fonksiyonları

Php’de Json ile ilgili işlemler şu şekilde yapılabilir. Kendi sitemizde Javascript ya da jQuery, AngularJs gibi kütüphanelerinde kullanmak için, başka platformlarla veri paylaşımında bulunup api oluşturmak için verileri Json formatında ekrana yazdırabiliriz. Başka bir yerden Json ile çektiğimiz veriyi php uygulamamızda kullanmak için kullanabiliriz.

Dikkat etmemiz gereken şey şudur. Eğer aşağıdaki fonksiyonları kullanmazsak bir string değer gibi algılayacağından içerideki verilere erişmek hayli zahmetli olacaktır.

json_encode()

Bu fonksiyon istediğimiz veriyi Json olarak yazdırmamızı sağlar. Örnek Kullanım;

$dizi = array(
 "tip"=> "kitap",
 "tur"=> "roman",
 "urunler"=> array(
 array("ad"=> "Ihtiyar Kemanci", "yazar"=> "Nihat Genc"),
 array("ad"=> "Su Cilgin Turkler", "yazar"=> "Turgut Ozakman"),
 array("ad"=> "Kar", "yazar"=> "Orhan Pamuk")
 )
);
$json = json_encode($dizi);
echo $json;

json_decode()

Bu fonksiyon ise bir yerden çektiğimiz Json veriyi decode ederek php yazılımımız içerisinde kullanmamızı sağlar. İçerideki verilere ise objedeki bir veriye ulaşır gibi ulaşabiliriz. Aşağıdaki örnekte Json veriyi bir string veri olarak oluşturuyorum. Çünkü dışarıdan Json veri çektiğimizde string bir veri olarak gelecektir aynı şekilde. Örnek;

$json ='{
 "tip": "kitap",
 "tur": "roman",
 "urunler": [
 {"ad": "Ihtiyar Kemanci", "yazar": "Nihat Genc"},
 {"ad": "Su Cilgin Turkler", "yazar": "Turgut Ozakman"},
 {"ad": "Kar", "yazar": "Orhan Pamuk"}
 ]
}';
$veri = json_decode($json);
echo $veri->tip;
echo $veri->tur;
foreach($veri->urunler as $urun){
 echo vardumb($urun);
 echo "<br/>";
}

Fonksiyon içerisinde ikinci bir parametre olarak true eklersek obje olarak değil direk dizi olarak kaydecektir ve erişimimiz de bu şekilde değişecektir. Örnek;

$json ='{
 "tip": "kitap",
 "tur": "roman",
 "urunler": [
 {"ad": "Ihtiyar Kemanci", "yazar": "Nihat Genc"},
 {"ad": "Su Cilgin Turkler", "yazar": "Turgut Ozakman"},
 {"ad": "Kar", "yazar": "Orhan Pamuk"}
 ]
}';
$veri = json_decode($json, true);
echo $veri[tip];
echo $veri[tur];
foreach($veri[urunler] as $urun){
 echo vardumb($urun);
 echo "<br/>";
}

Php Ders 4 – Operatörler

Binary

Bu operatör işlemleri büyüktür, küçüktür işlemlerini kapsamaktadır. “<“, “<=”, “>”, “>=” operatörleri ile kullanılmaktadır.

<?php
var_dump(1 < 10); // TRUE değeri verir.
var_dump(5 > 5); // FALSE değeri verir.

Ternary

Bu operatör eşitlik kontrol etme işlemlerini kapsamaktadır.

“==” operatörü değerlerin eşit olup olmadığını kontrol eder. Mesela string 1 değeri ile integer 1 değeri için TRUE değeri döndürür.

“===” operatörü değerlerin yanında veri tiplerinin de eşit olup olmadığını kontrol eder. String 1 değeri ile integer 1 değeri için FALSE değeri döndücektir.

<?php
var_dump("1" == 1); // TRUE değeri verir.
var_dump("10" === 10); // FALSE değeri verir. Çünkü veri tipleri eşit değil.

Concatenation

Verileri birleştirme operatörüdür. “.” operatörü kullanılır.

<?php
$isim = "Erhan";
$soyad = "Kılıç";
var_dumo($isim . " " . $soyad); // "Erhan Kılıç" değeri döndürecektir.

Arithmetic

Aritmetik işlemler için kullanılan operatörlerdir.
“+” operatörü integer verileri matematiksel olarak toplar, string verileri birleştirir.
“-“ operatörü integer verileri matematiksel olarak birbirinden çıkarır.
“/” operatörü integer verileri matematiksel olarak birbirine böler.
“*” operatörü integer verileri matematiksel olarak birbiriyle çarpar.
“%” operatörü integer verilerin birbirine bölümünden kalanı verir. Mesela 10%2 işleminden 0 değerini, 10%3 işleminden 1 değerini verir.
“++” operatörü integer veririnin 1 sayı artmasını sağlar.

<?php
var_dump(10+5); // 15 değeri döndürecektir.
var_dump("10"+"5"); // 105 değeri döndürecektir.
var_dump(10-5); // 5 değeri döndürecektir.
var_dump(10/2); // 5 değeri döndürecektir.
var_dump(10*2); // 20 değeri döndürecektir.
var_dump(10%4); // 2 değeri döndürecektir.
var_dump(10++); // 11 değğeri döndürecektir.

Casting

Veri tiplerini belirlemekte kullanılan operatörlerdir. “int”, “string”, “bool” operatörleri kullanılır.

<?php
$int = (int)"10"; // String 10 olan veriyi integer 10 yapar.
$string = (string)255; // İnteger 255 olan veriyi string 255 yapar.
$boolean = (bool)"bool"; // String veriyi TRUE'ya yani 1'e çevirir.

Assignments

Atama operatörleridir. Bir değişkenin içeriğini belirlerken ya da değiştirirken kulanılır. “=”, “+=”, “.=” operatörleri kullanılır.

<?php
$degisken = "deger";
$degisken += " birleştirme";
$degisken .= ", ikinci birleştirme";

Mantıksal Operatörler

Türkçe olarak ve, veya anlamındaki operatörlerdir. “&&”, “AND”, “||”, “OR” operatörleri kullanılır.

<?php
$a = TRUE;
$b = TRUE;
$c = FALSE;

var_dump ($a and $b); // true sonucu döner.
var_dump ($a && $c); // false sonucu döner.
var_dump($a or $b || $c); // true sonucu döner.

Sonraki Ders: Php Ders 5 – Koşullar

PHP Kullanarak CSV Dosyası Oluşturma

PHP‘de, CSV uzantılı dosya oluşturabilmek için tanımlanmış fonksiyonlar vardır. PhpExcel gibi kütüphaneler yerine bu fonksiyonları kullanmanın bir kaç avantajı vardır. Daha az kaynak tüketir ve dolasıyla daha hızlıdır.

Öncelikle CSV dosyamızı oluşturacak fonksiyonumuzu oluşturalım.

function array_to_csv_function($array, $filename = "export.csv", $delimiter=";") {
 // Bir temp dosyası açmak yerine bellek alanı kullanıyoruz. 
 $f = fopen('php://memory', 'w');
 // Verilerimizin olduğu diziyi döngüye sokuyoruz
 foreach ($array as $line) {
 // Dizimizin içindeki her dizi, CSV dosyamızda bir satır olmaktadır.
 fputcsv($f, $line, $delimiter);
 }
 // Dosya başlangıc işaretini sıfırlıyor
 fseek($f, 0);
 // Tarayıcıya bir csv dosyası olduğunu belirtiyor
 header('Content-Type: application/csv');
 // Tarayıcıya görüntülenmek için olmadığını, kaydedilmek için olduğunu belirtiyor. 
 header('Content-Disposition: attachment; filename="'.$filename.'";');
 // Üretilen CSV tarayıcıya iletiliyor.
 fpassthru($f);
}

Bu fonksiyonumuz ile içerisine bir dizi ve dosya ismi göndererek CSV dosyasını oluşturmasını ve tarayıcıya çıktı vermesini sağlıyoruz. Kod içerisinde her bir satırı yorumlar ile açıkladım. Bu fonksiyonda geçici bir temp dosyası kullanmak yerine bellek alanı kullanmasını sağladım. Eğer geçici bir temp dosyası kullanmasını isterseniz $f = fopen(‘php://memory’, ‘w’); yerine $f = fopen(‘php://output’, ‘w’); komutunu kullanın.

Daha sonra ise ister veritabanından çekerek ya da ister json verisi olarak çekerek her bir satır dizi olacak şekilde bir dizi oluşturuyoruz ve fonksiyonumuza gönderiyoruz. Bu kadar. Örnek olarak aşağıda kod yazım.

$basliklar = array("Ad", "Soyad");
$satir1 = array("Erhan", "Kılıç");
$satir2 = array("Onur", "Bakır");

$icerik = array($basliklar, $satir1, $satir2);
array_to_csv_function($icerik, "export.csv");
// Diğer bir şekilde kullanımı
array_to_csv_function(array($basliklar, $satir1, $satir2), "export.csv");

Ubuntuya Linux, Apache, MySQL, PHP (LAMP) Nasıl Yüklenir?

Ubuntu’ya Varsayılan LAMP Paketini Yüklemek

Eğer en kolay bir şekilde LAMP yüklemek istiyorsanız, aşağıdaki kodları terminalde yazmanız yeterlidir.

$ sudo apt-get update
$ sudo apt-get install lamp-server^

“^” karakterini yazmayı unutmayın, aksi takdirde hata verecektir.

Ubuntu’ya Linux, Apache, MySQL, PHP Yüklemek

Eğer hepsini ayrı ayrı yüklemek istiyorsanız, doğru yerdesiniz. Bu biraz daha uğraştırıcıdır ama size daha iyi bir kullanım ve istediğinizi yükleme olanağı sağlar.

Apache Yüklemek

Apache yüklemek için aşağıdaki kodları terminalde yazın.

sudo apt-get update
sudo apt-get install apache2

Bu kadar. Apache yüklendi. Kontrol etmek için web tarayıcınıza http://localhost adresini girin ve “It Works!” yazısını görürseniz sıkıntısız yüklenmiş demektir. Eğer vps sunucunuza kuruyorsanız vps’nizin ip adresinizi yazıp girmelisiniz tarayıcıdan.

MySQL Yüklemek

sudo apt-get install mysql-server

Her iki sürümün de yüklenmesi sırasında MySQL’in root kullanıcısı şifresini girmenizi isteyecektir sizden.

PHP Yüklemek

PHP yüklemek için terminale aşağıdaki kodları yazın.

sudo apt-get install php libapache2-mod-php php-mcrypt php-mysql

Bu kadar. PHP yüklendi.

PHP Modüllerini Yüklemek

Php modüllerini listelemek için aşağıdaki kodu terminale yazın.

apt-cache search php5-

Hangi modülü yüklemek istiyorsanız aşağıdaki gibi bir kod yazarak terminale yükleyebilirsiniz.

sudo apt-get modül ismi
sudo apt-get php5-cli

Portfolio Items