Sık Kullanılan Regular Expression’lar

Sık Kullanılan Regular Expression’lar

Adı  : Telefon No
Regex Kodu  : [2-9][0-9]{6}
Açıklaması  : Telefon Numarası. İlk rakamı en az 2 ile başlayan toplam 7 rakamdan oluşan ifade
Adı  : Telefon No Alan Kod
Regex Kodu  : [1-9][0-9]{2}
Açıklaması  : Alan Kodu. Türkiye alan kodu deseni.3 rakamdan oluşur. ilk rakam 1’den başlar.
Adı  : Kur ve Parite
Regex Kodu  : (0|[1-9]\d{0,2}|([1-9]\d{0,2}(\,\d{3})+))\.\d{6}
Açıklaması  : Kur ve parite girişleri için 6 ondalıklı format
Adı  : Tutar
Regex Kodu  : (0|[1-9]\d{0,2}|([1-9]\d{0,2}(\.\d{3})+))\,\d{2}
Açıklaması  : Tutar girişleri için format. Binlik ayraç olarak “.” , ondalık ayraç için “,” kullanılmıştır. Her binlik grup için “.” desenini arar ama bu zorunlu karakter değildir. Ondalıklı kısım iki basamak olacak şekilde sınırlandırılmıştır.
Adı  : Küçük Harf
Regex Kodu  : [a-z]*
Açıklaması  : alfabetik yalnızca küçük harf deseni
Adı  : 24 Saat
Regex Kodu  : ([0-1][0-9]|2[0-3]):([0-5][0-9])
Açıklaması  : dd:ss stilinde saat girişi (24 saat)
Adı  : Yüzdelik Oran (0-100 Arası)
Regex Kodu  : 100|([1-9]?[0-9]{1})
Açıklaması  : Yüzde üzerinden oran belirtmek gerekirse kullanılabilir .0-100 arası rakam girişine izin verir.
Adı  : Nufus Cüzdan No
Regex Kodu  : [A-Z0-9]{3}-[0-9]{6}
Açıklaması  : Nüfus Cuzdan Sıra ve Seri No
Adı  : Nufus Cuzdan Cilt No
Regex Kodu  : [0-9]{1,4}
Açıklaması  : 4 haneye kadar nümerik
Adı  : Ehliyet No
Regex Kodu  : [0-9]{1,10}
Açıklaması  : 10 haneye kadar nümerik
Adı  : EPosta
Regex Kodu  : [a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}
Açıklaması  : Standart eposta validasyon
Adı  : Türkiye Yurtiçi Telefon-Faks
Regex Kodu  : ([1-9][0-9]{2})([1-9][0-9]{6})
Açıklaması  : Yurt içi Telefon ve Faks Patterni
Adı  : Sadece Sayısal
Regex Kodu  : [0-9]*
Açıklaması  : Sınırsız sayıda sadece rakamlar girilebilir
Adı  : Ondalıklı Değer
Regex Kodu  : (\+|-)?[0-9]{1,3}(\R.[0-9]{2})?
Açıklaması  : Oran girişlerinde kullanılır.3 tamsayı, 2 ondalık biçinde girişe izin verir. Negatif değere de izin verir

jQuery DataTables Türkçe Karakter Arama Sorunu

Merhaba arkadaşlar,

Jquery DataTables kullanımında arama yaparken Türkçe karakter problemi bulunmaktadır. Bunun çözümü içinde js kodlarımızda küçük bir değişiklik yapmamız gerekiyor. dataTables.js dosyamızın içinde “_fnEscapeRegex” fonksiyonumuzu aşağıda belirttiğim şekilde değiştirmek gerekiyor.

iyi çalışmalar

function _fnEscapeRegex ( sVal ) {

    var letters = { "İ": "[İi]", "I": "[Iı]", "Ş": "[Şş]", "Ğ": "[Ğğ]", "Ü": "[Üü]", "Ö": "[Öö]", "Ç": "[Çç]", "i": "[İi]", "ı": "[Iı]", "ş": "[Şş]", "ğ": "[Ğğ]", "ü": "[Üü]", "ö": "[Öö]", "ç": "[Çç]" };
    var acEscape = [ '/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\', ', '^', '-' ];
    var reReplace = new RegExp( '(\\' + acEscape.join('|\\') + ')', 'g' );
    sVal=sVal.replace(reReplace, '\\$1');

    return sVal.replace(/(([İIŞĞÜÇÖiışğüçö]))/g, function (letter) { return letters[letter]; });
}

javascript – Creating a custom rule in jQuery Validate

Merhaba arkadaşlar,

Bu yazımızda Form kontrollerimizde sıkça kullandığımız “Jquery Validate” eklentisinde özel kriter oluşturmaktan bahsedeceğiz. Ben bu örneğimizde bir kullanıcı kayıt formunda, kullanıcı adının kullanımda olup olmadığını kontrol etmeyi tercih ettim.

Öncelikle Validate eklentisinin “addMethod” yönetimini kullanarak, ziyaretçinin girmiş olduğu kullanıcı adının sistemimizde kayıtlı olup olmadığını kontrol edecek fonksiyonumuzu yaratıyoruz. Ajax post yönetimi ile kullanıcıdan aldığımız “username” verisini “checkUsername.php” dosyamıza gönderiyoruz.

<?php 

$output = 'true';
$username = mysql_real_escape_string($_POST['username']);
$result = mysql_query("SELECT * FROM tblMembers WHERE Username='$username'");
while ($row = mysql_fetch_array($result)) {
    $output = 'false';
}
echo $output;

Validate kodumuza ise “checkUsername: true” parametresini ekliyoruz.

$(document).ready(function(){ 
    var response; 
    $.validator.addMethod( "checkUsername", function(value, element) { 
        $.ajax({ 
            type: "POST", 
            url: "http://"+location.host+"/checkUsername.php", 
            data: "username="+value, 
            dataType:"html", 
            success: function(msg) { 
                //If username exists, set response to true 
                response = ( msg == 'true' ) ? true : false; 
                } 
        }); 
                
        return response; 
        }, "Username kullanılıyor" 
    ); 
    
    $("#userForm").validate({ 
        username: { 
            required: true, 
            checkUsername: true 
        }, 
        messages: { 
            username: { 
                required: "Username boş bırakılamaz", 
                checkUsername: "Bu kullanıcı adı kullanılmaktadır" 
            } 
        } 
    }); 
});

Görüşmek dileğiyle..

Json data parse

Selam millet,

Javascript işlemlerimizde çokça karşılaştığımız Json data işlemleri ile ilgili küçük bir şey paylaşacağım. Json datamız içindeki verileri kullanabilmek için iki yönetmden bahsedeyim.

var strJSON = '{"result":true,"count":1}';
var objJSON = eval("(function(){return " + strJSON + ";})()");
alert(objJSON.result);
alert(objJSON.count);
var json = '{"result":true,"count":1}';
var obj  = JSON.parse(json);
alert(obj.count);

haydi rastgele..

Önemli Sql örnekleri

Merhaba arkadaşlar,

Bu yazımızda işimize yarayabilecek önemli sql cümlelerini örneklendireceğiz. Bu konu biraz kapsamlı olduğundan dolayı sonuna nokta koymayacağım bir yazı olacak. Aklıma geldikçe yeni sql cümlelerini ekleyeceğim. Bir nevi not defterimiz olacak :)

  • Veritabanı oluşturmak:
CREATE DATABASE user
  • Tablo oluşturmak:
CREATE TABLE adres ( 
    adres_id int, 
    adres varchar(255) Not Null, 
    telefon varchar(32), 
    faks varchar(32), 
    eposta varchar(64) 
)
  •  Tabloya sütun eklemek:
ALTER TABLE adres ADD posta_kodu int(6)
  •  Tablo silme işlemi:
DROP TABLE adres
  •  Tablodan veri çekme:
SELECT adres,telefon FROM adres

Burada kodunuzu bal ile kesmek istiyorum :) Veri çekerken dikkat etmenizi istediğim bir konu var. “SELECT * FROM” adres gibi bir ifade az verinin olduğu veritabanlarında çok yük getirmeside veri yoğunluğunun fazla olduğu veritabanlarından büyük performans kayıplarına neden olmaktadır.
O nedenle “*” deyimi yerine sadece ihtiyaç duyduğumuz sütunları cümleye dahil etmekte fayda var.

  • Belirli kriterlere göre veri çekme
–adres bilgisi "Ankara" olanları listelemek 
SELECT adres FROM adres_defteri WHERE adres="Ankara" 

–adres bilgisi "Ankara" olmayanları listelemek 
SELECT adres FROM adres_defteri WHERE NOT adres="Ankara" 

–adres bilgisi "An" ile başlayanları listelemek 
SELECT adres FROM adres_defteri WHERE adres LIKE ‘An%’
  •  Benzer verileri silmek:

DELETE n1 FROM name n1, name n2 WHERE n1.id < n2.id AND n1.name = n2.name

DELETE n1 FROM name n1, name n2 WHERE n1.id < n2.id AND n1.name = n2.name
tablo:
+----+--------+
| id | name   |
+----+--------+
| 1  | alper  |
| 2  | onur   |
| 3  | sinan  |
| 4  | ebru   |
| 5  | alper  |
| 6  | ebru   |
+----+--------+


sonuç:
+----+--------+
| id | name   |
+----+--------+
| 1  | alper  |
| 2  | onur   |
| 3  | sinan  |
| 4  | ebru   |
+----+--------+

Sevgi ve saygılar…

Önemli Ubuntu Kurulum Komutları

Merhaba,

Ubuntu kurulumu sonrasında ihtiyaç duyabileceğiniz PHP, Mysql, nginx, phpmyadmin vs  gibi bir çok kurulumu gerçekleştirebileceğiniz komutları sizlerle paylaşmak istedim.  Döküman sevgili dostum Onur Değerli‘ye aittir. Orjinal dökümana aşağıdaki linkten ulaşabilirsiniz.  (Ekleme yapmak istediklerinizi bizlerle paylaşabilirseniz sevinirim.)

After Ubuntu İnstall

# upgrade ubuntu
sudo apt-get update
sudo apt-get dist-upgrade
sudo update-manager -d

# git
sudo apt-get install git

# oh-my-zsh
sudo apt-get update && sudo apt-get install zsh
git clone git://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh
cp ~/.zshrc ~/.zshrc.orig
cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc
chsh -s /bin/zsh

# gnome-classic
sudo apt-get install gnome-session-fallback
# or
sudo apt-get install gnome-panel
# or
sudo apt-get install gnome-shell

# chromium
sudo apt-get install chromium-browser

# chrome
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo dpkg -i google-chrome*; sudo apt-get -f install

# java
sudo apt-get install openjdk-7-jdk
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk
export PATH=$PATH:/usr/lib/jvm/java-7-openjdk/bin

# vlc
sudo apt-get install vlc browser-plugin-vlc

# php, nginx, mysql, phpmyadmin
sudo apt-get update
sudo apt-get install mysql-server php5-mysql
sudo mysql_install_db
sudo /usr/bin/mysql_secure_installation
sudo apt-get install nginx
sudo service nginx start
sudo apt-get install php5-fpm

sudo nano /etc/php5/fpm/php.ini
# cgi.fix_pathinfo=1 to cgi.fix_pathinfo=0

sudo nano /etc/php5/fpm/pool.d/www.conf
# listen = 127.0.0.1:9000

sudo service php5-fpm restart

sudo nano /etc/nginx/sites-available/default
# 1 - Add index.php to the index line.
# 2 - Change the server_name from local host to your domain name or IP address (replace the example.com in the configuration)
# 3 - Change the correct lines in “location ~ \.php$ {“ section
sudo apt-get install phpmyadmin
sudo ln -s /usr/share/phpmyadmin/ /usr/share/nginx/html

# php-cli
sudo apt-get install php5-cli

# django
# dowload lastest version from https://www.djangoproject.com/download/
tar xzvf Django-1.6.tar.gz
cd Django-1.6
sudo python setup.py install

# django extensions
sudo apt-get install python-mysqldb
sudo apt-get install python-setuptools

# django - oauth2
# download oauth2 https://launchpad.net/ubuntu/+source/python-oauth2/1.5.211-2ubuntu3
# open tar file
sudo python setup.py install

# sublime text 3
# download from http://www.sublimetext.com/3

# composer
# create composer.json
curl -s http://getcomposer.org/installer | php

sudo apt-get install ubuntu-restricted-extras rar p7zip-full

Yii Database Connection

Merhaba arkadaşlar,

Daha önce multi database  bağlantısı yapmak için bir yazı hazırlamıştık. Şimdi ise main.php ‘ yi kullanmak istemeyip kendi connectionumuzu kendimiz oluştururuz sanamı kaldık eyyy main.php diyebileceğimiz zamanlar için bir connection bağlantısı yaratmayı göstereceğim. :)

Ben kendi denemelerimde Yii dökümantasyonundaki bağlantı örneğini denediğimde sıkıntı yaşadım. O yüzden çözüm olarak aşağıda gösterdiğim örnekteki gibi bir bağlantı tanımladım.

$connection 			        = 	new CDbConnection();

$connection->connectionString	        =	'mysql:host=' . $config["host"] . ';dbname=' . $config["name"];
$connection->username 			=	$config["user"];
$connection->password 			= 	$config["password"];
$connection->active 			=	true;
$connection->emulatePrepare		=	true;
$connection->charset 			=	'utf8';
$connection->enableProfiling 	        =	true;

Bundan  sonrası çocuk oyuncağı.. Geriye sql cümlelerinizi yazmak kalıyor.

$result = $connection->createCommand()
        ->select('table_name')
        ->from('INFORMATION_SCHEMA.TABLES')
        ->where("table_schema = '".$config['name']."'")
        ->queryall();

İşte bundan ibaret. iyi çalışmalar herkese

Yii framework multi database connection

Merhaba sevgili arkadaşlar. Yii framework ile çalışmalarımız devam ediyor. Bu sefer birden fazla database ile çalışmak için config ayarlarınızda yapmanız gereken basit ama önemli bir noktaya dikkat çekmek istiyorum.

Projeleriniz büyüdükçe mutlaka ihtiyaç duyacağınız bu konuda yapmanız gereken çok basit.  “main.php”  dosyanızın database ile ilgili olan kısmına geliyorsunuz, zaten default olarak tanımlanmıış bir veritabanınız vardır. Benim main.php dosyamda da aşağıdaki gibi bir bağlantı tanımlı durumda:

....

'db'=>array(
            'connectionString' => 'mysql:host=' . DB_ADDRESS . ';dbname=' . DB_NAME,
            'emulatePrepare' => true,
            'username' => DB_USERNAME,
            'password' => DB_PASSWORD,
            'charset' => 'utf8',
            'enableProfiling' => true
          )

İkinci bir database bağlantısı için aşağıdaki kodu ekliyorum:

...

'db'=>array(
            'connectionString' => 'mysql:host=' . DB_ADDRESS . ';dbname=' . DB_NAME,
            'emulatePrepare' => true,
            'username' => DB_USERNAME,
            'password' => DB_PASSWORD,
            'charset' => 'utf8',
            'enableProfiling' => true
        ),
'db2'=>array(
            'connectionString' => 'mysql:host=' . DB_ADDRESS2 . ';dbname=' . DB_NAME2,
            'emulatePrepare' => true,
            'username' => DB_USERNAME2,
            'password' => DB_PASSWORD2,
            'charset' => 'utf8',
            'enableProfiling' => true,
            'class' => 'CDbConnection' 
        ), 

...

Buradaki  önemli  ve kritik nokta bağlantı yaptığımız diğer veritabanları için   ‘class’ => ‘CDbConnection’   parametresini ekliyoruz. Config aşamasında bunları yaptıktan sonra sıra geldi database bağlantılarımızı kullanmaya. Örnek olarak “db” bağlantısından “user” tablosundaki verileri çekelim  ve  “db2” bağlantısından da “city” tablosundaki verileri çekelim.

<?php
...

$listUsertoDb = Yii::app()->db->createCommand()
                ->select('*')
                ->from('user')
                ->where('status=:status', array(':status'=>1 ))
                ->queryAll();

$listCitytoDb2 = Yii::app()->db2->createCommand()
                ->select('*')
                ->from('city')
                ->queryAll();

Evet olay bundan ibaret :)

Görüşmek dileğiyle..

Gii modülü ve login problemi (Yii framework)

Merhaba sevgili arkadaşlar. Son zamanlarda yii ile ilgilenmeye başladım. Sanırım Yii ile uğraşan arkadaşların ortak söyleyebileceği en önemli konu, Yii’nin iyi bir dökümantasyona sahip olmaması olacaktır.  Bu nedenle Yii öğrenirken karşılaştığım problemleri ve çözümleri sizlerede fayda sağlayacağını düşünerek paylaşacağım.

Çalışmalarımın daha en başında Yii’nin gii modülünü çalıştırmakta sıkıntı yaşadım. Benzer sorunu yaşayabilecek arkadaşlar için çözüm olabilecek bir konuyu paylaşmak istedim.  Yii frameworkun kurulumu hakkında yeterince yazı yazıldığını düşünerek bu konunun üzerinde fazla durmayacağım (yinede takılan arkadaşlar olursa yardımcı olmaya çalışırım)

Yii’nin en güzel yanlarından biri olan gii modülü projelerinizde model- controller gibi yapılarınızı hızlıca oluştmanıza yardımcı oluyor ve teferruatla  uğraşmak yerine esas kodlarınıza daha fazla vakit ayırmanıza imkan sağlıyor.  İşte bende bu modülden faydalanmak isterken modüle login olmakta sıkıntı yaşadım. Eğer sizde aynı sıkıntıyı yaşıyorsanız  muhtemelen session.save_path probleminiz vardır.

Sorunun çözümü için öncelikle phpinfo() komutunu kullanarak session.save_path‘inizin nerede olduğunu öğrenin. sonra bu path için yazma izni verin. Benim dizinim “/home/alper/workspace/yiiProje/tmp” olarak tanımlanmış. Aşağıdaki komutu  kullanarak bu dizine yazma izni veriyoruz.

chmod -R 777 /home/alper/workspace/yiiProje/tmp

Sorun çözüldü.
Selam ve sevgiler..

Php – mysql türkçe karakter problemi (utf-8)

Merhaba arkadaşlar. Bir çoğumuz databaseden gelen verilerde türkçe karakter sıkıntızı yaşamışızdır.    Eğer böyle bir problem yaşıyorsanız çözüm olabilir.

iyi çalışmalar

<?php
    /**
    **
    ** gelen içeriği utf-8 ' e çevirir
    **
    ** 
    */
    public function getTextToUtf8($text) {

         $textTrim = trim($text);

         $textReplace = str_replace(
                    array("ı","ö","ü","ç","ş","ğ","A","B","C","Ç","D","E","F","G","Ğ","H","I","İ","J","K","L","M","N","O","Ö","P","R","S","Ş","T","X","U","Ü","Q","V","W","Y","Z"),
                    array("i","ö","ü","ç","ş","ğ","a","b","c","ç","d","e","f","g","ğ","h","ı","i","j","k","l","m","n","o","ö","p","r","s","ş","t","x","u","ü","q","v","w","y","z"),
                $textTrim									
                );
         $text = strtolower($textReplace);
         return $text;
    }