Php / Pdo / Sql Detaylı (Çok Kriterli) Arama

Merhaba
Çalıştığım bir projede site sahibi üyelerine reklam ve promosyon bilgilerini mail yoluyla iletmek istediğini ve bu maillerin kendi seçeceği bir çok kritere sahip olan üyelerin özelliklerine göre seçebileceği bir toplu mail sistemi olmasını istedi.
Bir örnekle açıklamak gerekirse ; üyelerin içinden cinsiyeti “bayan”,  kilosu 60 kg üzerinde, şehri “Ankara”, ilçesi “Yenimahalle” ve mesleği “Memur” olan tüm üyelere “bla bla besin takviyesi” ni tanıtacak mail göndermek istiyor. Veri tabanında bu bilgilerin hepsi tutuluyor ama sorun şu bu adam bir başka promosyonu farklı kriterle göre de yapabilir olmalı yani sorgu tamamen dinamik olacak tıpkı emlak sitelerinde ev ararken girdiğiniz kriterler gibi.
Öyle bir kod yazmalıyız ki tamamen dinamik olmalı ve kullanıcının isteği dışında ki özelliklere sahip sonuçları göstermemeli.
Önce veri tablomuzu oluşturalım adı “üyeler” olsun id, cinsiyet, meslek,  il, ilce, kilo gibi bilgileri tutalım tablonun başka sütunları da olabilir ama biz örneği uzatmamak için kısa tutacağız, şimdi kodlarımızı yazalım.
İlk İşimiz iki adet değişken tanımlamak olacak ilk değişkenimiz $where dizisi, bu dizi kullanıcıdan gelen kriterleri tutacak, $sorgu değişekini ise en sonda $where dizimiz ile birleşip dinamik sql sorgumuzu oluşturacak .

$where = [];
$sorgu = "SELECT * FROM uyeler  ";

Şimdi gelelim kullanıcıdan gelen kriterleri yakalamaya, bu senaryoda kriterler post ile geliyor ama siz get ile de yapabilirsiniz önemli olan mantığını oturtmak.

if (isset($_POST['cinsiyet']) && !empty($_POST['cinsiyet']))
{
$where[] = 'cinsiyet like "%' . $_POST['cinsiyet'] . '%"';
}

Burada isset ile cinsiyet diye bir post gelmişmi ve bu post dolumu diye bakıyoruz eğer şartlarımız oluştuysa $where dizisinin içine sql sorgusunu oluşturacak cümleyi yazıyoruz. Burada dikkat edilmesi gereken yer şu, biz veri tabanına cinsiyeti string olarak girdik yani 1 ise erkek  2 ise bayan gibi bir mantık kullanmadık.
Eğer kullanıcı cinsiyet olarak “Erkek” seçmiş olsaydı $where dizisinin çıktısı şöyle olacaktı.

[“0”] => ‘cinsiyet like “%Erkek%”’

Diğer kriterleri de benzer şekilde yazalım.

// meslek seçeneği
if (isset($_POST['meslek']) && !empty($_POST['meslek']))
{
$where[] = 'meslek like "%' . $_POST['meslek'] . '%"';
}
// şehir seçeneğinde like yerine = işaretini  kullandık (amaç yapılabildiğini göstermek siz hangisi lazımsa onu kullanın)
if (isset($_POST['sehir']) && !empty($_POST['sehir']))
{
$where[] = 'sehir = "' . $_POST['sehir'] . '"';
}
// ilçe seçeneği
if (isset($_POST['ilce']) && !empty($_POST['ilce'])) {
$where[] = 'ilce = "' . $_POST['ilce'] . '"';
}

Şimdi geldik biraz daha karışık olan kısma, biz örneğimizde  kilo özelliğini kullandık ama örneğimizi  emlak olarak kurgulamış olsaydık bunu fiyat aralığı olarak yapacaktık
Burada kullanıcıdan minimum ve maksimum kilo bilgilerini alıyoruz ama kullanıcı sadece minimum yada sadece maksimum kilo bilgisi de gönderebilir yani belli bir kilonun üzeri yada belli bir kilonun altı olarak seçmek isteyebilir bu sebeple kodumuzu yazarken bu faktörü de göze almamız lazım.
İlk if koşulumuz da minkilo varsa ve boş değilse    veya   maxkilo varsa ve boş değilse diye sorguladık

if ( (isset($_POST['minkilo']) &&
!empty($_POST['minkilo']))      ||     (isset($_POST['maxkilo'])
&& !empty($_POST['maxkilo']))   )
{
// şartlar oluştuysa bu seferde önce minimum kiloyu sorgulayalım eğer
minimum kilo girilmemişse varsayılan olarak ‘0’ a eşitleyelim
if (empty($_POST['minkilo'])) {
$_POST['minkilo'] = 0;
} else {
$_POST['minkilo'];
// şimdi de
maxkilo yu sorgulayalım eğer maksimum  kilo girilmemişse varsayılan
olarak ‘999’ a eşitleyelim (bir  tonluk bir insan olamaz ama ya olursa
:) )

if (empty($_POST['maxkilo'])) {
$_POST['maxkilo'] = 999;
} else {
$_POST['maxkilo'];
}
$where[] = 'kilo BETWEEN ' . $_POST['minkilo'] . ' and ' . $_POST['maxkilo'] . ' ';
}
Sıra bu bilgileri bir arraya getirip sql sorgumuzu oluşturmaya geldi
if (count($where) > 0)  // dizi eleman sayısı 0 sıfırdan büyükse yani bir sorgu gönderilmişse
{
// bu diziyi başına WHERE ekleyip, her dizi elamanından sonra  and
anlamına gelen  “ && ” işareti ekleyerek birleştiriyoruz oluşan
bu yapıyı da ilk başta yazdığımız $sorgu değişkenine birleştiriyoruz
$sorgu .= 'WHERE ' . implode(' && ', $where);
}
Artık sorgu cümlemiz hazır bu cümleyi yukarda belirttiğimiz örnek şartlardaki gibi veriler gönderildiğiniz varsayarak echo ile yazdıralım ve çıktısına bakalım
cinsiyeti “bayan”,
kilosu 60 kg üzerinde,
şehri “Ankara”,
ilçesi “Yenimahalle”
mesleği “Memur” olan tüm üyeler
echo $sorgu;
//çıktısı
SELECT * FROM uyeler WHERE kilo BETWEEN 60 and 999 && cinsiyet like “% bayan %” && meslek like “% Memur %” && il  = “ANKARA” && ilce = “YENİMAHALLE”
Tüm bunları aşağıdaki gibi kullanarak veri tabanını tarayabiliriz.
$sor = $db->prepare("$sorgu");
$sor->execute(array());
Hepsini bir araya getirdiğimizde aşağıdaki gibi bir sonuç elde ederiz.
<?php


$where = [];
$sorgu = "SELECT * FROM uyeler  ";

// cinsiyet seçeneği
if (isset($_POST['cinsiyet']) && !empty($_POST['cinsiyet']))
{
$where[] = 'cinsiyet like "%' . $_POST['cinsiyet'] . '%"';
}

// meslek seçeneği
if (isset($_POST['meslek']) && !empty($_POST['meslek']))
{
$where[] = 'meslek like "%' . $_POST['meslek'] . '%"';
}

// şehir seçeneğinde like yerine = işaretini  kullandık (amaç yapılabildiğini göstermek siz hangisi lazımsa onu kullanın)
if (isset($_POST['sehir']) && !empty($_POST['sehir']))
{
$where[] = 'sehir = "' . $_POST['sehir'] . '"';
}

// ilçe seçeneği
if (isset($_POST['ilce']) && !empty($_POST['ilce'])) {
$where[] = 'ilce = "' . $_POST['ilce'] . '"';
}



if ( (isset($_POST['minkilo']) && !empty($_POST['minkilo']))    
  ||     (isset($_POST['maxkilo']) && !empty($_POST['maxkilo']))
   )
{
// şartlar oluştuysa bu seferde önce minimum kiloyu sorgulayalım eğer
minimum kilo girilmemişse varsayılan olarak ‘0’ a eşitleyelim
if (empty($_POST['minkilo'])) {
$_POST['minkilo'] = 0;
} else {
$_POST['minkilo'];
}
// şimdi de maxkilo yu sorgulayalım eğer maksimum  kilo girilmemişse
varsayılan olarak ‘999’ a eşitleyelim (bir  tonluk bir insan olamaz ama
ya olursa :) )

if (empty($_POST['maxkilo'])) {
$_POST['maxkilo'] = 999;
} else {
$_POST['maxkilo'];
}
$where[] = 'kilo BETWEEN ' . $_POST['minkilo'] . ' and ' . $_POST['maxkilo'] . ' ';
}
if (count($where) > 0)  // dizi eleman sayısı 0 sıfırdan büyükse yani bir sorgu gönderilmişse
{
// bu diziyi başına WHERE ekleyip, her dizi elamanından sonra  and
anlamına gelen  “ && ” işareti ekleyerek birleştiriyoruz oluşan
bu yapıyı da ilk başta yazdığımız $sorgu değişkenine birleştiriyoruz
$sorgu .= 'WHERE ' . implode(' && ', $where);
}

$sor = $db->prepare("$sorgu");
$sor->execute(array());





?>
Hepsi bu kadar bu mantıkla ister E-Posta sihirbazı yapın İster emlak Sitesi sorgusu yapın o kısmı size kalmış

Php Dizi Fonksiyonları

1) in_array == > bir elemanin dizi icerisinde olup olmadigini kontrol eder.
Mesela :
$arr diye bir dizimiz olsun :

<?php
$arr=[‘Ahmet’,’Mehmet’,’Yasir’];
if(in_array(‘Mehmet’,$arr)){

echo “‘Mehmet’ bu dizi icerisinde mevcut”;
}else{

echo “Mevcut digil”;
}
?>

Php derslerine devam edeceğiz.

Localhost İçin Proje Dosyalarını Listelemek

Merhaba, localhost üzerinde çalışırken birden fazla proje’yi localhost altında farklı klasörlerde barındıra biliyoruz. İş bu sebepten localhost altında alt klasörler barındırıldığında sürekli olarak web tarayıcısında localhost/projeismi şeklinde belirtmemiz gerekiyor. Fakat ben istiyorum ki localhost yazınca direkt olarak proje listem gelsin tabi eğer ki proje dizininde index.php dosyası yok ise zaten bu klasörler listeleniyor olacaktır fakat biz kendimiz bu dosyaları listelemek istersek o zaman ne yapmalıyız şimdi gelin bunu görelim.

Yapılacaklar listesi

  1. Projeler dizininde index.php dosyamızı oluşturuyoruz.
  2. Mevcut klasör içerisindeki tüm dosya ve klasörlerin listesini almak.
  3. Ardından aldığımız listeyi bir döngü ile listelemek.
  4. Listeleme işlemi sırasında sadece klasörlerin listelenmesi için gerekli sağlamaları yapmak.
  5. Listelediğimiz klasörlere link vermek.

 

&lt;?php
$directory = opendir('.');
while($file = readdir($directory))
{
if($file !== "." &amp;&amp; $file !== ".." &amp;&amp; substr($file, -4) !== ".php"){
echo '&lt;a href="' . $file . '"&gt;' . $file . '&lt;/a&gt;&lt;br&gt;';
}

Evet işlemlerimiz bu kadar kolay gelsin iyi çalışmalar.

WordPress Eklentileri

Selamun Aleyküm.Nasılsınız iyisinizdir inşallah?Arkadaşlar bugün sizler için bazı wordpress eklentilerini sizlerle paylaşacağım.Açıklamaları ne işe yaradıklarıyla ilgili bilgiler vereceğim.

1-) Jetpack

Arkadaşlar bu eklenti ücretsiz olup panelden aratarak kurabileceğiniz bir eklenti olup kullanımı kolaydır.Wordpress kullanımı kolay ve genelde bloggerların kullandığı bir scripttir.Jetpack eklentisiyle siteye giren ziyaretçi sayıını günlük olarak görebilirsiniz.Toplam hiti ve günlük olarak düzenli sitenize giren sayısını vermektir.Wordpress bu kolaylığı size sunmaktadır.

 

2-) All İn One Seo Pack

Sitenizin seo ayarlarıyla ilgili size kullanım kolaylığı sağlayan çokça kullanılan bir scripttir.Yine bu eklentiyi de panelden kurabilirsiniz.Panelde All İn One Seo Pack eklentisini arama kısmından kurduktan sonra konu açarken bu eklentisinin size sunduğu kolaylıklar şunlar.Etiketleme ve diğer kolaylıklar var.Panelde eklentilerden All İn One Seo Pack diye aratıp kurarsanız sonrada ayarlarının yaptıktan sonra seo işlemleriyle siteniz üst sıralara gelecektir.

Not : All İn One Seo Pack önemli bir eklentidir.

3-) Wp Pagenavi

Arkadaşlar bu eklentiyi kurarken eklentiler kısmından aratıp bu şekilde kuracaksınız.Kurulum bittikten sonra 10 dan fazla içerik girdiğinizde otomatik bir şekilde sayfalama işlemini yapacaktır.Genelde film siteleri bu eklentiyi çokça kullanmaktadır.Zamanında kullandığım için biliyorum.Bir film sitem vardı.İşe yarar ve çokça kullanılan bir scripttir.

4-)Akismet

Yorumların spam olup olmadığını kontrol etmeye yarayor ve yönetici ekranından bunların yönetilmesini sağlıyor.

5-) Yoast Seo

Öncelikle wordpress Admin paneliniz üzerinden Eklentiler >> Yeni ekle sekmesine gidin.
Karşınıza yukarıdaki resimdeki gibi bir ekran çıkacaktır. Ekranın sağ üst köşesinde ara kısmına Yoast SEO eklentisinin ismini yazın ve aratın.
Arama sonucunda ekranın solunda çıkan Yoast SEO eklentisi için Hemen Yükle butonuna tıklayın. (1+Miyon etkin kurulumu olan eklenti)
Hemen Yükle butonuna tıkladıktan sonra eklentinin yüklenmesi bir kaç saniye alacaktır. Yükleme bittikten hemen sonra ise Hemen Yükle butonunun yerinde bu sefer Etkinleştir butonu belirecektir.

6-)Wp Google Fonts

Google Fonts içerisindeki tüm fontları sitenizde uygun şekilde kullanmanıza olanak tanır.

Not : Arkadaşlar tecrübelerime dayanarak sizlerle paylaştım yorumlarınızı beklerim.

İntro Çalışması

Sitemiz için hazırlanan intro çalışmasını sizlerle paylaşıyorum arkadaşlar.Özgün ve kaliteli paylaşımlarımıza devam edeceğiz.

After Effects programı ile hazırlanmıştır.

Php Ders 1

Php Ders 1

Merhaba Arkadaşlar.Deep Kod olarak 11 videodan oluşan Laravel Eğitim Setinden sonra Php yi öğrenmeniz için makale şeklinde yazılarla devam edeceğiz.İlk konumuz echo komutu ile yazma işlemi nasıl gerçekleştirilir?Aşağıda ki kodu uzantısını .php olarak kaydedip tarayıcınızda çalıştırdığınızda

<?php
echo “Deep Kod Php Dersleri”;
?>

Çıktısı

Php ders 1

Çıktı Görüntüsü

Şeklinde olmaktadır.Ders 2 de form işlemleri ile anket uygulaması nasıl yapılır onu anlatacağım.Açıklayıcı olduğumu düşünüyorum.Makale serimiz bittikten sonra vakit bulursam videolu anlatımlar yaparak sizlerle paylaşacağım.

Deep Kod İntro

Ekibimizce hazırlanan intro çalışması.Deep Kod yazılım ekibi olarak sizler için paylaşım yapmaya devam ediyoruz.

Google Adsense

Selamun Aleyküm arkadaşlar.Adsense almak için nelere dikkat edilir?Önemli konular neler bunları anlattım.

İyi Günler.

Deep Kod Wallpaper

Arkadaşlar çalışmalarımızın devam edeceğini söylemiştik.Birbirinden güzel 3 tane masaüstü arkaplan resmi yapabileceğiniz çalışmalarımızı sizlerle paylaşıyorum.

Çalışmalarımız Adobe Photoshop Cs6 ile hazırlanmıştır.Devamı gelecektir.Teşekkürler.İyi Günler.

Grafik Çalışmaları

Selamun aleyküm arkadaşlar.Çalışmalarımızın devamının geleceğini söylemiştim.Özgün ve emek verilerek yapılan bu çalışmaları sizlerle paylaşmak ayrı bir keyif.

 

Masaüstü Wallpaper olarak kullanabileceğiniz bir çalışmadır.Devamını gelecektir.