Translate Blog

php etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
php etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

14 Aralık 2015 Pazartesi

Türkçe PHP Büyük Küçük Harf Çevirimi (Global UTF-8 Çözümü)

Her zmanaki gibi yine türkçe karakter problemi yaşıyorsunuz sorun yok hemen konuya girelim.
Phpde türkçe yazım sorunu, harf değişimi vs sorunlarına ilaç

$metin = "tıraş ağır"; //1 adet içinde Türkçe karakterler olan bir değişken
echo mb_strtolower($metin);


bunun sonucu bir kaç şekilde olmakla birlikte
TıRAş AğıR olabileceği gibi türkçe karakterler tamamen bozuk veya hiç gözükmeyebilir.


ÇÖZÜM
mb_strtoupper() kullanımı.

echo mb_strtolower("tıraş ağır","UTF-8");
veya

mb_internal_encoding("UTF-8");//ayarlarınızın olduğu ve her sayfaya yüğklenen bir dosyanız varsa ona bu kodu yazın. Global olarak utf-8i atarsanız artık sayfalarınızda alttaki kodu rahatlıkla kullanabilirsiniz.
echo mb_strtolower("tıraş ağır");


Sonuç TIRAŞ AĞIR ;)

2 Şubat 2015 Pazartesi

Veritabanından Php Form Oluşturucu Versiyon 2 / Database to Bootstrap Php Form Creator Version 2

Form Oluştur Versiyon 2

Yukarıdaki linkten Veritabanınızdaki tablolar için otomatik form oluşturabilirsiniz. Localhostta çalıştırın veritabanınızı seçin tabloyu seçin ve Form oluştura tıklayın.

_______________________________________________________________________


_______________________________________________________________________




31 Ocak 2015 Cumartesi

Veritabanından Php Form Oluşturucu / Database to Bootstrap Php Form Creator

[Düzenleme:]
2. versiyonu için tıklayınız. / Click to see the newer version.




Yıllardır şunun merak etmişimdir, neden kimse veritabanındaki tablolardan seçtiğim alanlara göre bir kayıt formunu otomatik oluşturacak bir kod yazıp da internete atmamıştır.

Dosyayı kendi localhostunuzda çalıştırmak için indirin.

Veritabanınızı ve Formunu istediğiniz tabloyu seçin. / Choose your database and table that want to make a form

Formda kullanmak istediğiniz alanları seçin / Choose your fieldnames for your form

Eğer tablonuzu oluştururken yorum kısımlarına mantıklı bir açıklama yazarsanız form elemanlarınızın üstünde olacak yazılar otomatik gelecektir. Eğer yorum kısımlarınız boş ise elinizle doldurmanız gerekecek. / If you fill the field's comments such as "Name and Surname Please" for name field, your form element's explanation come automaticly. If no you must fill the text areas like above image.


Gönder butonu ile formu görebilir ardından göster butonuna tıklayarak kodları alabilirsiniz. / Click Gönder link to see the form itself, after that click göster link to see and copy the form codes.



Kodda form elemanları http://getbootstrap.com/css/?#forms daki gibi Bootstrap'a uygun olarak oluşturulmuştur. Formunuzun yakışıklı gözükmesi için sayfanıza http://getbootstrap.com/getting-started/ daki CDN javascript ve css linklerini yüklemenizi öneririm.

Veritabanına bağlanmak için medoo kullandım. Sizin de kullanmanızı öneririm. Hem güvenlik hemde hızlanmak için birebir. Bu kütüphane veritabanına bağlantı, ve çeşitli sql yazımları için kolaylaştırılmış bir yapısı vardır. http://medoo.in/download adresinden indirebilir nasıl kullanıldığını http://medoo.in/api/new adresinden inceleyebilirsiniz. Ayrıca indireceğiniz dosyanın içindeki form.min.php dosyasını da nasıl bağlantı yapıldığına bakarak siz de kullanabilirsiniz. 

Henüz sadece text ve varchar alanlarını düzgün bir şekilde ekrana eklemekte. Int, date vb gibi alanlar için jquery ve bootstraplı form elemanları sonraki verisiyonunda eklenecektir. Takip ediniz.

how to create form from database, create form from database, create bootstrap form automaticly, automatic form creator, use tables to create form, veritabanından form oluştur, php form creator, php kullanarak veritabanından otomatik form oluşturma kodu, nasıl otomatik form oluştururum.

24 Ocak 2015 Cumartesi

Php Kelimeleri Büyük Harf Yazın, Türkçe Karakter Sorunu Çözümü / Turkish Encoding Problem on PHP

Yıllardır php ile uğraşırım şu gıcık Türkçe karakter olayından oldum olası çekmişizdir. Mesela veritabanınızda veya sayfanızda küçüklü büyüklü yazılmış saçma sapan isimler var. Bunları strtoupper ile hemen büyük harfe çevirebilirsiniz sanıyorsunuz, ama ne yazık ki öle olmuyor.

strtoupper("aşık veysel derki");
kodu
AşıK VEYSEL DERKI

şeklinde ıiş gibi türkçe harflerin saçma sapan ekranınıza yazıldığında sinirlernmekte haklı olduğunuzu görür ve google da aramalara giriştiniz. Umarım burayı hemen bulmuşsunuzdur.

Sorunu mb_strtoupper gibi bir kodun var olmadığını görmeyerek üzülmemiş olduğunuzu varsayarak devam ediyorum. (substr türkçe karakterlerde sorun yaratırken mb_substr($kelime,2,4,'utf-8') sorunu çözmekte ve mb_ ön ekli bir çok fonksiyon utf-8 encoding yaparak sorunların üstesinden gelmekte. )

Çözüm 2 fonksiyondan geçiyor.

 
function metintodizi( $string ) { 
 return preg_split('/(?<!^)(?!$)/u', $string ); 
} 
function strto($metin){
 $k_harf = array("a","b","c","ç","d","e","f","g","ğ","h","ı","i","j","k","l","m","n","o","ö","p","r","s","ş","t","u","ü","v","y","z","q","w","x"," ");
 $b_harf = array("A","B","C","Ç","D","E","F","G","Ğ","H","I","İ","J","K","L","M","N","O","Ö","P","R","S","Ş","T","U","Ü","V","Y","Z","Q","W","X"," ");
 $kalan='';
 $metin = metintodizi($metin);
 for($m=0;$m<count($metin);$m++){
  if(!array_search($metin[$m],$k_harf)){
   $kalan .= $b_harf[array_search($metin[$m],$b_harf)].''; 
  }else{
   $kalan .= $b_harf[array_search($metin[$m],$k_harf)].'';    
  }
 }
 return $kalan;
}


echo strto("aŞık Veysel derKi");
AŞIK VEYSEL DERKİ


Gelelim nedir bu kodlar, ilk fonsiyonu bende bilmiyorum :D bir yerden aldım preg komutlarını oldum olası yapamam. konuya dönelim ilk fonksiyon metninizin her bir harfini diziye aktarıyor. Bunu yapan başka hazır komutlar da var diyenleri duyar gibiyim ama ne yazikki Türkçe konuşup Türkçe yazmakta ve inanmayacaksınız ama değişkenlerin içlerindeki verilerimiz bile Türkçe. Siz türkçe bir kelimeyi explode veya str_split veya mb_split gibi komutlarla dizi hali getirmeye çalışa dururken burdaki kodları kullanlara yapan arkadaşlar çoktan sorunlarına çözüm buldular bile.

Ne diyorduk, İlk fonksiyonla metninizi dizi haline getirdik harf harf. İkinci fonksiyonda ise Türkçe küçük ve büyük harflerimiz var dizi halinde. Dizi metnimizin her bir harfi tek tek taranıyor ve küçük harflerdeki dizi sırası alınıp, bu dizi sırasına karşılık gelen büyük harflerdeki dizi elemanı alınıp bir değişkene for döngüsündeki sıra ile alınıyor.

Böylelikle harf harf metniniz kontrol edilerek (sadece harfler bir de boşluk var) harfler küçükse büyük harfe çevriliyor.




Bu lanet probleme artık bir dur dediğimize göre işimize geri dönebiliriz.

20 Ocak 2015 Salı

Php İle Ayın Günlerini Takvim Gibi Listeleme / List days of month like a calender

Aşağıdaki kod bulunduğunuz aydaki takvimi size vermektedir. Takvim tarihleri barındırır. Gelişrirsem paylaşacağım.

//şu anki zamana göre bulunulan ayın ilk günü sayısal olarak alınır
$month_start = strtotime('first day of this month', time());

//bu ayın kaç gün çektiği sayısal bilgisi (30) cal_days_in_month(CAL_GREGORIAN, ay, yıl)
$aydaki_gun = cal_days_in_month(CAL_GREGORIAN, date('m', $month_start), date('Y', $month_start));

//date('N',tarih) bu bulunduğu haftanın kaçıncı gününe denk geldiği bilgisidir. Tarih pazar ise 1 pazartesi 2 salı 3 vb döner. Pazaartesi ilk gün olduğu için döngüyü 1den (pazartesi) başlattım. ayın ilk tarihi haftanın hangi gününden başlayacağı if ile belirlenmektedir. date('N', $month_start)==$i ye eşit olana kadar tarih yazılmaz yerine boş alanlar [00-00-0000] ekleniyor. Eşit olunca tarih yazılır ve break; ile for döngüsü kırılır.

for($i=1;$i<8;$i++){
if( date('N', $month_start)==$i){
$ilkhafta=$i;
break;
}else{
echo '<span style="text-decoration: line-through;">[00-00-0000]</span>     ';
}
}

//ayın kalan günleri de sütun sayısı 7 olana kadar yanyana echo ile yazdırılmakta. ilkhafta değişkeni ilk haftadaki günün kaçıncı gün olduğunu tutuyordu üstteki döngüde. bu sayının arttılıldığını görüyorsunuz her seferinde. Yani gün gün 1er artmakta. Ve 7ye her tam bölünmesinde bir alt satıra <br> tagı eklenerek geçilir. Her bir gün J ile sayılır ve Aydaki gün sayısına eşit olduğu zaman do while döngüsünden çıkılır.

$j=0;
do{
echo '['.date('d-m-Y', strtotime('+'.$j.' day', strtotime(date('d-m-Y', $month_start)))).']     ';
$j++;
if($ilkhafta % 7 == 0) echo '<br>';
$ilkhafta++;
}while($j<$aydaki_gun)




Kodların tamamı aşağıdadır


$month_start = strtotime('first day of this month', time());
$aydaki_gun = cal_days_in_month(CAL_GREGORIAN, date('m', $month_start), date('Y', $month_start));
for($i=1;$i<8;$i++){
if( date('N', $month_start)==$i){
$ilkhafta=$i;
break;
}else{
echo '<span style="text-decoration: line-through;">[00-00-0000]</span> ';
}
}
$j=0;
do{
echo '['.date('d-m-Y', strtotime('+'.$j.' day', strtotime(date('d-m-Y', $month_start)))).'] ';
$j++;
if($ilkhafta % 7 == 0) echo '<br>';
$ilkhafta++;
}while($j<$aydaki_gun)

6 Ocak 2015 Salı

Wordpress'e Harici Sayfa Eklemek / How to add - include php files to wordpress

Wordpress sistemi page.php dosyası ile sayfalarını çağırmaktadır.
Dosya yolu wordpress\wp-content\themes\tema_adı\page.php

Bu dosyanın bir kopyasını alın. Adını istediğiniz bir ad ile değiştirin tabi uygunsuz karakter olmasın mesela harici_dosya.php

Sayfada değişikliği sonra yapalım önce bu harici dosyayı nasıl woprdpresste bir sayfa gibi açacağız. Wordpress admin panelini açın. Sayfalar->Yeni Ekle butonuna tıklayın.

Ekranın sağ tarafında Sayfa Özellikleri başlığı altında Şablon açılır menüsünü açın ve sizin harici_dosya isimli seçeneği göreceksiniz. Seçin ve sayfanıza bir başlık adı verin, sayfada bir değişiklik yapmadan yayınlayın.

Sitenizi açtığınızda menüden linke tıklayın ve kendi sayfanızın açıldığını göreceksiniz. Şimdi gelelim dosyanın içini düzenlemeye.

<div id="content" class="site-content" role="main">
....kodlar....
</div>

harici_dosya.php nin içinde id si content olan div tag bloğunu bulun (yukardaki). İçindekileri silin ve sayfada göstermek istediğiniz veritabanı bağlantılı,bağlantısız, düz veya karmaşık site kodlarınızı buraya yapıştırın veya include() edin.

Wordpress ten bağımsız size özel sayfanız artık wordpress in içinde.



#################################

How to include external php files on wordpress,
Simple way is to use page.php file. you can find this file on wordpress\wp-content\themes\tema_adı\page.php
Make a copy of it. Name it whatever you want such as hi.php

Open your wordpress admin panel, click Pages->Add New,
Find the Page Attributes on on the rigth panel. You will see Template combobox, choose your hi template and give your page a Title and Publish.

Tada your page now on your wordpress menu. Lets fill this page,
on your hi.php file find the div that have id="content"
<div id="content" class="site-content" role="main">
....codes....
</div>
erase codes on it. This place is your page content. Write or include whatever you want on this lines.
Have a nice blog.

2 Ocak 2014 Perşembe

OS X How To Change Apache/localhost File Permission / OS X İşletim Sisteminde Apachi/loaclhost Dosya İzinleri Nasıl Değiştirilir

Eğer bir mac kullanıcısı iseniz, localhostta çalışırken muhtemelen kurmuş olduğunuz bazı sistemler çalışmayacaktır. wordpress, drupal, ojs vb... Çalışmamasının sebeplerinden biri de bu sistemlerin kurulum esnasındaki değiştirdiği bazı dosyaların yazma izinlerinin olmaması, veya dosya yüklerken hatalar ile karşılaşırsınız. Yine aynı sebep. Windowsta bu sorunla pek karşılaşmazsınız.

Çözümü ise şöyle,
Ben OJS (Open Journal System) kurmak istemiştim. Kurulumu bile yapamadım. Arattığımda bazı dosya ve dizinlerin yazma izinlerinin olması gerektiğini okudum. Aynı aramayı sizde yapmalısınız yani sisteminizin nasıl kurulduğuna dair bir döküman bulun. Hangi dosya ve dizinleri yazmaya açacaksanız aşağıdaki işlemleri o kısımlara uygulayın.

cmd + spacebar a basın yani arama menüsünü açın,
Terminal yazıp entera basın. ekrana osx terminal penceresi gelecek.

şu anda bulunduğunuz yeri öğrenmek için pwd yazın enterlayın.
ben XAMPP kullanıyordum,
ilgili klasöre girmem gerekli,

ls
ile bulunduğunuz dizini listeleyebilrisiniz

cd ..
ile bir üst dizine çıkabilirsiniz

cd /klasöradı/onuniçindekiKlasörAdı/ diyerek istediğiniz klasöre girebilirsinz.

Benim girmek istediğim klasörün tam yolu
cd /Applications/XAMPP/htdocs/ojs1/
idi.

Bir dosya veya dizini yazmaya açmak için chmod komutu kullanılır.
chmod 777 config.inc.php
chmod 777 public/
chmod 777 cache/_db/
gibi klasör veya belgelerin dosya izinlerini tamamen yazılabilir yaparsanız dosya yükleme işlemlerinde sorunla karşılaşmazsınız.





if you have problem about setup wordpress, ojs, drupal etc you probably find an error about setup error or uploading file error.
You must change file permission of some files or directories.
To do that, first you google the system setup process on internet. Find the writable file/fodler names.

CMD+SpaceBar
type Terminal
you must change file permission to do that use chmod command.
such as changing a file
chmod 777 /Applications/XAMPP/htdocs/ojs/config.inc.php
changeing a directory
chmod 777 /Applications/XAMPP/htdocs/ojs/cache/_db/

if yu dont know directory names use ls to list the directory you in.
cd .. to go upper directory
cd /fodlername/fodler/ to get inside the folder

17 Nisan 2013 Çarşamba

Php İle Yapılan İşlemin Çalışma Süresini Arttırmak / Increase PHP Execution-Working Time

Sayfanızda kod çalışıyor ama tamamlanamadan duruyor mu?
Uzun bir döngüyü başlattınız ama sonlanmadan bitti mi?

Problem muhtemelen kodunuzdadır, düzeltin geçer ;)
Demeyeceğiz, ilacını vereceğiz,

Başlattığınız işlem serverınız tarafından çok uzun sürdüğü için iptal edilmekte. Ama bu bekleme süresini elinizle değiştirebilirsiniz. Hemde php.ini dosyanızı kurcalamadan ufak bir kod ile. Php dosyanızın içine aşağıdaki kodu ekleyin;


set_time_limit(10);

ini_set('max_execution_time', 1000);


max_execution_time komutunu çalıştırdığınız belge için arttırarak o an yapılan işlemin 1000sn de sürse kesilmeden devam ettirileceği anlamına gelmektedir.

Üzülerek bildirmek isterimki set_time_limit ne işe yarar bilmiyorum. Ama bu kod sayfamda 500 adet resim işlenip bir dizine kaydedilirken işlemlerimin yarıda kesilmesini engelledi.

If your php page has a log job to do, and has a deadlock while running, you should change your php execution settings. You can change file execution time on php.ini but you dont need to do this way.
As an easy way you can use above code on your php file. Make execution time to 1000 (16 min) ;)

I have 500 images to process on one time, and have a deathlock on 160th. I use this code and now i can process all my images for one attampt in one php file.

Php İle Alfabetik Türkçe Dizin Listeletme

Klasörlerin içindeki belgeleri alfabetik listelemek için aşağıdaki kodu kullanabilirsiniz. $dizin içini listelemek istediğiniz klasörün yoludur.

<?php
$dizi = array();
$dizin = "b/";
$ac = opendir($dizin);
while($x=readdir($ac)) {
    if ($x != "." && $x != "..") {
         $dizi[] = $x;
    }
}
sort($dizi); //listelenen isimler alfabetik sıralanıyor.

foreach($dizi as $x => $y) {
 echo $y."<br>"; //ekrana satır satır yazdırılıyor.
}
?>


Yukarıda görüldüğü gibi sayfanızdaki bilgilerin türkçe karakterlerinde bozulma oluyorsa belgenizin encoding olayını Türkçe olarak değiştirmelisiniz. Bunu Dreamweaverda veya Notpad++ ile yapabilirsiniz. Dreamweaver'da Properties panelinde Page Properties / Title Encoding / Türkçe (Windows)
Notpad++'da Kodlama/Karakter Grubu / Türkçe / Windows-1254

Hiçbiri işe yaramıyorsa kodlarınızı kopyalayın, boş bir belge açıp içine yapıştırın. Encoding ayarını yapıp yeniden kaydedin.