RSS
 

Posts Tagged ‘vt’

PHP 5 – Oracle Database Connection

11 Nov

Merhaba,

 Oracle Database’ne PHP ile bağlantı sağlamak için gereken kodları aşağıda paylaşıyorum.

<?php

#Developer: Hakan DAMAR

  $Baglanti = oci_connect('Hakan', '2hkn8', 'OracleDB');

 

/* oci_connect(); fonksiyonu

 * resource oci_connect ( string $username , string $password [, string $db [, string $charset [, int $session_mode ]]] )

 * Biz minimum bağlantı için gerekli olan 3 parametreyi verdik.

 * MySQL'deki gibi oci_pconnect(); 'te kullanabilirdik. Bağlatı türü MySQL ile aynı işleve sahiptir.

 */

  if (!$Baglanti) {

    $Hata = oci_error();

    print htmlentities($Hata['message']);

    exit;

  }

 

  $Sorgu = 'SELECT * FROM view_Firmalar';

/* oci_parse(); fonksiyonu

* resource oci_parse ( resource $connection , string $query )

* Sorguyu hazırlar fakat geçerlilik kontrolü yapmaz. 

* Olan SQL sorgusu geçerlili ise diğer funct. geçirir.

*/

  $Hazirla = oci_parse($Baglanti, $Sorgu);

  if (!$Hazirla) {

    $Hata = oci_error($Baglanti);

<span> </span># String'i dekode ediyoruz. htmlentities ile tabiki :) 

    print htmlentities($Hata['message']);

    exit;

  }

/* oci_execute(); Fonksiyonu

* bool oci_execute ( resource $statement [, int $mode ] )

* Geriye IF..ELSE kontrolü gibi bool döner. Ya True(1) yada False(0) döner.

* Hazirlanmış sorguları çalıştırır.

* OCI_DEFAULT parametresini geçtiğimizde SQL'deki transaction'ı commit ediyor.

* Eğer bağlantı kesilirse ROLLBACK ile işlem bütünlüğü sağlıyor.

*/

  $Calistir = oci_execute($Hazirla, OCI_DEFAULT);

  if (!$Calistir) {

    $Hata = oci_error($Hazirla);

    echo htmlentities($Hata['message']);

    exit;

  }

/*

* array oci_fetch_array ( resource $statement [, int $mode ] )

* While ile dönerek DataGrid oluşturuyoruz. oci_fetch_array aynı mysql_fetch_array gibi

* Dataları bir dizi şeklinde almamızı sağlıyoruz.

* 2. parametrede OCI_RETURN_NULLS diyerel. DB'deki boş alanlar için boş elementler oluşturuyoruz.

*/

  print '&lt;table border="1"&gt;';

  while ($DataRow = oci_fetch_array($Hazirla, OCI_RETURN_NULLS)) {

    print '&lt;tr&gt;';

       foreach ($DataRow as $items) {

         print '&lt;td&gt;'.($items?htmlentities($items):'&amp;nbsp;').'&lt;/td&gt;';

       }

       print '&lt;/tr&gt;';

  }

  print '&lt;/table&gt;';

/*

* oci_close ile database bağlantımızı kapatıyoruz.

* mysql_close() fonksiyonundan bir farkı yok aynı çalışma mantığına sahipler.

*/

  oci_close($Baglanti);

?>

Konuyla ilgili her türlü sorunuz için bana ulaşabilirsiniz.

İyi Çalışmalar,

Hakan DAMAR

 
4 Comments

Posted in PHP

 

For Messenger Application Database

27 Oct

Merhaba,

Bu hafta içinde bir messenger uygulaması için MsSQL ile hazırladığım bir veri tabanın ilk versiyonunu sizlerle paylaşacağım. Son versiyonunu neden paylaşmadığımı sormazsınız heralde :)

USE [N2Soft]
GO
/****** Object:  Table [dbo].[UsersInfo]    Script Date: 10/27/2008 00:10:01 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[UsersInfo](
[UserID] [int] NOT NULL,
[FirstName] [nvarchar](150) NOT NULL,
[LastName] [nvarchar](90) NOT NULL,
[Picture] [varchar](250) NULL,
[Status] [nchar](10) NOT NULL
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
/****** Object:  Table [dbo].[Users]    Script Date: 10/27/2008 00:10:01 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[Users](
[UserID] [int] IDENTITY(1,1) NOT NULL,
[Email] [varchar](150) NOT NULL,
[Password] [varchar](32) NOT NULL,
[Nickname] [nvarchar](30) NOT NULL,
[RegDate] [date] NOT NULL,
CONSTRAINT [PK_Users] PRIMARY KEY CLUSTERED
(
[UserID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
/****** Object:  Table [dbo].[BodyList]    Script Date: 10/27/2008 00:10:01 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[BodyList](
[UserID] [int] NOT NULL,
[SecondUID] [int] NOT NULL,
[AddDate] [date] NOT NULL,
[Permission] [bit] NOT NULL
) ON [PRIMARY]
GO
/****** Object:  View [dbo].[Banned]    Script Date: 10/27/2008 00:10:04 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create view [dbo].[Banned]
as
select UserID,SecondUID,Permission
from dbo.BodyList
where Permission = 0;
GO
/****** Object:  View [dbo].[Accept]    Script Date: 10/27/2008 00:10:04 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create view [dbo].[Accept]
as
select UserID,SecondUID,Permission
from dbo.BodyList
where Permission = 1;
GO
/****** Object:  Default [DF_Users_Nickname]    Script Date: 10/27/2008 00:10:01 ******/
ALTER TABLE [dbo].[Users] ADD  CONSTRAINT [DF_Users_Nickname]  DEFAULT (N’Üşengeç’) FOR [Nickname]
GO
/****** Object:  Default [DF_UsersInfo_Status]    Script Date: 10/27/2008 00:10:01 ******/
ALTER TABLE [dbo].[UsersInfo] ADD  CONSTRAINT [DF_UsersInfo_Status]  DEFAULT (N’Offline’) FOR [Status]
GO

Table mantığı ile ilgili sanırım bir çıkmazasa düşmezsiniz. Zaten yapı basit. SP veya ileri seviye farklı bir transaction mekanizması bu versiyonunda olmadığından alıp istediğiniz gibi kullanabilirsiniz. Msn messenger veya Yahoo Messenger’da bu mantıkla tablolama yapmaktadır.

Yinede takıldığınız bir yer olursa biliyorsunuz bana nasıl ulaşacağınızı.

Saygılar,

Hakan DAMAR

 

Veri Tabanı Programlama [T-SQL]

21 Aug

Merhaba Sevgili Okurlar,

Bu eğitim kuşanda sizlere veri tabanı programlama,T-SQL,MsSQL ve MySQL’i göstereceğim. Hepsinin temeli T-SQL’den geçtiğinden sizlere T-SQL’i önce anlatacağım. Daha sonra zaten zorlanmadan MsSQL’i, hello world gibide MySQL’i öğreneceksiniz.

İlk olarak öğreneceğiniz şey hakkında açıklama yapayım.

Veri Tabanı Nedir? Neden Gerek Duyulur?

Aslına bakarsanız biraz ileri seviye olan arkadaşlar anlayacaktır bu sözümü, “Neden farklı programlama dillerine gerek var :D daha mantıklı kalıyor bu söz karşısında”. Çünkü; şuan programcı diye piyasada çalışan %95 kişi’nin yaptığı aslında veri tabanı programlamaktır. Veri tabanı olmayan kaç tane uygulama kullandınız şimdiye kadar? Aslında hepimizin yaptığı iş aynıdır. Veri Tabanı Programlamak. Veri tabanı dediğimiz şeyi en basitten baktığımızda bilgisayarlarımızda kullandığımız text dosyalarıdır. Evet, yanlış okumadınız bildiğimiz yazı dosyaları. MsnList.txt gibi mesela :)

Tabi bu text dosyaları verileri farklı veri türlerinde tutup saklamak,toplu sorgulara yanıt verebilmek ve bazı kriterlere göre bize işlem bütünlüğü sağlamak gibi özellikleri yoktur. Normal klavyeden yazar gibi yazar ve satır, satır bizim gibi okur. Olduda bir hata oldu ve 1 satır yukarıya kaydı 1 satır. Bütün işlemleriniz artık yanlış çalışacaktır. Bu bir de üyelik sistemi ise tüm login’ler artık failed! :) Bu ve şimdi 1-2 sayfa sürebilecek daha bir çok sebebten dolayı Veri Tabanı Yönetim Sistemleri çıkmıştır ortaya. Bunların en gelişmişlerinin başında MsSQL , ORACLE , MySQL ve PostgreSQL gelmektedir. Bunların işlerimizi kolaylaştıracak o kadar çok yönü vardırki şimdi satır arasında sayamayacağım kadar çok. Her biri için yazılmış cilt,cilt kitaplar olduğunuda düşünürsek bunların açıklamasını ileriye saklamak mantıklı olacaktır. İleride hangi projede hangi veri tabanını seçeceğimizide göreceğiz. Gerçi %80 işlerimizde MsSQL bize yetecektir ama yinede alternatiflerinin ağır bastığı noktalarada değineceğiz.

Şimdi son olarak veri tabanı için şunu diyebiliriz. Ona gönderdiğimiz verilerimizi bizim için süresiz saklayan ve istediğimizde bize gösteren her türlü  yapıya veri tabanı denmektedir. Buna RAM dahil değildir. Çünkü onun süresi restart atılana kadar veya RAM boşaltılmak zorunda kaldığı zaman kadardır. Böyle olduğundan tanımımızdaki süresiz kelimesine uymamaktadır. Bazı veri tabanı yönetim sistemlerininde MEMORY seçeneği vardır ve çokta hızlı çalışmaktadırlar fakat kritik noktalarda asla tercih edilmemelidir. Ama ara işlem logları v.s. gibi bazı yerlerde işimize yarayan tablo yapılarıdır. Hepsini ileride göreceğiz.

Bu açıklamaların üzerine “Neden gerek duyulur?” sorusu sanırım tek cümle ile geçilebilir. Verilerimizi düzenli bir şekilde uzun süre saklamak ve hızlı erişebilemiz gerektiğinden veri tabanlarını kullanarak verilerimizi depolarız. Bu yüzdende Veri Tabanlarına yani Database’lere ihtiyacımız vardır.

Veri tabanı sistemlerine girmeden T-SQL’i görerek işlemlerimizi nasıl yaptığımızı öğrenmeliyiz. T-SQL’e bir sonraki derste giriş yaparak ardından  belirttiğim konuları anlatacağım.

Saygılar,

Hakan DAMAR

 

MySQL İle Basit Bir Veri Tabanı Oluşturma

14 Aug

Merhaba Sevgili Okurlar,

MySQL’e yeni başlayan arkadaşlardan gelen istek üzerine bir adet basit MySQL Veri Tabanı Hazırlıyorum.

create table e_uzman(

UzmanID int(5) not null auto_increment,

UzmanAdi varchar(45) not null,

UzmanSAdi varchar(50),

UzmanPara decimal(10,2),

Primary Key(UzmanID)

);

Yukarıdaki veri tabanında bir kişinin adi,soyadi,hesabındaki para’yı tutabilirsiniz. Sorgular şu şekilde olacaktır.

SELECT * FROM e_uzman

Eğer Şartlı sorgulama yapacaksanız:

SELECT * FROM e_uzman WHERE UzmanID > 5

şeklinde olacaktır.

İleride T-SQL derslerinde bunların hepsine ayrıntılı gireceğimizden şimdilik sadece istediğiniz olsun diye yazdım. Ayrıntılı olarak gireceğim. Veri tabanı çok önemli bir konudur. Hatta programladan bile bazı noktalarda önemlidir. Neyse şimdilik girmiyorum. İleride değineceğiz.

Saygılar,

Hakan DAMAR

 
No Comments

Posted in MySQL