PHP’de İfadeleri Karşılaştırmak

Bazen yönetim paneline girişleri veritabanı yerine dosyada tutuyorum. Basit bir if-else kontrolü ile giriş yaptırıyorum. Bu gibi durumlarda, kullanıcı adı ve şifre nasıl yazıldıysa aynen o şekilde yazdırmak gerekiyor. Yani büyük küçük harfe vs. duyarlı oluyor. Bu gibi durumlar için PHP’de karşılaştırma fonksiyonları var. Örneğin 2 ifadenin doğruluğunu karşılaştırıyor. Mesela;

$a = 'Tayfun';
$b = 'Tayfun';
echo strcmp($a, $b); // Çıktı: 0

Eğer sonuç 0 ise, ifadeler birbirine eşit demektir. Ancak bu örneği şöyle değiştirseydik;

$a = 'Tayfun';
$b = 'tayfun';
echo strcmp($a, $b); // Çıktı: -32

Bu durumda ifadeler birbiriyle eşleşmiyor çünkü büyük küçük harf problemi devreye giriyor. Bunu çözmek için ise strcasecmp() fonksiyonunu kullanabiliriz. Aynı örneği birde şöyle yapalım;

$a = 'Tayfun';
$b = 'tayfun';
echo strcasecmp($a, $b); // Çıktı: 0

Sonuç başarılı. Yani bu gibi durumlar için strcasecmp() fonksiyonu kullanılabilir.

strftime() Türkçe Karakter Hatası ve Çözümü [PHP]

PHP’de türkçe tarih belirlerken setlocale() ve strftime() fonksiyonlarını kullanıyoruz. Örnek vermek gerekirse;

setlocale(LC_TIME, 'tr_TR');
echo strftime('%d %B %Y'); // 28 Eyl�l 2018

Ancak bu bazı sunucularda türkçe karakter hatalarına yol açıyor. Örneğin yukarıdaki çıktıda olduğu gibi.. Bu gibi durumlarda iki şey yapılabilir.

1. çözüm yolu

setlocale() fonksiyonunda 2. parametrede dil ve ülke kodu verilirken nokta ile karakter seti tanımlaması yapılabilir. Örneğin;

setlocale(LC_TIME, 'tr_TR.UTF-8');

Bu problemi ortadan kaldıracaktır.

2. çözüm yolu

srtftime() fonksiyonu utf8_encode() fonksiyonundan geçirilebilir. Örneğin;

setlocale(LC_TIME, 'tr_TR');
echo utf8_encode(strftime('%d %B %Y')); // 28 Eylül 2018

Bugün benim başıma geldi, çözümü arayıp buldum. Yarın sizinde başınıza gelirse bu şekilde halledebilirsiniz. Kolay gelsin 🙂

Mysql Aynı Tabloda Farklı Koşullara Göre Toplam Kayıt Sayısını Bulmak

Farkındayım başlık çok uzun oldu 😀 Ancak benim işime yaradığı gibi bir gün sizinde işinize yarayabilir. Şimdi örnek vermek gerekirse, yorumlar tablonuz olsun. Yorumların bazıları onaylı, bazıları onaysız olarak kayıt edilmiş. Ve siz toplam yorum sayısını, onaylı yorum sayısını ve onay bekleyen yorum sayısını bir sorguda almak istiyorsunuz. Mantıken nasıl yaparsınız? Ya subquery kullanırsınız ya da bunun yerine SUM() fonksiyonun kullanırsınız. Hemen bir örnek verelim.

Eğer count() fonksiyonunu kullanırsak;

SELECT count(yorum_id) toplam FROM yorumlar;

Sonuç;

+--------+
| toplam |
+--------+
|  2052  |
+--------+

Şimdi SUM() fonksiyonu ile birlikte şöyle bir kullanım yapacağız. Örneğin onay 1 ise onaylı yorumları, 0 ise onaysız yorumları saydıracağız.

SELECT
    count(yorum_id) toplam,
    SUM(onay = 1) onayli_yorumlar,
    SUM(onay = 0) onaysiz_yorumlar
FROM
    yorumlar

Sonuç;

+--------+-----------------+------------------+
| toplam | onayli_yorumlar | onaysiz_yorumlar |
+--------+-----------------+------------------+
|   2052 |               1 |             2051 |
+--------+-----------------+------------------+

Son olarak, eğer birden fazla tabloyu join ile bağladıktan sonra count işlemi yaptığınızda rakamlar saçmalıyorsa DISTINCT ile benzersizleri toplamak gerekir. Ama onun kullanımı biraz daha karışık, şöyle bir kullanım gerektiriyor;

SELECT
    count(yorum_id) toplam,
    REPLACE(SUM(onay = 1) * count(DISTINCT yorum_id) / count(*), '.0000', '') onayli_yorumlar,
    REPLACE(SUM(onay = 0) * count(DISTINCT yorum_id) / count(*), '.0000', '') onaysiz_yorumlar
FROM
    yorumlar
INNER JOIN
    ...

Bu yazım bu kadardı, bir gün böyle birşeye ihtiyaç olursa zaten takıldığınız noktada yorum yazarsınız. Kolay gelsin 🙂

MySQL’de Trigger Kullanımı

Bu makalede sizlerle MySQL’de trigger’ların nasıl kullanıldığını ve amacını konuşacağız. Eğer MySQL’de neden trigger kullanmalıyım sorusuna cevap arıyorsanız kendinize şu soruyu sormanız gerek. Herhangi bir insert, update ya da delete işleminden sonra bir işlem yaptırmak ister miydiniz? Benim anlatacağım senaryoda, posts adında bir tablom olsun. Bu tabloda makalelerimi tutuyorum. Ve makaleyi güncellediğimde, eski versiyonunu revisions tablosuna post id’si ile birlikte kaydetmek istiyorum.

İşte tam olarak bu aşamada bir trigger yazmamız gerek tabi eğer bu işlemi mysql’de çözmek istiyorsak. Yok arkadaş ben PHP’de if ($insert) ise o zaman şuraya $db->query() yazarım diyorsan o senin ameleliğin olur, bir şey diyemem 🙂

Şimdi gelelim bu trigger’ları oluşturmak nasıl oluyor. Temel anlamda bir trigger’ın ihtiyacı olan syntax şudur;

DELIMITER $$
CREATE TRIGGER [trigger_adi] [BEFORE|AFTER] [INSERT|UPDATE|DELETE] ON [tablo_adi]
    FOR EACH ROW 
        BEGIN
            -- işlemler
        END$$
DELIMITER ;

Burada DELIMITER $$ ve kısımları, mevcut delimiter’ı $$ ile değiştirmemizi yarıyor. Çünkü defualt olarak ; (noktalı virgül) olduğundan biz trigger içinde herhangi bir noktalı virgül kullanınca kodlar patlıyor. Bu yüzdendir ki bir bütün olarak yorumlanması için delimiter’ı değiştirip $$ yapıyoruz ve END kısmının bitişine noktalı virgül yerine $$ koyuyoruz.

Şimdi gelelim bizim senaryoya. Tablomuz posts tablosuydu ve kolonlarımız id, title ve content olsun. Birde revisions diye bir tablom vardı aynı şekilde id, post_id, title, content, created_at kolonlarına sahip olsun. Şimdi ben posts tablosunda bir veri güncellendiğinde, eski halini revisions tablosuna kaydedecek bir trigger yazmak istiyorum. Nasıl yazarım?

DELIMITER $$
CREATE TRIGGER after_post_update AFTER UPDATE ON posts
    FOR EACH ROW 
        BEGIN
            IF NEW.title != OLD.title OR NEW.content != OLD.content THEN
                INSERT INTO revisions SET post_id = OLD.id, title = OLD.title, content = OLD.content;
            END IF;
        END$$
DELIMITER ;

Burada OLD ve NEW diye anahtarlar gördünüz. Eğer INSERT için trigger yazıyorsak sadece NEW, UPDATE için yazıyorsak OLD ve NEW, DELETE için yazıyorsak sadece OLD anahtarlarını kullanarak eski ve yeni değerlere ulaşabiliyoruz. Yani trigger’daki OLD.title, update olmadan önceki title değerini, NEW.title update olduktan sonraki title değerini temsil ediyor. Dolayısı ile biz trigger’da şunu yaptık, eğer eski başlık yeni başlıktan farklı ise ya da eski içerik yeni içerikten farklı ise o zaman revisions tablosuna bunu kaydet.

Mevcut trigger’ları görmek isterseniz şu komutu kullanabilirsiniz;

SHOW TRIGGERS;

Oluşturduğunuz trigger’ı kaldırmak için ise;

DROP TRIGGER [trigger_adi]

En basit 6.40₺ kazanma yöntemi?

Kayıt olup 1$ kazanmak için tıklayın!

Daha önce earn.com ile ilgili bir konu yazmıştım. Son birkaç gündür gelen anket sayılarını baz alarak tekrar hatırlatmak istedim. Bu sisteme ücretsiz olarak kayıt olup, gelen anketleri cevaplayarak ve sizden istenilenleri yaparak cevap başına 1$ kazanabilirsiniz. Malum ülkede 1$ şu an 6,40 ₺ olunca bu durum biraz daha önem kazanıyor 🙂

Ankette yapılamayacak çok bir şey yok. Genelde telegram gruplarına katılmanızı bekliyorlar. Bir telegram hesabı açıp katılın, hepsi bu. Twitter takip et falan kısımlarını es geçin kontrol falan yok. Böylece gelen soruları zamanında cevaplayıp 1$ kazanabilirsiniz.

Ben videoda 2$ kazandım videoyu çekmeye karar vermeden öncede yine 1 soru cevaplamıştım. Yani videoda göründüğü gibi sadece 2dk’mı ayırdım ve 3$ kazandım. 3$ 20₺ arkadaşlar.

Kayıt olup 1$ kazanmak için tıklayın!

Ayrıca arkadaşlarınızı referans linkiniz ile kayıt yaparakta 1$ kazanabilirsiniz. Kısaca aklınızı kullanarak basit, vaktinizi almayacak yerlerden ek gelir elde edin. İhtiyacınız yok mu? Sorun değil, yine de yapın. Kazandığınızla birilerine yardım edin, bir çocuğu sevindirin, bir hayvanı mutlu edin. Parayı amaçtan araca çevirmeye başlamak için çok geç değil. Ben bunu yapıyorum, herkese aynı şeyi tavsiye ediyorum. Ben huzuru hayvanlarda buldum, onları sevmekte, onları en iyi şekilde ağırlamakta. Sizde kendi huzurunuzu bulun. Sevgiyle kalın.

Not: Üyeliklerinizin doğrulanması için linkedin hesabını bağlamanız gerekebilir. Sonuçta adamlar para dağıtıyor, her geleni onaylayıp 1$ verselerde batarlardı demi 🙂

Not 2: Aslında 1$ değil ona eş değer olan 0.0001 btc kazanıyorsunuz her anketten. Ve hesabınızda biriken parayı çekmek için BTC cüzdanı kullanmanız gerek. Bunun içinde en kolay yöntem btcturk.com’u kullanmak olur muhtemelen.

Not 3: Buradan kazandığım tüm parayı sokak hayvanları için harcıyorum. Size de tavsiye ederim 🙂

CSS ile Kayan Label Yapımı vs jQuery Plugini

Bugün gezinirken şöyle bir jquery plugini gördüm;
https://www.jqueryscript.net/demo/jQuery-Floating-Placeholder-Text-Plugin-Placeholder-Label/

Amaç basit, input’un içine bir label yerleştiriyor, tıklayınca animasyonlu olarak onu yukarıya kaydırıyor. Eğer input’a yazı yazılırsa label yukarıda kalmaya devam ediyor ve label’ın texti değiştiriyor. Ve bunun için bir sürü kod yazması gerekmiş eklentiyi yazan arkadaşın.

Bende bu örneği sadece CSS ile nasıl yapacağımı göstermek istedim.

Kısaca şöyle bir HTML yapımız olsun;

<div class="field">
    <input type="text" required autocomplete="off" id="username" value="tayfunerbilen">
    <label for="username" title="Kullanıcı adınızı girin" data-title="Kullanıcı adı">
</div>

Ve CSS kodlarımız;

.field {
    position: relative;
    margin-bottom: 15px;
}

.field label::before {
    content: attr(title);
    position: absolute;
    top: 0;
    left: 15px;
    line-height: 40px;
    font-size: 14px;
    color: #777;
    transition: 300ms all;
}

.field input {
    width: 100%;
    line-height: 40px;
    padding: 0 15px;
    box-sizing: border-box;
    font-size: 14px;
    color: #222;
    border: 1px solid #ccc;
    border-radius: 3px;
}

.field input:focus {
    outline: 0;
    border-color: blue;
}

.field input:valid + label::before {
    line-height: 20px;
    font-size: 12px;
    top: -10px;
    background: #fff;
    padding: 0 6px;
    left: 9px;
    content: attr(data-title);
}

.field input:focus + label::before {
    line-height: 20px;
    font-size: 12px;
    top: -10px;
    background: #fff;
    color: blue;
    padding: 0 6px;
    left: 9px;
}

Daha fazla detay için dersi izlemeniz yeterli

Demo

See the Pen CSS Input Placeholder Animation by Tayfun Erbilen (@tayfunerbilen) on CodePen.

Node.js, Vue.js, React ve Redux Eğitim Setleri

Merhaba dostlar, yıllar önce prototürk’ü ilk açtığımda eğitmenler arasında sevgili dostum Mehmet Seven’de vardı. O zaman sizlere jQuery dersleriyle eşlik ediyordu ve bir çok kişiye ileri seviye jquery bilgisi kazandırdı. Son yıllarda ise Mehmet, Javascript konusunda uzmanlaştı ve Javascript ile birlikte yeni teknolojileride bilgisine katarak yoluna devam etti.

Çoğu kişi benden Javascript ve framework’leri hakkında eğitim seti istiyor ancak benden çok daha iyi bilgisi olan Mehmet Seven, bu konuda 2 yararlı eğitim seti çıkardı. Bende ilk alanlardanım. Ve setleri javascript ve React, Redux, Node.js’i öğrenmek isteyenlere mutlaka tavsiye ederim.

Node.js’e meraklı olanlar mutlaka aşağıdaki linkten gözatsın;


Sıfırdan Her Yönüyle JavaScript & Node.JS


React ve Redux’a ilgi duyanlar ise şu eğitime gözatsın;


Sıfırdan Her Yönüyle React ve Redux


Ayrıca kablosuzkedi youtube kanalının sahibi, Codeigniter kitabının yazarı Gökhan Kandemir’in ise, vue.js ile ilgili harika bir eğitim serisi var. Bunuda şiddetle öneririm. Bu tür içeriklerin türkçe olarak kaynaklandırılması çok önemli, öğrenmek isteyenlerede çok büyük bir kolaylık.


Sıfırdan İleri Seviye Vue.JS Eğitimi ve Uygulama Geliştirme


Hala ingilizceyi bahane mi ediyorsunuz?

İşimizin gereği mutlaka ingilizceyi öğrenmemiz gerekiyor. Eğer hala bir adım atmadıysanız, aşağıdaki eğitim setlerine de bir bakın.

Sıfırdan İleri Seviyeye İngilizce Eğitim Seti (50.5 Saat)

Özel Ders Formatında Sıfırdan Zirveye İngilizce Eğitim Seti (24 saat)

Baştan Sona İngilizce Eğitimi – Sıfırdan Başlayanlar İçin (20.5 Saat)

Udemy’de En Çok Satılan 5 Yabancı PHP Kursu

Merhaba arkadaşlar, bildiğiniz gibi ben Udemy’de eğitmenlik yapıyorum. Ancak aynı zamanda bir öğrenciyimde. Çok fazla eğitim seti satın alıp inceliyorum ve bilgilerimi taze tutmaya çalışıyorum.

Bu yazıda sizlere, benimde satın alıp bakma şansımın olduğu udemy’nin en çok satan 5 php kursunu tanıtmak istiyorum.

PHP for Beginners – Become a PHP Master – CMS Project

Bu kurs sizlere sıfırdan başlayıp bir PHP ustası olmayı öğretmeyi hedefleyen bir eğitim serisi. Ve dünya çapında en çok satanlar listesinde yer alıyor. Toplamda 36 saat sürüyor.

KURSU İNCELEMEK İÇİN TIKLAYIN

PHP with Laravel for beginners – Become a Master in Laravel

Bu kurs ile bir php framework’ü olan Laravel’in temellerini öğreneceksiniz. Hiç bilmeyenler için gerçekten açıklayıcı bir eğitim serisi. Ve dünya çapında en çok satanlar listesinde yer alıyor.  Toplamda 31.5 saat sürüyor.

KURSU İNCELEMEK İÇİN TIKLAYIN

PHP OOP: Object Oriented Programming for beginners + Project

Bu kurs OOP konusuna yeni başlamış kişileri hedefliyor. Eğer sizde ciddi anlamda OOP konusuna merak sarıpta bir şeyler yapmayı başaramadıysanız bu kursun faydasını göreceksiniz. Toplamda 18.5 saat sürüyor.

KURSU İNCELEMEK İÇİN TIKLAYIN

Create a Spotify Clone from Scratch – JavaScript, PHP, MySQL

Bu kurs benim en sevdiğim kurslardan bir tanesi. Spotify’ı bilmeyen yoktur, müzik dinleme uygulaması. Bu kursta PHP, Javascript ve MySQL kullanılarak Spotify benzeri bir sistem geliştiriliyor. Yani proje yaparak PHP öğrenmiş oluyorsunuz. Aynı zamanda javascript ile de bir çok şeyin inceliklerini öğrenebilirsiniz.

KURSU İNCELEMEK İÇİN TIKLAYIN

Create a REAL Social Network like Facebook in PHP + MySQL

Bir başka sevdiğim kurs ise, PHP ile Facebook benzeri bir sosyal ağ projesinin oluşturulduğu bu seri. Elbette bu seride sadece PHP değil, MySQL sorgularının derinliklerini, Javascript ipuçlarını da öğrenmiş olacaksınız.

KURSU İNCELEMEK İÇİN TIKLAYIN

ÖNEMLİ NOT!!

Arkadaşlar ingilizce anlatılan eğitim setlerini alıp incelemek ve bir şeyler öğrenmek için ingilizce’yi çok iyi bilmenize gerek yok. Başlangıç düzeyinde bile olsanız, sadece işiniz gereği belli terimlere bile hakim olsanız, yazılan kodlar ortak olduğu için mutlaka anlayıp ders çıkaracağınız konular olacaktır. Ben bu şekilde merak ettiğim konulara daha hızlı ulaşabiliyorum, o yüzden hala ingilizce bilmiyorum diye bahaneleriniz var ise onlar içinde birkaç udemy kursu önereyim, zira bu işi yapacaksınız ingilizce şart! Lütfen artık bahanelerin ardına sığınmayın ve kendiniz için bir şey yapmaya başlayın.

Sıfırdan İleri Seviyeye İngilizce Eğitim Seti (50.5 Saat)

Özel Ders Formatında Sıfırdan Zirveye İngilizce Eğitim Seti (24 saat)

Baştan Sona İngilizce Eğitimi – Sıfırdan Başlayanlar İçin (20.5 Saat)

Facebook hesabım kapatıldı, yeni hesap açtım!

Merhaba arkadaşlar, 1 haftadır falan facebook’ta 3’er günlük yasaklar almaya başladım. Bugün ise facebook hesabımın tamamen kapatıldığını gördüm. İletişime geçtim ancak çok olumlu bir sonuç beklemiyorum, o yüzden yeni bir facebook hesabı açtım. 5.000’e yakın tanıdığım vardı facebook üzerinde, şimdi hepsi uçtu gitti 🙂 Eğer sizde beni ucundan kıyısından tanıyorsanız yeni facebook hesabımı ekleyebilirsiniz.

Yeni facebook adresim: https://www.facebook.com/erbilentayfun

Görüşmek üzere.

MySQL’de SOUNDS LIKE ve SOUNDEX

Merhaba arkadaşlar, bu yazımda ve videomda sizlere LIKE dışında kullanabileceğiniz 2 alternatifi göstermek istiyorum. Öncelikle neden ne için kullanmamız gerek onu bir açıklayayım.

Örnek vermek gerekirse sizin bir e-ticaret siteniz olsun. Ve kullanıcı ürün aramak için arama input’une iphone yazıp arattı. Ama oda ne? Bir başka kullanıcı iphone yazmayı beceremedi ve “iphon” ya da “iphom” gibi kelimeler yazdı. Bu durumda sizin şu basit mysql sorgunuz ne döndürecektir sizce?
Okumaya devam et “MySQL’de SOUNDS LIKE ve SOUNDEX”