Laboratuar Notları #5 - the CyberSoft Bilişim Teknolojileri Home Page
Transkript
Laboratuar Notları #5 - the CyberSoft Bilişim Teknolojileri Home Page
The European Union’s “Making the Labour Market more Inclusive III” programme For “North Cyprus” Upgrading Internet Technology skills of Information and Communication Technologies (ICT) Professionals Module 3: Cloud Computing Modül 3: Bulut Bilişim Laboratuar Notları #5 A project implemented by CyberSoft Bilişim Teknolojileri Ltd. This project is funded by European Union. The contents of this publication are the sole responsibility of Cybersoft Bilişim Teknolojileri Ltd. and can in no way be taken to reflect the views of the European Union. İçerik Bölüm 5: PHP’de MySQL Bağlantısı Kurma ve Veritabanı İşlemleri 1. Giriş…….………........……………………………………………………….......................................................2 2. MySQL Bağlantısı için Nelere İhtiyaç Var?…………....………………………………………..........................2 3. PHPMyAdmin Kullanarak Veritabanı Oluşturmak ve Yönetmek….............................…………………………2 4. PHP ile Veritabanı İşlemleri ……………………………………………………....................…………………4 1 1) Giriş Bu lab dersinde PHP kullanarak nasıl MySQL database bağlantısı kurabileceğimizi ve PHP formlarından aldığımız bilgileri nasıl database’imize saklayabileceğimizi göreceğiz. Buna ek olarak PHP ve MySQL’in birlikte kullanımını gösteren bir örnek işleyeceğiz. Bu örnek aslında PHP formundam girilen isimleri, adres bilgilerini, email ve telefon numaralarını saklayabilen web tabanlı bir iletişim programıdır. 2) MySQL bağlantısı için nelere ihtiyacımız var? PHP script’lerinize MYSQL database bağlantısı ekleyebilmek için iki şeye ihtiyacınız vardır. 1. Web sunucusu – biz Xampp’ın bize ücretsiz olarak sağladığı Apache sunucusunu kullanacağız. 2. MySQL – yine Xampp kurulduğu zaman MySQL de içerisinde kurulmuş olarak geliyor. Diğer database yazılımlarını (SQL, Oracle etc.) da kullanabilirsiniz ama bu lab dersinde biz sadece PHP/MySQL bağlantısını işleyeceğiz. Bunun için öncelikle Xampp’ı açıp MysQL ve Apache sunucusunu çalıştırınız. 3) PHPMyAdmin Kullanarak Varitabanı yaratmak ve yönetmek PHP komutlarını kullanarak da database yönetim işlemlerini yapabilirsiniz. Ancak benim tavsiyem PHPMyAdmin bir kopyasını sunucunuzun üzerine kurmanızdır ki aslında Xampp ile birlikte otomatik olrak kurmuş oldunuz.PHPMyAdmin size yeni database ekleyip, silmek, değiştirmek, backup almak ve görebilmek için mükemmel bir arayüz sağlar. Öncelikle içerisinden bilgi okuyup, yazabileceğiniz database’inizi yaratmanız gerekmektedir. Biz bu çalışmada aşağıdaki İletişim veritabanını kullanacağız: Name id Type INT Length 6 first VARCHAR 15 last VARCHAR 15 tel VARCHAR 20 mobile VARCHAR 20 fax VARCHAR 20 email VARCHAR 30 web VARCHAR 30 Telefon/fax numaralarının sayılardan oluşmasına rağmen neden INT değil VARCHAR olarak tanımlanmış olduğunu merak edebilirsiniz. Çünkü VARCHAR olarak tanımladığımız zaman içerisinde kısa çizgi veya boşluk kullanabiliriz. (1800-COMPANY) Diğer bir önemli nokta ise id PRIMARY, INDEX, UNIQUE ve auto_increment olarak tanımlamalıyız. Auto_increment opsiyonunu PHPMyAdmin Extra altında bulabilirsiniz.). Auto increment ayarlanmasının sebebi her yeni record eklendiğinde ona sıradaki sayıyı otomatik olarak verebilmesini sağlamaktır. 2 Yukarıdaki contacts tablosunu yaratmanın iki yolu vardır : 1. PHPMyAdmin’i kullanarak 2. PHP kodlarını kullanarak PHPMyAdmin kullanarak tablo yaratmak çok kolaydır. Bunun için öncelikle PHPmyadmin açmanız gerekmektedir. Apache and MySQL çalıştırdıktan sonra, web sayfasına http://localhost/phpmyadmin/ yazınız. Eğer başarılı olduysa, aşağıdaki gibi phpMyAdmin başlangıç sayfası ekranınıza gelecektir. Burada yeni database yaratmak için sadece ismini veriyorsunuz. Mesela biz bu örnekte People verdik. 1. Daha sonra yeni bir tablo yaratmanız gerekmektedir. Tablo adına contacts, number of field kısmına ise 8 giriniz ve Go butonuna basınız. 3. Sırada field isimlerini yaratmak vardır. Bunun için aşağıdaki gibi field isimlerini ve uzunluklarını tanımlayınız. 3 4. id field’ini auto-increment olarak ayarlamak için id field alanındaki kalem ikonuna basınız ve ve autoincrement kutusunu tikleyiniz ve save butonuna basınız. 4) PHP ile Veritabanı İşlemleri 1. Simdiye kadar PHPMyadmin kullanarak veritabanı ve tablo yaratma kısmını hallettik. Şimdi PHP koduna dönüp MySQL’e bağlantıyı nasıl yapacağımıza ve yarattığımız tabloya nasıl bilgi ekleyebileceğimize bakalım.. Öncelikle localhost’daki MySQL’e bağlanmanız gerekmektedir. MySQL bağlantısını başlatmak için aşağıdaki komut kullanılmaktadır: mysql_connect(localhost,$username,$password); Bu komut PHP’ye This line tells PHP to connect to the at 'localhost'daki MySQL veritabanı sunucusuna $username and $password kullanarak bağlanmasını söylemektedir. 2. Mysql’e bağlandıktan sonra MySQL’de yarattığımız people veritabanına bağlanmanız gerekmektedir. Bunun için: @mysql_select_db($database) or die( "Unable to select database"); 4 komutu kullanılmaktadır. Bu komut PHP’ye $database değişkeni içindeki veritabanına bağlanmasını söyler.Eğer bağlanamazsa da Unable to select database hatasını verir. 3. Simdi mysql’e bağlandık ve yarattığımız people veritabanını seçtik. Şimdi veritabanına bilgi ekleme zamanı...İlk bilgimizi şu şekilde giriniz: First: John Last: Smith Phone: 01234 567890 Mobile: 00112 334455 Fax: 01234 567891 Email: johnsmith@gowansnet.com Web: http://www.gowansnet.com Bu bilgileri tek bir komutla girebilirsiniz: $query = "INSERT INTO contacts VALUES ('','John','Smith','01234 567890','00112 334455','01234 567891','johnsmith@gowansnet.com','http://www.gowansnet.com')"; Bu komut ilk bakışta karışık gelebilir ama anlamak için lütfen dikkatlice inceleyiniz. Parantez içindekiler eklemek istediğimiz bilgileri sırasıyla tırnakların içerisinde içermektedir. Not : Dikkat ettiyseniz id field’ine yani ilk dield’e herhangi birsey eklenmemistir. Çunku bu field index field olarak alısmakta ve aynı iki id numarasının eklenmesini önlemek için ‘Auto Increment' olarak tanımlanmıstır. Sizin herhangi bilgi eklememeniz demek sıradaki numarayı almasını sağlar. Bu demektir ki girdiğimiz bu ilk bilgiye id numarası 1 verilmistir. 4. Şimdi de PHP formlarını kullanarak nasıl bilgi ekleyip, nasıl bu bilgileri ekrana getirebileceğimize bakalım. HTML sayfalarını kullanarak bilgi almak PHP komutlarını kullanarak bilgi eklemeye benzer. Ancak form kullanmak her yeni bilgi için kod modifiye etme zorluğunu ortadan kaldırır ve aynı zamanda kullanıcıların kendi bilgilerini girmesine izin verir. Aşağıda verilen kod gerekli bilgilerin girilmesi için gerekli olan HTML sayfasını yaratır: <form action="insert.php" method="post"> First Name: <input type="text" name="first"><br> Last Name: <input type="text" name="last"><br> Phone: <input type="text" name="phone"><br> Mobile: <input type="text" name="mobile"><br> Fax: <input type="text" name="fax"><br> E-mail: <input type="text" name="email"><br> Web: <input type="text" name="web"><br> <input type="Submit"> </form> 5 Bu sayfanın tabi ki daha güzel formatlanabilir ama bu başlangıç için yeterli olacaktır. <? $username="username"; $password="password"; $database="your_database"; $first=$_POST['first']; $last=$_POST['last']; $phone=$_POST['phone']; $mobile=$_POST['mobile']; $fax=$_POST['fax']; $email=$_POST['email']; $web=$_POST['web']; mysql_connect(localhost,$username,$password); @mysql_select_db($database) or die( "Unable to select database"); $query = "INSERT INTO contacts VALUES ('','$first','$last','$phone','$mobile','$fax','$email','$web')"; mysql_query($query); mysql_close(); ?> Bu kod parcasını açtığınız PHP file’a yapıştırınız ve insert.php olarak kaydediniz. 5. Şimdi de aldığımız bilgileri ekrana yazdırma zamanı... Bunun için gerekli olan ilk komutumuz SELECT * FROM contacts Bu komut contacts tablosundaki bütün bilgileri seçmemize yarayan basit MySQL komutudur. Dönen sonucun bir değişkene atanması gerekmektedir. $query="SELECT * FROM contacts"; $result=mysql_query($query); Şimdi veritabanınızdaki bütün bilgiler $result arrayinin içine konmustur. Sonucu ekrana yazdırabilmek için her bilgiyi ayrı değişkene atamak gereklidir. Bunun için iki aşama vardır : Öncelikle veritabanınızda kac satır olduğunu bilmeniz gereklidir.Bunun için aşağıdaki komutu kullanacağız: $num=mysql_numrows($result); Daha sonra while loop kullanarak ekrana yazdıracağız. $i=0; while ($i < $num) { $first=mysql_result($result,$i,"first"); 6 $last=mysql_result($result,$i,"last"); $phone=mysql_result($result,$i,"phone"); $mobile=mysql_result($result,$i,"mobile"); $fax=mysql_result($result,$i,"fax"); $email=mysql_result($result,$i,"email"); $web=mysql_result($result,$i,"web"); $i++; } 6. Şimdi bütün koda toplu halde bakalım: <? $username="username"; $password="password"; $database="your_database"; mysql_connect(localhost,$username,$password); @mysql_select_db($database) or die( "Unable to select database"); $query="SELECT * FROM contacts"; $result=mysql_query($query); $num=mysql_numrows($result); mysql_close(); echo "<b><center>Database Output</center></b><br><br>"; $i=0; while ($i < $num) { $first=mysql_result($result,$i,"first"); $last=mysql_result($result,$i,"last"); $phone=mysql_result($result,$i,"phone"); $mobile=mysql_result($result,$i,"mobile"); $fax=mysql_result($result,$i,"fax"); $email=mysql_result($result,$i,"email"); $web=mysql_result($result,$i,"web"); echo "<b>$first $last</b><br>Phone: $phone<br>Mobile: $mobile<br>Fax: $fax<br>E-mail: $email<br>Web: $web<br><hr><br>"; $i++; } ?> 7. Şimdiye kadar nasıl veritabanı ve tablo yaratbileceğimizi, veritabanımıza nasıl bilgi ekleyip, ekrana yazdırabileceğimizi gördük. Simdi ise bilgilerimizi ekrana nasıl daha düzgün bir formatta yazdırabileceğimizi göreceğiz. Bu formatlamayı yapma çok da zor birsey değil aslında...Tek yapmanız gereken HTML komutlarını kullanarak tablo içerisinde bilgilerimizi yazdırmak... 7 <? $i=0; while ($i < $num) { $first=mysql_result($result,$i,"first"); $last=mysql_result($result,$i,"last"); $phone=mysql_result($result,$i,"phone"); $mobile=mysql_result($result,$i,"mobile"); $fax=mysql_result($result,$i,"fax"); $email=mysql_result($result,$i,"email"); $web=mysql_result($result,$i,"web"); ?> <tr> <td><font face="Arial, Helvetica, sans-serif"><? echo $first." ".$last; ?></font></td> <td><font face="Arial, Helvetica, sans-serif"><? echo $phone; ?></font></td> <td><font face="Arial, Helvetica, sans-serif"><? echo $mobile; ?></font></td> <td><font face="Arial, Helvetica, sans-serif"><? echo $fax; ?></font></td> <td><font face="Arial, Helvetica, sans-serif"><a href="mailto:<? echo $email; ?>">E-mail</a></font></td> <td><font face="Arial, Helvetica, sans-serif"><a href="<? echo $web; ?>">Website</a></font></td> </tr> <? $i++; } Not : Koddaki <a href="mailto:<? echo $email; ?>">E-mail</a> satırı PHP ve MySQL kullanarak sayfanızı nasıl dinamik yapabileceğinize ğüzel bir örnektir. 8. Şimdi de veritabanındaki bütün bilgileri göstermek yerine istediğimiz kriterdeki recordları nasıl seçebileceğimize bakalım: Mesela ilk ismi 'John' olan kişileri ekrana yazdırmak için şu sorgulamayı yapmalıyız: SELECT * FROM contacts WHERE first='john' 9. Simdiye kadar veritabanımızdaki bilgileri istediğimiz kriterlere göre nasıl seçip ekrana yazabileceğimizi gördük. Ancak yapabileceklerimiz sadece ekrana yazmakla sınırlı değil, bilgilerimizi sıralayabiliriz de. Mesela veritabanındaki herkesi soyadına göre artan sırada A’dan Z’ye nasıl sıralayabileceğimize bakalım. SELECT * FROM contacts ORDER BY last ASC Z’den A’ya sıralamak için de DESC kullanabiliriz. 8