PHP İle Veritabanındaki Bilgileri Tabloya Yazdırma

Merhaba Arkadaşlar,

Bu makalede sizlere veritabanımızda bulunan tablolardan herhangi birinin verilerinin HTML sayfa içerisindeki tabloya nasıl çekilebileceğini yazacağım. Tabii ki bir bağlantı sayfası oluşturmadan yani kısacası veritabanı na bağlantı yapmadan bu işlem gerçekleştirilemeyeceği için ilk olarak veritabanımıza bağlanacağız ve daha sonra istediğimiz tablonun verilerini tablomuza aktaracağız. Yapacağımız işlemleri Localhost üzerinden gerçekleştireceğiz.

Mantığımızı basit anlamda kurduğumuzda bugün yapacağımız uygulama ile ;

  • İlk olarak veritabanı ve içerisine bir adet üyeler tablosu oluşturacağız
  • Bir kayıt sayfası oluşturarak üyeler tablosu içerisine veri girişi yapacağız
  • Kayıt formunun hemen altına oluşturacağımız tablo içerisine tüm üyelerimizin verilerini çekeceğiz

İlk işimiz için başlıyoruz. Localhot içerisine bağlanarak bir veritabanı oluşturuyoruz. ” http://localhost/phpmyadmin/ ” içerisine giriş yaptıktan sonra ” Veritabanları ” menüsünden yeni bir veritabanı oluşturuyoruz. Veritabanı ismimiz ” bilgisayaci ” ve karşılaştırma türü ” utf8_turkish_ci ” olsun. Daha sonra sol menüde çıkacak olan veritabanı ismimize tıklıyoruz ve içerisinde yeni bir tablo oluşturuyoruz. Tablo ismimiz ” uyeler ” ve sütun sayısı 3 olsun.

Açılan sayfada ilk sütun için ” uyeid ” ismini belirliyoruz. Türü ” Integer ” , Indeks değeri ” Primary ” ve AUTO_INCREMENT değeri seçili olacaktır. ikinci sütun için ” uyead ” ismini belirliyoruz ve türünü ” Varchar ” belirleyip uzunluk değerini ” 50 ” veriyoruz. Son sütunumuz için ise ” uyesifre ” ismini belirliyoruz ve türünü ” Integer ” olarak seçiyoruz. Daha sonra kaydet butonu ile buradaki işlemimizi tamamlıyoruz.

Maddelerimiz arasında ikinci sırayı alan bir kayıt sayfası oluşturma işlemi için ise bir sayfa oluşturuyoruz ve ismini ” index.html ” olarak kaydediyoruz. İçerisine klasik HTML kodlarını ve bir form içerisinde üye adı ve şifresini isteyeceğiz. HTML kodlarımız şu şekilde olacaktır.


<html>
    <head>
        <title>BilgiSayaci.Org - PHP İle Veritabanındaki Bilgileri Tabloya Yazdırma</title>
    </head>
    <body>
        <form action="kayit.php" method="POST">
            Kullanıcı Adı : <input type="text" name="kadi" /> <br />
            Şifre : <input type="password" name="sifre" /> <br />
            <input type="submit" Value="Kaydet" />
        </form>
    </body>
</html>

İşin php kısmına geçtiğimizde ise ilk olarak ” baglan.php ” sayfamızı oluşturacağız. Bu sayfanın amacı her sayfamızda veritabanımız için ayrı ayrı bağlantı satırları oluşturmak yerine tek bir sayfadan include yöntemi ile çağırmak olacaktır. Böylece daha az kod ile işlemlerimizi gerçekleştirmiş olacağız. yeni bir sayfa oluşturarak baglan.php ismini veriyoruz ve içerisine şu kodları ekliyoruz.


<?php

//Localhots içerisine sırasıyla sunucu adı , kullanıcı adı ve şifre ile bağlanıyoruz. Bunlar varsayılan değerlerdir. Siz değiştirdiyseniz kendinize göre düzenlemeniz gerekmektedir...
$connect = mysql_connect("localhost", "root", "");

//Bağlantı yapıldıktan sonra localhost içerisinde seçilecek veritabanı belirtiliyor..
mysql_select_db("bilgisayaci");

// Türkçe karakter sorunlarına karşı çözüm satırları..
mysql_query("SET NAMES 'latin5'");
mysql_query("SET CHARACTER SET latin5");
mysql_query("SET COLLATION_CONNECTION = 'latin5_turkish_ci'");

?>

Şimdi formun POST edildiği kayit.php sayfasını oluşturuyoruz ve bağlantı içerikli sayfamızı include ettikten sonra kodlarımızı yazarak veritabanımıza bu bilgileri kaydediyoruz.


<?php

//Bağlantı sayfamızı include ediyoruz.
include("baglan.php");

//HTML sayfamızdaki formdan verilerimizi çekiyoruz.
$uyead = $_POST["kadi"];
$uyesifre = $_POST["sifre"];

//Bir mysql sorgusu ile uyeler tablosuna verileri eklettiriyoruz.
$add = mysql_query("INSERT INTO uyeler(uyead,uyesifre) VALUES('$uyead','$uyesifre')");

//IF döngüsü ile ekleme işleminin gerçekleşip gerçekleşmediğini kontrol ediyoruz.
if ($add)
{
    echo "Ekleme İşlemi Başarılı Bir Şekilde Gerçekleştirildi";
}
else
{
    echo "Hata";
}

?>

Veritabanımıza verilerimizi eklettirdiğimize göre artık makalemizin ana konusu olan konuya yani verileri tabloya aktarma işlemine geçebiliriz. Üye kayıt formumuzun hemen altına bir tablo ekleyerek buraya çekebiliriz ancak bunun yerine ” tablo.php ” isminde bir sayfa oluşturuyoruz ve karışık bir görüntü çıkmaması için verilerimizi buraya çektiriyoruz. tablomuzun ilk satırına ” Üye Adı ” ve ” Üye Parolası ” isimli iki değeri yazacağız ve bir alt satırından itibaren döngü ile tüm verileri çektireceğiz. Satır satır açıklayarak tablo.php yi şu şekilde kodlayabiliriz.


<?php 
//Bağlantı sayfamızı include yöntemi ile sayfamıza çekiyoruz.
include ("baglan.php"); 
?>

//Tablomuzu açıyoruz.
<table>
    <tr>
        <td>Üye Adı</td>
        <td>Üye Parolası</td>
    </tr>
    <?php 
                
                //Bir mySQL sorgusu ile tüm üyeler tablosunu bir değişkene atıyoruz.
                $verileriCek = mysql_query("select * from uyeler");
              
                //Bu değişken içerisine çekilen tabloyu bir döngü ile b isimli dizi içerisine çekiyoruz.
                while ($b=mysql_fetch_array($verileriCek)){
                    
                    //Dizi içerisine giriyoruz ve Tablo içerisinden çekilecek olan tüm sütunları tek tek değişken ierisine atıyoruz.
                    $uyead = $b['uyead'];
                    $uyesifre = $b['uyesifre'];
                    
                    //Tablonun ikinci satırına denk gelen bu alanda gerekli yerlere bu değişkenleri giriyoruz. 
                    echo "<tr>
                    <td>$uyead</td>
                    <td>$uyesifre</td>
                </tr>";
                    
                }
                
   ?>
                
</table>

Not : Bu ders içeriğinde kullanılan dosyaları İndir Sayfası 29 No ‘lu Maddeden İndirebilirsiniz..

Reklam

Tüm Yorumlar

31 responses to “PHP İle Veritabanındaki Bilgileri Tabloya Yazdırma”

  1. oktay says:

    sağoalsın hocam çok faydalı oldu. günlerdir bu kodu arıyordum. Tablo kenarlıklarını gösterecek şekilde nasıl yazdırabiliriz, yardımcı olursanız memnun olurum

    • admin says:

      @oktay,
      direkt olarak table içerisinden border değeri vererek veya CSS ile direkt olarak tabloyu , satırları , sütunları seçerek bu işlemi yapabilirsin. Table içerisinden vermek için border=”1″değerini ekle , CSS ile vermek için table{border:1px solid #000} şeklinde ayarlamalar verebilirsin.

  2. oktay says:

    Hocam Merhaba

    Veritabanına veri kaydetme ve tabloya yazdırma olayını halelttim. Herhangi bir problem yok. Ancak verileri textbox a yazdırmak istediğimde türkçe karakterler ? olarak çıkıyor yani tanınmıyor. Bu sorun sadece textboxa yazdırırken çıkıyor. Karakter kümesi: Latin5_turkish_ci olarak seçili, UTF-8 ve window-1254, iso8859 hepsini denedim. Yardımcı olabilirseniz memnun olurum

    İyi Günler

    • admin says:

      @oktay,
      Bu işlemi düzeltebilmek için karakter setini veri tabanı tablolarında Latin5_turkish_ci olarak belirlediysen veri tabanı na bağlantı yaptığın sayfa kodları arasına benim de makale de belirttiğim şekilde mysql_query ‘ler eklemen gerekmektedir. Paylaştığım dosyaları indirip incelersen bir sorun olmadığını göreceksin.

      İyi Çalışmalar.

  3. Bedriye says:

    Sec
    Name
    Soyad

    <?php
    $baglanti = @mysql_connect('localhost', 'root', '');
    $veritabani = @mysql_select_db('deneme');
    if($baglanti && $veritabani) ;
    $sorgu= mysql_query("Select Name, Soyad from liste where Cinsiyet='K'") or die ("calistirilamadi");
    while($row = mysql_fetch_array($sorgu))
    {
    $e="”;
    {
    {
    $c = ‘$e’;
    $ad = $row[‘Name’];
    $soyadı = $row[‘Soyad’];

    echo ‘
    ‘.$e.’
    ‘.$ad.’
    ‘.$soyadı.’

    ‘;
    }
    }
    }
    ?>

    <?php
    if(isset($_POST['user'])) {
    echo 'Sectiginiz kisiler: ‘;

    foreach($user as $users) {
    echo ‘ – ‘ . $users . ‘ ‘;
    }
    } else {
    echo ‘Hic kisi secmediniz.’;
    }
    ?>

    sorgum çalışmıyor sorun ne olabilir acaba?

    • admin says:

      @Bedriye,

      Sorgunun sana geri gönderdiği hata mesajını araştırman gerekmektedir. Ama şöyle kısaca bir baktığımızda örneğin ” if($baglanti && $veritabani) ; ” satırında ” ; ” yerine bir ” {} ” içerisinde döngüyü çalıştırman gerekir. İlk olarak bunun gibi basit hatalara bakmanı ve daha sonra yine çözülmez ise hata mesajını araştırmanı öneriyorum.

  4. MAHMUT says:

    HOCAM MERHABA sorum basit olcak belki ama kısa bir süredir php ile uğraşıyorum..sorumm şu.php ile veritabanından alınan verilerin html tablosuna aktarırken veritabanındaki kayıt sayısı kadar veya çağrılan veri kadar
    html tablo satırı nasıl artırılır.

    • admin says:

      @MAHMUT,

      Zaten bu söylediğin şey konu içerisinde ki anatımımda mevcuttur. Dikkat edersen yaptığım anlatımda bir dizi oluşturuyoruz ve bu dizi içerisindeki veriler bitene kadar yeni tablo satırı açmış oluyoruz. He eğer sen tümünü değil de örneğin 100 verinin 50′ sini çağırmak istiyorsan da yine bir dizi oluşturup bu dizinin en üst sayısını 49 olarak belirleyerek işlem yapmalısın.

  5. MAHMUT says:

    hocam index.php ana sayfasında pek çok link var.ben bu linklerde farklı sorgulama formları varyönlendiğim her linkte sorgulamayı yaptıktan sonra sonucu tekrar index.php ekranında göstermek istiyorum..bunu az çok biliyorum..ancak sorum şu her link için ayrı ayrı .ajax istediği oluşturmkamı gerekiyor…yoksa bunun başka yolu avrmı .

    • admin says:

      @MAHMUT,

      Bunu her formun action parametresini boş bırakıp formları ve sorguları index.php sayfasında yaparak çözümleyebilirsin. Yani

      yerine
      şeklinde yapıp bu formun çözümlenip bir tablo içerisinde çıktısını verecek kodu da aynı sayfa içerisinde yazabilirsin.
  6. MAHMUT says:

    kafam biraz karıştı ama şimşekler çaktı hocamm..çözücem sanırımm..çokk tşkk ederimm..

  7. ayfer demirci says:

    dinamik tablo yapısını doğru düzgün hiç bir yerde bulamamıştım çok yardımcı oldu çok teşekkürler

  8. emine nur says:

    hocam bütün verileri değil tek satırı istiyorum yalnız olay şu sisteme giriş yapan üyenin verilerini yazdırmak istiyorum ekrana onu nasıl yapcam

    • admin says:

      @emine nur,
      Bunun için yanlış bir konuya bakıyorsun. Senin ” Php ile Session Kullanımı ” başlığı altındaki makalelere bakman gereklidir.

  9. yasin bülbül says:

    hocam sisteme kullanıcı eklerken aynı kullanıcı adının olmasını istemiyorum bunun için ne yapmalıyım

    • admin says:

      @yasin bülbül,

      Bunun için ekleme kısmına bir döngü daha eklemen gerekmektedir. Bu döngü içerisinde de veritabanında ki üyeler tablosundan kullanıcı adı için var olan sütunu seçtirip buradaki isimleri kontrol ettireceksin. Eğer yeni üyenin ismi bu isim ile karşılaşıyorsa bir uyarı mesajı verdirecek, eğer böyle bir isim bulunmuyorsa normalde olduğu şekilde üyeyi veritabanına eklettireceksin.

  10. yasin bülbül says:

    tesekkür ederim hocam sorunu çözdüm

  11. Öğrenci No
    Öğrenci Adı

    <?php

    //Bir mySQL sorgusu ile tüm üyeler tablosunu bir değişkene atıyoruz.
    $verileriCek = mysql_query("select * from shrnot");

    //Bu değişken içerisine çekilen tabloyu bir döngü ile b isimli dizi içerisine çekiyoruz.
    while ($b=mysql_fetch_array($verileriCek)){

    //Dizi içerisine giriyoruz ve Tablo içerisinden çekilecek olan tüm sütunları tek tek değişken ierisine atıyoruz.
    $uyead = $b['ID'];
    $uyesifre = $b['DOSYA'];

    //Tablonun ikinci satırına denk gelen bu alanda gerekli yerlere bu değişkenleri giriyoruz.
    echo "
    $uyead
    $uyesifre
    “;

    }

    ?>

    Merhabalar ben sql tablosundan iki sütunun verilerini html olarak almak istiyorum, ama hata veriyor bunun neden hata verdiği hakkında yardımcı olabilir misiniz?

    • admin says:

      @Ramazan Ciritoğlu,

      Veritabanı bağlantısı için dışarıdan dosya çekilmemiş olarak görüyorum. Tablo için gerekli bağlantı satırı yazılmış fakat veri tabanına bağlantı yapılmamış.

  12. Ebru says:

    Merhaba.. gelen verileri yazdırabiliyorum ancak tablomda sadece ilk çekilen veri oluyor diğer veriler tablonun dışında kalıyor. nasıl yapabilirim yardımcı olur musunuz ?

    • admin says:

      @Ebru,

      Benim anlattığım şekilde yaptığında her veri için bir tablo satırı ve verinin içindeki elementler için de ayrı ayrı sütunlar açılıyor. Tam olarak anlatıldığı şekilde yaptığından emin olup sorun yaşadığın yeri daha ayrıntılı yazabilir misin ?

  13. Ebru says:

    Teşekkür ederim hallettim 🙂

  14. fermayil says:

    teşekürler hocam hemen deniyorum

  15. Semih says:

    Öncelikle paylaşımınız için teşekkürler.Çok yardımcı oldular.Benim takılıp kaldığım sey su: bir tane anket programı yazdım.içinde checkbox ,radiobutonlar ve textarea alanları bulunan.Veritabanında checkbox yada radiobutonundan hangisi seçildiyse başka bir sayfada dolu halde gelmesini sağlamak.Doldurulan anketimi kullanıcı adı ve şifresiyle başka bir yerde yazıp doldurulmus hallerini görmek istiyorum.Bana bir yol gösterirseniz çok sevinirm.

  16. aziz says:

    Herşeyden önce emeklerinize sağlık.Ben bir admin panelinden menü ve içerik kısımlarını menü eklemek silmek düzeltmek, içerik eklemek, düzeltmek ve silmek son olarakta admin paneline içerik eklemeyi kolaylaştırmak için fck editör eklemeği hangi konu başlılarıyla googledan arayabilirim.son olarakta veritabanınmda bulunan verileri sayfamda istediğim tabloda nasıl göstermeyi sağlaya bilirim.meselala yönetim panelinden yönetilecek olan içerik kısmını içerik tablosunda nasıl gösterebilirim.çok şey istediğim farkındayım.yardımcı olabilirseniz sevinirim.herşey için teşekkür ederim,

    • admin says:

      @aziz,

      http://bilgisayaci.org/css-php-insert-delete-update/ ve http://bilgisayaci.org/php-ile-veritabaninda-veri-silme/ gibi makaleleri okuyarak veri ekleme/silme işlemlerini yapabilirsin. Fck editör ile ilgili Google’dan “php ile fck editör kullanımı” şeklinde aratarak kurulum ve kullanım ile ilgili yeterli bilgiye ulaşabilirsin. Son sorduğun soruda zaten şu an yorum yaptığın makalede anlattığım konu ile bire bir aynı oluyor. Yani sen üstte verdiğim linkler ile veritabanına veri ekleme işlemlerini yaptırabiliyorsan daha sonrasında da verilerin çekileceği sayfaya bu makalede yazdığım şekilde verileri çekebilirsin.

      Örneğin birden fazla sayfa varsa(Hakkımda,Referanslar,İletişim) ve tek bir php sayfa içerisinde bunun kontrollerini yapmak istiyorsan en basit kullanım şekliyle linkleri parametreli olarak gönderebilirsin. Örneğin “Sayfa.php” isimli sayfaya dışarıdan link gönderirken “Sayfa.php?ID=1” şeklinde gönderip Hakkımda içeriğini ve “Sayfa.php?ID=2” şeklinde gönderip Referanslar içeriğini görüntüleyebilirsin.

  17. Özcan says:

    Mrb,
    ürünler sayfasında ürünler listeleniyor. kullanıcı bu ürünlerden 2 tanesini seçip ürün kiyaslama sayfasına gönderecek ve burada mümkün ise farklı özellikleri farklı renk tonu ile belirtsin. bunu nasıl sağlamalıyız.
    Tabi kiyaslamayı yanyana gösterecek.
    desteğiniz için şimdiden teşekkürler.

    • admin says:

      @Özcan,

      Böyle bir işlemi sayfaya gelen kullanıcıya vereceğin session ile yapabilirsin. Örneğin urunler.php sayfasında her ürünün altında bulunacak “Karşılaştırma Listesine Ekle” butonu ile session’a ürünün ID değerini gönderirsin. Sayfanın altında bulunan “Ürünleri Karşılaştır” butonu ile de urunkarsilastir.php sayfasına yönlendirip session üzerine parametre olarak gönderilen tüm ürünleri karşılaştırma tablosunda listeletirsin.

      Yanyana listeleme yapma ise senin html yapısında çözümleyebileceğin bir durumdur. Bir tane liste tablosu oluşturarak gelen ürün sayısına göre sütun sayısını arttırmalısın.

  18. bilal kucuk says:

    Hocam merhaba,
    benim şöyle bir sorum var,

    $cek=mysql_query(“SELECT *FROM table”);
    while($se=mysql_fetch_array($cek)){
    $nesne=$se[‘adi’];
    echo”$nesne”;
    }

    bu şekilde isimleri alt alta ne kadar varsa ekrana yazıyor.
    ama ben bu isimlerin hepsini başka bir tabloya aralarında virgül olacak şekilde birleştirip yazamıyorum.Tek tek yazıyorum ama bütün üsümleri tek bir yere yazamıyorum.

    • admin says:

      @bilal kucuk,

      altta yazdığın echo”$nesne”; alanını echo $nesne. “,”; şeklinde düzenleyebilir misin ?

Leave a Reply

Your email address will not be published. Required fields are marked *