Mysql Ders 2 - Veritabanından bilgi almak.

Şu iki soruya cevap veremiyorsanız lütfen önce birinci dersi okuyun: Veritabanı nedir ?

MYSQL ile BİLGİ OKUMAK

Bir önceki derste veritabanının ne olduğunu öğrendik. Bilgi silme komutunu kullandık. şimdi veritabanından basit bir bilgi alalım. ve onu kullanıcıya gösterelim.

Önce yapacağımız işin mantığına bakalım.

mysqlders2

1- Veritabanına Bağlan: Veritabanına neden bağlanıyoruz. çünkü veritabanı ayrı bir programdır. ayrı bir bilgisayarda hatta başka bir ülkede bile olabilir.Başta bu size garip gelebilir ama veritabanı ile Php nin aynı bilgisayarda olması şart değildir. Bu sebeple aynı bilgisayarda olsun veya olmasın hiç farketmez. bağlanma komutu kullanmamız gerekir.

Bağlanmak için mysql_connect isimli komut kullanılır. Connect kelimesi size çok yabancı geliyorsa şunu dinleyin. Nokia Connecting people: nokia insanları birbirine bağlar, iletişim kurar (biraz raklama girdik ama aklıma daha basit örnek gelmedi. buradaki bağlamak iletişim anlamında kullanılıyor. o reklamdaki sloganı hatırladıysanız bunu birdaha unutmazsınız) Bilgi almadan önce Mysql ile Php yi birbirine iletişim kurdurmamız gerekiyor.

Kütüphane örneğini düşünün, bir şekilde iletişim kurup sesimizi iletmemiz gerekiyor.

komut kullanımı:

mysql_connect("adres","isim","şifre");

buradaki adres kelimesi artık sizin için birşey ifade ediyordur. Eğer veritabanıaynı bilgisayarda ise adres olarak "localhost" yazacağız. veritabanı uzak bir bilgisayarda ise onun adresini yazacağız.

Peki şunu soruyor musunz: isim ve şifre ne işe yarıyor. neden şifre gereksin ki ? 

Bende size şunu sorayım: Şifre olmazsa herkes bizim kütüphanemize ulaşıp bilgi silebilir mi ?

Cevap : Evet, Eğer veritabanı şifreli olmasaydı herkes girip bilgilerimizi silebilirdi.

2- Veritabanı seçim işlemi: ikinci aşama olarak kullanacağımız kütüphanedeki rafları seçmemiz gerekiyor. Bu rafları istediğimiz kadar çoğaltabiliyoruz. yani kütüphanemizde sadece bir raf yok. bu durumda kütüphaneciye hangi raftan bilgi istediğimizi söylememiz gerekiyor.

komut kullanımı:

mysql_select_db("raf adı")

3- Bilgi isteyelim: bu aşamaya kadar bir yanlışlık yapmadıysak veritabanından bilgi isteyebiliriz.  tek yapmamız gereken. Query dilinde doğru cümleyi kurmak.


$bilgi = mysql_query("SELECT * FROM kitap ");   

Burada bilgi istemek için kullandığımız komut aslında mysql_query( ) kısmı. kütüphaneciye söyleyeceğimiz cümleyi ise bu iki parantez arasına yazıyoruz.

Query:     "SELECT * FROM kitap"

Türkçesi: "Kitaptaki herşeyi ver"


Bu durumda kitapta birşeyler yazıyorsa görevli eleman hepsini fotokopi çekip elimize verecektir. Aldığımız $bilgi aşağıdaki gibi olacaktır.

mysqlderskayit

Tam bu nokta olayın kilit noktasıdır. dikkat edin. Kütüphaneci bize tek tek isimleri falan vermiyor.  Elimize uzun bir listeyi toplu halde veriyor.Bu aşamada Listeyi dilerseniz tek tek okursunuz dilerseniz başka biryere kaydedersiniz. Şimdi listedekileri tek tek okuyalım.

Listeyi okumak için gerçek hayatta ne yapıyorsak aslında Php ile aynısını yapacağız. En üstten başlarız ve her satıra tek tek bakarız.

4- Gelen bilgiyi parçala : Gelen bilgi büyük bir tablo halinde olduğu için hepsini bir anda okuyamayız. Bilgiyi ancak satır satır okuyabiliriz. bu işlemi yapmak için de mecburen döngü kullanmamız gerekir. çünkü başka şekilde php ile her satıra sıra ile bak dememiz mümkün değil.

komut kullanımı:

mysql_fetch_array( ): Anlamı; Bu komutta parantez içindeki bilginin bir satırını al demektir. bu komutla birlikte While döngüsü kullanıldığında her satıra tek tek bakmış oluruz.

while($satir=mysql_fetch_array($bilgi))
{

     // okuma burda yapılacak

}

Döngü çalıştığında her satıra tek tek bakacak ve tablodaki tüm satırları dolaşacaktır.

okumak için print komutu kullanacağız.

while($satir=mysql_fetch_array($bilgi))
{
    print $satir["AD"];

}

Yukarıdaki komut çalıştığında sadece listedeki isimleri yazar. Eğer yanına kişinin soyadını da yazmak istiyorsanız ne yapacağınızı siz düşünün. onu bulursanız dersin özünü anladınız demektir. Geriye kalan komutları şimdilik ezberlemek zorunda değilsiniz. Acemilikte kopyalayıp kullanabilirsiniz. bir süre sonra bu komutları zaten adınız gibi biliyor olacaksınız.

Hepsinin bir ara toplu görüntüsü:

mysql_connect("adres","kullanıcı adı","sifre");

mysql_select_db("raf ismi");

$bilgi = mysql_query("SELECT * FROM kitap "); 
 
while($satir = mysql_fetch_array($bilgi)
{
    print $satir["AD"];
}


Not: Bu komutları php ile çalıştırıp denemeyin. çünkü sizin bilgisayarınızda raf ismi diye bir kayıt henüz yok. veya şifre diye bir bilgiyi henüz girmedik. burada işin özünü anlamaya çalışın. bir sonraki dersimizde bunun canlı uygulamasını yapacağız.

drekon2010-01-04 20:10:47

DMCA.com
Bookmark and Share
Hit:83345
Puan ver:

Şöyle Olabilir mi?.

arjinMehmet Ali

@merve;

Numaryı madem boş kullanacksın kodlamaya koymaya da gerek yok gibi... Birde aşağıdaki kodları deneyebilirsin...

$ekle=mysql_query("INSERT INTO ziyaretci (numara,adi,soyadi,adres,sehir,email,telefon,mesajiniz) VALUES (Null,'$adi', '$soyadi', '$adres', '$sehir', '$mail','$telefon','$mesaj')");

if (@mysql_query)
{
echo "Bilgiler Eklendi";

}

Gerçekçi ol imkansızı iste...
2010-06-21 15:07:57

:/ =<)

mervemerve nahırcı

1.)  peki bu yayınlanma aşaması nasıl olcak yani ben şimdi itribat.php ve form.htm sayfamı yayınlasam olcakmı easy php de hazırladım veri tabanını dışa aktar yapıp başka bir pc ye aktarıp ordan kontrollerini yapıcaz irtibat sayfamda // mysql_connect('localhost','root','mysql');  // localhost yazan yere web sitemin adını yazıp yayınlayıncamı olcak  bu aşamayı bilmiyorum biraz açıklarmısınızzz....???

2.) birde bu veri tabanını phpmyadminde dışa aktar deyip diğer pc den de içe aktar deyince sql zip dosyasını bu veri tabanındaki tablolar vs.. diğer pc de de görüncekmi yada başka bi işleme gerek varmı ......

2010-06-22 15:03:40

:))

mervemerve nahırcı

çok teşekkürler ya oldu yaptım gerçekten büyük bi yükten kurtardınız beni:)valla allah razı olsun..

php yi seviyorum yha...smiley

2010-06-22 14:44:58

<? PHP ?>

arjinMehmet Ali

1- Veritabanı  bağlantısı doğru olursa sorunsuz olacaktır...

2- Evet aynen sql dosyasını istediğin yerde çalıştırabilrsin...

************

Bİr soru da benden:

$id =@$_GET["id"];
if(isset($id)){
$sor=mysql_query("select * from makaleler order by id desc limit 1");
}else {
$sor=mysql_query("SELECT * FROM makaleler ORDER BY id DESC LIMIT 0,4");
while($yaz=mysql_fetch_array($sor)){
$haberbaslik    = $yaz['baslik'];
$habermakale    = $yaz['makale'];

Burada yapmak istediğim devamını oku linkine tıklandığında aktif id'nin haberini görüntülemek yardımcı olabilirseniz çok sevinirim...

Gerçekçi ol imkansızı iste...
2010-06-22 18:02:01

mervemerve nahırcı

 

1<?php

3 $adi=$_POST['adi'];
4 $soyadi=$_POST['soyadi'];
5 $adres=$_POST['adres'];
6 $sehir=$_POST['sehir'];
$mail=$_POST['mail'];
8 $telefon=$_POST['telefon'];
9 $fax=$_POST['fax'];
10 $mesaj=$_POST['mesaj'];
mysql_connect('localhost','root','xxx');
mysql_select_db('ozencveritabani');
mysql_query("SET NAMES 'latin5'"); 

$ekle=mysql_query("INSERT INTO ziyaretci (numara,adi,soyadi,adres,sehir,email,telefon,fax,mesajiniz) VALUES (Null,'$adi', '$soyadi', '$adres', '$sehir', '$mail','$telefon',$fax,'$mesaj')");

if (@mysql_query)
{
echo "Mesajiniz kaydedildi ..Tesekkürler..";
}else{
echo "Hata var! Lütfen geri dönüp bilgilerinizi kontrol ediniz..";
}
?>

ya bilgiler alınıyo ama irtibat.php yenile dediğimizde bu hata yı veriyor neden

 //hata

Notice: Undefined index: adi in C:\easy php\EasyPHP 3.0\www\irtibat.php on line 3

Notice: Undefined index: soyadi in C:\easy php\EasyPHP 3.0\www\irtibat.php on line 4

Notice: Undefined index: adres in C:\easy php\EasyPHP 3.0\www\irtibat.php on line 5

Notice: Undefined index: sehir in C:\easy php\EasyPHP 3.0\www\irtibat.php on line 6

Notice: Undefined index: mail in C:\easy php\EasyPHP 3.0\www\irtibat.php on line 7

Notice: Undefined index: telefon in C:\easy php\EasyPHP 3.0\www\irtibat.php on line 8

Notice: Undefined index: fax in C:\easy php\EasyPHP 3.0\www\irtibat.php on line 9

Notice: Undefined index: mesaj in C:\easy php\EasyPHP 3.0\www\irtibat.php on line 10
Mesajiniz kaydedildi ..Tesekkürler..

bir diğer sorum...>>

bu form sayfalarım www klasöründe olduğu için diğer sayfalara linkini verdiğimiz zaman (açılır menülere) form sayfam açılmıyo bu benim pc den yayınlamanın yapılmadığından mı kaynaklanıyo yoksa diğer pc de sayfalar yayınlandıktan sonra web sitemizde  form.htm linke tıklanıldığında sayfa açılırmı...:)bilmem anlatabildimmi derdimi...?? 

2010-06-23 10:53:37

biri bana anlatsın ya lütfenn

mervemerve nahırcı

arkadaşlar ya phpmyadminde veri tabanı içe aktar nasıl oluyor açıklayan olursa çok sevincem ya ben içe aktar dedim ve şu hatayı verdi acil açıklayan biri olursa çok ii olcak lütfen...

Hata

SQL sorgusu:

 --
-- Veritabanı: `ozencveritabani`
--
-- --------------------------------------------------------
--
-- Tablo yapısı: `ziyaretci`
--
CREATETABLEIFNOTEXISTS`ziyaretci`(

`numara`int(11)NOTNULLAUTO_INCREMENT,
`adi`varchar(20)NOTNULL,
`soyadi`varchar(20)NOTNULL,
`adres`varchar(40)NOTNULL,
`sehir`varchar(20)NOTNULL,
`email`varchar(100)NOTNULL,
`Telefon`textNOTNULL,
`mesajiniz`textNOTNULL,
PRIMARYKEY(`numara`)

)ENGINE=MYISAMDEFAULTCHARSET=latin5AUTO_INCREMENT=107;

MySQL çıktısı: Belgeler

#1046 - No database selected

2010-06-23 15:36:41

arjinMehmet Ali

"ya bilgiler alınıyo ama irtibat.php yenile dediğimizde bu hata yı veriyor neden"

irtibat sayfasıdna yenile yaptığında alırsın çünkü posttan gelen veriler yok...

bu hatayı gizlemek iliin @ işaretini kullanın aşağıdaki gibi diğer alanlarıda yapın...

3 $adi=@$_POST['adi'];

diğer sorunu pek anlamadım :)

gzip ile deneyin yada manuel oalrak sql sorgusu yapın..

Gerçekçi ol imkansızı iste...
2010-06-28 18:03:43

bırı bana anlatsın ya lütfennnn....

mervemerve nahırcı

tamam çok saolasn yha pekı şu ıçerı aktar ışlemını ypamıyorum ya hata veryo ..... anlatırsan sorum kalmıcaksmiley

2010-06-29 11:37:28

:))

arjinMehmet Ali

seçili veritabanı yok dyor herhalde.. phpmyadmin e bağlandığınızda sql sorgunuzdaki veritabanın var olup olmadğına bakın... Eğer yoksa ozencveritabani adında siz oluşturun... Daha sonra bu veritabanını seçtikten sonra sql sorgusu yapın...


Gerçekçi ol imkansızı iste...
2010-06-29 15:19:22

bu son:)

mervemerve nahırcı

  

ya oldu ama şimdide bu hatayı verdi bu nedemek

Warning: mysql_connect() [function.mysql-connect]: [2002] Bağlanılan uygun olarak belli bir süre içinde yanıt vermediğinde (trying to connect via tcp://localhost:3306) in C:\Program Files\EasyPHP-5.3.2i\www\irtibat.php on line 13

Warning: mysql_connect() [function.mysql-connect]: Bağlanılan uygun olarak belli bir süre içinde yanıt vermediğinden veya kurulan bağlantı bağlanılan ana makine yanıt vermediğinden bir bağlantı kurulamadı. in C:\Program Files\EasyPHP-5.3.2i\www\irtibat.php on line 13

Fatal error: Maximum execution time of 30 seconds exceeded in C:\Program Files\EasyPHP-5.3.2i\www\irtibat.php on line 14

13.  mysql_connect('localhost','xxx','xxx');
14.  mysql_select_db('ozencveritabani');

 

2010-06-30 10:21:32

phpkodlari.com © 2009 Herkes Php öğrenecek
Eglence ve Oyun: Gamikro