Merhaba,
Uzun zamandır başlamayı planladığım bir eğitim serisi vardı ama bu seriyi youtube üzerinden yada video halinde değil tamamen bir makale üzerinde ve r10'a ait olacak şekilde paylaşım içerisine girmeyi planlıyordum. Bu rehber içerisinde php'e yeni başlayacak olan arkadaşlar için özellikle çok faydalı olabileceğini düşündüğüm hususları tek tek paylaşacağım bu paylaşımları yine bu konu altında gönderi olarak paylaşımı yapacagım hızlı link olarak konuya dahil edeceğim. Çok konu olduğu için paylaşımlarım uzun zaman alabilecek türde olacak gösterdiğiniz ilgi ve alakaya şimdiden teşekkür ederim..
## Konular ##
1- Veritabanı işlemleri, tablo türlerinin genel özellikleri
2- Sabit sayfalar için veritabanından veri çekme işlemi
3- PHP Substr kullanımı
4- Kullanıcıya hangi sayfa'da olduğunu göstermek
5- PHP dosya upload işlemlerinde format seçimi
6- Tarih ve Saat kullanımı
PHP PDO Dersleri // Yeni Başlayanlar için Güzel Bir Rehber
13
●677
- 02-08-2020, 16:45:551- Veritabanı işlemleri, tablo türlerinin genel özellikleri
Merhaba, bu rehberimizde ilk adımımızı veritabanımız ile başlıyoruz. Veritabanı bir yazılımdaki tüm bilgileri saklayabileceğimiz alandır kısacası hafıza olarak düşünebilirsiniz. Bir yazılım yazarken kullanacağımız alanların özellikleri, tablo yapıları oldukça mühim hususlardır. Bir proje yapacağınız zaman ilk olarak veritabanını tasarlamanız gerekir örneğin projede ihtiyaçınız olacak özellikler nedir bu özelliklerin tablo isimleri nasil olacak sütünların türleri neler olacak gibi bir plan yapmanız size +zaman kazandıracaktır. Şimdi hemen konumuza başlayalım.
Oluşturduğunuz bir veritabanı olduğunu varsayarak phpmyadmin'e girdiğimizi düşünelim..

karşımıza böyle bir ekran geliyor (tabii sizde tablo olmadığı için boş bir ekran görmüş olacaksınız..) burada yeşil olarak işaretli alan mevcut tablo isimleri kırmızı olan ise bu tablonun dilini gösteriyor. Bazı sunucular da işlem yapılmadığı sürece tablo dilleri (yenil açılan bir tablo ise özellikle) latin olarak işaretli geliyor ve sizde veri eklerken Türkçe karakter kullandığınız zaman otomatik olarak karakter sorunu yaşıyorsunuz bunun en basit sorunlarından birisi tabloların dil seçenekleri ile alakalı olabiliyor. Buyüzden tabloların dil özelliğinin utf8_turkish_ci olmasına dikkat edelim. Aynı zamanda işlemler alanından utf8_turkish_ci seçeneğini seçip yeni açılacak tablolarda bu özelliği kullandırmayı zorunlu hale getirebilirsiniz.

Evet şimdi gelelim yeni bir tablo oluşturmaya diyelim ki bir sayfa için tablo yaratacağımızı düşünelim örneğin hakkımızda sayfası olsun bizim için gerekli olacak sütünları inceleyelim.
1- hakkımızda için bir başlık atayabiliriz. (hakkımızda_baslik)
2- hakkımızda için bir açıklama yazısı olmalı (hakkımızda_aciklama)
3- birde fotoğraf ekleyelim açıklama yazısının altına yada üzerine (hakkımızda_foto)
4- birde misyon ve vizyon için sütün açtıralım (hakkımızda_misyon - hakkımızda_vizyon)
5- seo için şu sayfa başlığı anahtar kelimeleri ve açıklamalarını da panelden çektirelim istiyorum (sayfa_baslik, sayfa_aciklama, sayfa_anahtar)
evet bir test veritabanı için daha ne olsun :-) şimdi baktığımıza göre bizim için 8 tane sütün + 1 adet de id için sütün açmamız ideal görünüyor
evet şimdi geldik tablomuzun içeriklerini doldurmaya :-) yeşil olan alanımız tablo'daki sütünların isimleri(yukarıda yazdığımız hakkımızda_baslik, hakkımızda_aciklama isimlerinin yazılacağı alandır.) kırmızı olan ise o sütünün türünü belirlemek bu türlerin genel anlamlarını size alt satırlarda anlatıyor olacağım. Örneğin id kısmı int olmalı (sadece rakam) bu sayede o sütünün id'sini belirleyip php alanlarında rahat bir şekilde kullanmamıza imkan sağlıyor. Turuncu alan ise bu sütünda en fazla kaç uzunluk kullanabileceğimizi belirliyoruz örneğin bir tabloda T.C kimlik numarası almak istiyorsunuz burada ki türünü INT yapıp uzunluk değerini 11 yaparsanız eğer 12. karakteri yazdıramayacağı için hata verdirmemizi sağlayacak en son mavi olan ise ilk veriden sonra otomatik olarak id değerini arttırmamızı istiyoruz örneğin bir veri ekledik (1. sütün id değeri olacağını varsayarak anlatıyorum.) 1. sütünün id=1 bir sonraki id=2 bir sonraki id=3 bir sonraki id=4 bunun otomatik olarak arttırmamızı sağlayan seçenek A_I (auto_ıncrement) özelliğidir. Örneğin biz sayfa_basligi, sayfa_aciklama ve sayfa_anahtar sütünlarını açmiştik bunu ise seo için yapmıştık ama bunu tablo da zorunlu değildir diye belirtmediğimiz için biz veri eklemek istediğimiz de bu 3 sütünü boş bırakırsak eğer sistem hata verecektir zorunlu alan doldurmamız gerektiğini belirtecektir. Şimdi bu tarz durumlar için ne yapmamız gerekli bu sütünü boş da olabilir dolu da olabilir diye belirtmemiz gerekiyor çünkü bu tarz eylemler'de bazen sonra güncelleriz denildiği için herzaman boş da kalabilir olarak işaretlemeliyiz bunu nasil yapariz peki çok basit Boş yazan kısımdaki checkbox'u işaretlemimiz yeterli olacaktır.
Bu adım'dan sonra artık tablomuzu oluşturmuş olacağız.

Evet şimdi gelelim bu tablo içinde türü olarak görünen (int, varchar, text gibi verilerin genel açıklamalarına)
INT = rakam geçerlidir.
VARCHAR = standart olarak kelime ve rakam içerir (max. kullanım 999 karakter ile sınırlıdır.)
TEXT = standart olarak kelime ve rakam içebilir herhangi bir kullanım limiti yoktur. Editör ile makale veya açıklama gibi karakteri yüksek kullanım içeren tür
DATE = tarih kullanımı için
TIMESTAMP = bu seçeneği sağlıklı kullanmanız için boş olarak işaretleyip + varsayılan kısmını current_timestamp olarak işaretlemeniz halinde bir veri kayıt ettiğiniz zaman otomatik olarak o verinin kayıt tarihi / kayıt saatini bu tabloya yazdırmanızı sağlayacak.
bunun gibi birçok özellik içeren türler vardır bizlerin genellikle kullandiği çoğu türler bunlardır, türler için daha detaylı listeyi internetten bulabilirsiniz. - 02-08-2020, 17:14:352- Sabit verileri önyüze yansıtmak
Merhaba, bildiğiniz üzere bazı sabit sayfalar olabiliyor ( örneğin: hakkımızda sayfası, iletişim sayfası...) bunları nasil çekebileceğimizin en kolay yolunu göstermek istiyorum hadi başlayalım kahvelerinizi hazırlayın
1. mesajımızda veritabanını hazırlamıştık bu yüzden tekrar o kısıma girmiyorum 1. mesajdaki tabloyu baz alarak işlemlerimizi gerçekleştiriyoruz. Şimdi öncellikle tablomuzu oluşturduktan sonra burada tek 1 id'li bir sütün kalacak neticede sürekli bir veri eklemesi olmayacak sütün olarak bu yüzden burayı aşağıdaki gibi yapiyoruz kıymetli dostlar.. Temel olarak tablodaki verimizi çekmemiz lazım ama bunu size tavsiyem header.php gibi bir alandan çekmeniz işinizi hafifletir örneğin hakkımızda.php sayfasına çekim yapicaksınız ama berki anasayfa.php kısmına da çekim yapabilirsiniz buyüzden bu tarz temel betikleri herzaman ulaşabilecek bir yerden kullanirsanız size çok çok faydası olacaktır.
<?php $hakkimizda = $dbh->query("SELECT * FROM hakkimizda WHERE id = 1 ", PDO::FETCH_ASSOC); if ($hakkimizda->rowCount()) { foreach ($hakkimizda as $hakkimizda) { } } ?>Bu fonksiyon'da biz ne yaptık hemen anlatalım.. $hakkımızda diye bir değişken oluşturup hakkımızda tablosunda id değeri 1 olan sütünü çek $hakkımızda değerine atiyarak kullanılacak yerlere tanımlayabiliriz dedik.. Hemen bir test yapalım örneğin bir hakkımızda sayfasını yaptınız html tasarımlar bitti artık phplere girdiğimizi varsayalım.

Örnek olarak dosya'da şöyle yazdığını varsayalım..
<div class="pt-2 pt-md-4"> <p>Yaygın inancın tersine, Lorem Ipsum rastgele sözcüklerden oluşmaz. Kökleri M.Ö. 45 tarihinden bu yana klasik Latin edebiyatına kadar uzanan 2000 yıllık bir geçmişi vardır. Virginia'daki Hampden-Sydney College'dan Latince profesörü Richard McClintock, bir Lorem Ipsum pasajında geçen ve anlaşılması en güç sözcüklerden biri olan 'consectetur' sözcüğünün klasik edebiyattaki örneklerini incelediğinde kesin bir kaynağa ulaşmıştır. Lorm Ipsum, Çiçero tarafından M.Ö. 45 tarihinde kaleme alınan "de Finibus Bonorum et Malorum" (İyi ve Kötünün Uç Sınırları) eserinin 1.10.32 ve 1.10.33 sayılı bölümlerinden gelmektedir. Bu kitap, ahlak kuramı üzerine bir tezdir ve Rönesans döneminde çok popüler olmuştur. Lorem Ipsum pasajının ilk satırı olan "Lorem ipsum dolor sit amet" 1.10.32 sayılı bölümdeki bir satırdan gelmektedir. </p> <div class="mt-3 mt-lg-6"></div>
Bizim burada kullanacağımız fonksiyonumuz ise şu şekilde olacak
<div class="pt-2 pt-md-4"> <p><?=$hakkimizda['aciklama'];?></p> <div class="mt-3 mt-lg-6"></div>burada ne kullandık " <?=$hakkimizda['aciklama'];?> " peki neden <?php echo değilde böyle birşey yaptık bildiğiniz üzere birçok yazdırma komutu var bunu da echo ile yazdırabilirsiniz ama ben standart olarak bu şekilde kullaniyorum hem daha güzel hemde aradığımda daha rahat bulabiliyorum size de tavsiye ederim :-) şimdi sonucuna baktığımızda phpmyadmin'de hakkımızda tablosunda aciklama sütününda ki verileri sorunsuz olarak buraya eklemiş olacağız aynı şekilde çektirmek istediğiniz tüm sütünlar için 'aciklama' içerisinde yazan sütün ismi ile değiştirmeniz yeterli olacaktır. - 03-08-2020, 21:48:333- Substr kullanımı
Merhaba, bildiğiniz üzere php'de substr diye bir özellik var peki nedir bu substr anlatalım..
Substr bir yazının kısaltılışını sağlamaktadır. Örneğin bir hakkımızda alanınız olduğunu varsayalım veya hizmetler listesinde kısa bir açıklama çekmek istiyorsunuz. Bunu en basit olarak şu şekilde yapabiliyoruz.
Örnek metinimiz ;
Lorem Ipsum, dizgi ve baskı endüstrisinde kullanılan mıgır metinlerdir. Lorem Ipsum, adı bilinmeyen bir matbaacının bir hurufat numune kitabı oluşturmak üzere bir yazı galerisini alarak karıştırdığı 1500'lerden beri endüstri standardı sahte metinler olarak kullanılmıştır. Beşyüz yıl boyunca varlığını sürdürmekle kalmamış, aynı zamanda pek değişmeden elektronik dizgiye de sıçramıştır. 1960'larda Lorem Ipsum pasajları da içeren Letraset yapraklarının yayınlanması ile ve yakın zamanda Aldus PageMaker gibi Lorem Ipsum sürümleri içeren masaüstü yayıncılık yazılımları ile popüler olmuştur.
Bunu şimdi kısaltmaya çalişalım..
<p>< ? php echo substr( $hakkimizda [' aciklama'],0,1 000); ? >.. < a href =" hakkimizda">Devamını Oku</ a> </p>
Evet, şimdi echo substr ile 2. mesajımızda yaptığımız örnekteki gibi hakkımızda verisinin içerisinde yer alan aciklama tablosundan 0 ile 1000 arasında ki kelimeleri çekip yansıtmamızı istedik.. Burada şu önemli yazının devamını göstermek isterseniz eğer <a href etiketi ile devamını oku içerisine yönlendirme sağlatabiliriz.. - 05-08-2020, 14:25:534- Hangi sayfada olduğunu göstermek
Merhaba, şimdi sizlerle çok güzel bir fonksiyon yapacağız bu fonksiyon kullanıcıya şuan hangi sayfa'da olduğunu gösterecek + css ile ufak bir düzen de vereceğiz hadi başlayalım kahvelerinizi alın.. Şimdi tam olarak ne yapmak istediğimizi gösterelim
böyle bir menü olduğunu varsayalım üst menü olur, yan menü olur, nerede yapmak istiyorsanız bunu yapabilirsiniz tamamen sizin hayal gücünüze kaldı diyelim.. Şimdi ilk olarak yapmamız gereken şu hangi sayfalarda kullanmak istiyorsak buna bir değişken ataması yapmamız gerekiyor örneğin hakkımızda.php, katalog.php, r10.php gibi
<?php $page = 'banka'; ?>
burada $page değişkenine banka ismini atadım ardından hakkımızda dosyasına örneğin hakkımızda dedim r10 dosyasına r10 dedim ... şimdi dönüyorum bunu uygulayacağımız dosyaya yani sidebar, navbar, menü, footer siz nerede uygulayacaksanız oraya gidiyoruz..
<li class="nav-item"><a class="nav-link active" href="hakkimizda">Hakkımızda</a></li>
evet şimdi bizim burada yapmamız gereken şu active bildiğiniz üzere çoğu temalarda standart olarak bu sayfada isem rengini değiştir anlamına geliyor. Bizim burada yapacağımız işlem eğer ki kullanıcı page değişkeninde hangi başlığa eşitse onu active et diyoruz hemen bir örneği gösterelim
<li class="nav-item"><a class="nav-link <?php if($page=='hakkimizda'){echo 'active';}?>" href="hakkimizda">Hakkımızda</a></li><li class="nav-item"><a class="nav-link <?php if($page=='hakkimizda'){echo 'active';}?>" href="hakkimizda">Hakkımızda</a></li> <li class="nav-item"><a class="nav-link <?php if($page=='kataloglarimiz'){echo 'active';}?>" href="kataloglarimiz">Kataloglarımız</a></li> <li class="nav-item"><a class="nav-link <?php if($page=='fiyat'){echo 'active';}?>" href="fiyat-teklifi">Fiyat Teklifi</a></li> <li class="nav-item"><a class="nav-link <?php if($page=='banka'){echo 'active';}?>" href="banka-hesaplarimiz">Banka Hesaplarımız</a></li> <li class="nav-item"><a class="nav-link <?php if($page=='ik'){echo 'active';}?>" href="insan-kaynaklari">İş Başvuru Formu</a></li> <li class="nav-item"><a class="nav-link <?php if($page=='sss'){echo 'active';}?>" href="sss">S.S.S</a></li> <li class="nav-item"><a class="nav-link <?php if($page=='iletisim'){echo 'active';}?>" href="bize-ulasin">Bize Ulaşın</a></li>Çok basit ama kullanıcı için güzel bir fonksiyon







