Php ile verileri gösterme

PHP- MySQL Kullanarak tablodaki verileri ekranda görüntüleme:

Bunun birçok yöntemi olduğunu belirterek anlatmaya başlayalım:

mysql_fetch_row, mysql_fecth_array, mysql_result  komutlarının kullanımı

<?
@mysql_connect(“localhost”,“root”) OR die (“mysqle bağlanamadım”);
@mysql_select_db(“ders”)or die (“ders veritabanı bulunamadı”);
?>


bildiğiniz gibi biz bu kodları her mysql bağlantımızda kullanıyoruz. Bu satırları bir dosyaya kayıt eder ve oradan okutturursak bir daha bu satırları yazma ihtiyacımız olmaz. Bunun için: yukarıda bulunan satırları BAGLAN.PHP olarak kaydediyoruz.

Şimdide aşağıdaki satırları yazıp GOSTER.PHP olarak kaydedelim….

<? //GOSTER.PHP
include (“baglan.php”);
$sorgu=mysql_query(“select * from notlar”);
$satir=mysql_num_rows($sorgu);
$i=0;
while ($i<$satir)
{
$no=mysql_result($sorgu,$i,“no”);
$ad=mysql_result($sorgu,$i,“ad”);
$ortalama=mysql_result($sorgu,$i,“ortalama”);
echo (“no=$no—ad=$ad—ortalama=$ortalama<p>”);
$i++;
}
?>

  • include (“baglan.php”); komutu ile baglanma isişlemi için gerekli olan kodalrı dosyadan çağırıyoruz.
  • $sorgu=mysql_query(“select * from notlar”); tüm bilgileri göstermesi için mysqle sorgu yolluyoruz ve sonucuda $sorgu değişkenine atıyoruz.
  • $satir=mysql_num_rows($sorgu); dönen sorguda kaç satır bilgi olduğunu $satir değişkenine atıyoruz.
  • While döngüsü ile kaç satır varsa o kadar dongu sağlıyoruz.
  • $no=mysql_result($sorgu,$i,“no”); ile de dönen sorgudaki no alanındaki bilgileri $no değişkenine atıyoruz. Ad ve ortalama içinde aynı şeyleri gerçekleştriyoruz.
  • echo (“no=$no—ad=$ad—ortalama=$ortalama<p>”); burada da sonuçları ekrana basıyoruz. — çizgileri de görüntünün karışmamasını sağlamak için…

bitti… hepsi bu kadar… demek isterdim ama öyle değil L

şimdi bu öğrendiğimizden daha hızlı bir gösterme yöntemi kullanacağız…

aşağıdaki satırları GOSTER2.PHP olarak kaydedin

<? //GOSTER2.PHP
include (“baglan.php”);//mysqle bağlanmaya yarar.
$sorgu=mysql_query(“select * from notlar”);//mysqlden notlar tablosundaki tüm kayıtları alır
while ($satir=mysql_fetch_row($sorgu))
{
echo (“no=$satir[0]— ad=$satir[1]— ortalama=$satir[2]<p>”);
}
?>

bu satırlar aslında çok daha kısa ve çok daha hızlı… Açıklayalım…

while ($satir=mysql_fetch_row($sorgu))
bu satırlar ile ilginç bir şekilde… döngüyü kendi başlatıyor.. birer birer arttırıyor…

echo (“no=$satir[0]— ad=$satir[1]— ortalama=$satir[2]<p>”);

bu satırlarla da ekrana basıyoruz.. no=$satir[0] biraz garip gelmiş olabilir. Onu da açıklayalım. [0] ile tablodaki 0 nolu sütunu yani noyu temsil ediyorur, [1] olan ise adı, [2] olan ise ortalamayı temsil ediyor. Bu erişim şekli hem kod olarak daha kısa hem de daha hızlı… yukarıdaki mysql_fetch_row yerine mysql_fetch_array aynı şekilde kullanılabilir.

Bundan başka yöntemlerde var ancak ben bu yöntemi yeterli görüyorum .

Yukarıda yazdığımız satırlarda selcet * from diyerek tüm sonuçları tablodan çektik… ama iyi yapmadık..! düşününki öss sonuçlarını basıyorsunuz ve ekrana 1.5 milyon sonuç yolladınız… siteniz kesinlikle çalışmayacaktır. Bu sıkıntıdan kurtulmak için sonuçları 10 arlı yada 20 li parçalara bölmemiz lazım. Bunun için de kodlarımı şöyle yazmamız gerekir.

GOSTER3.PHP

<? // goster3.php
include (“baglan.php”); // mysqle bağlanıyoruz.
if (!$k) {$k=0;} // $k boş ise 0 olarak atıyoruz.

$sorgu=mysql_query(“select * from notlar order by ad limit $k,10″); // sonuçların $k dan itibaren 10 kayıt gösterilmesini istiyoruz.

while ($satir=mysql_fetch_row($sorgu))
{
echo (“no=$satir[0]— ad=$satir[1]— ortalama=$satir[2]<p>”); // dosyadaki tüm kayıtları ekrana basıyoruz
}
$k=$k+10; //$k değişkenini 10 arttırıyoruz
echo (“<a href=\”goster3.php?k=$k\”>sonraki 10 kayıt</a>”); // şu anda gösterilen sonuçtan itibaren 10 sonuç daha görüntülüyoruz.
?>

evet şimdi birde tüm sonuçları görmek için tıpkı google yada altavista daki gibi sonuçları onarlı parçalara bölelim…

GOSTER4.PHP

<? // goster4.php
include (“baglan.php”);
if (!$k) {$k=0;}

$sorgu=mysql_query(“select * from notlar order by ad limit $k,10″);
$hepsi=mysql_query(“select * from notlar”); // burada tüm sonuçları çekiyoruz çünkü kaç sonuç olduğunu bilmemiz lazım
while
($satir=mysql_fetch_row($sorgu))
{
echo (“no=$satir[0]— ad=$satir[1]— ortalama=$satir[2]<p>”);
}
$toplam_sayi=mysql_num_rows($hepsi) ;// kaç sonuç olduğunu öğreniyoruz.
echo “toplam <b> $toplam_sayi</b> sonuç var <p>”;
$i=0;
while ($i<$toplam_sayi)
{
$a=$a+10;
echo (“<a href=\”goster4.php?k=$i\”>[$i$a]</a>”); //ekrana 10arlı bölmeler oluşturuyoruz?
$i=$i+10;
}
?>

//// count kullanımı

$toplam    = @mysql_query(“select count(*) from tablo”);
$toplam    = @mysql_result($toplam, 0);

şimide renkli satırlar ile sonuçları ekrana basalım…

GOSTER5.PHP

<? // goster5.php
include (“baglan.php”);
if (!$k) {$k=0;}

$sorgu=mysql_query(“select * from notlar order by ad limit $k,10″);
$hepsi=mysql_query(“select * from notlar”);
echo “<table border=1 >
<tr bgcolor=#6633cc>
<td> No</td> <td> ad</td> <td> ortalama</td>
</tr>”;
while ($satir=mysql_fetch_row($sorgu))
{
if ($b%2){$renk =“#ffffcc”;}
else {$renk=“#ccff99”;}
echo (“<tr bgcolor=’$renk‘>
<td>$satir[0]</td>
<td>$satir[1]</td>
<td>$satir[2]</td>
</tr>”);
$b++;
}
echo “</table>”;
$toplam_sayi=mysql_num_rows($hepsi) ;
echo “toplam <b> $toplam_sayi</b> sonuç var <p>”;
$i=0;
while ($i<$toplam_sayi)
{
$a=$a+10;
echo (“<a href=\”goster5.php?k=$i\”>[$i$a]</a>”);
$i=$i+10;
}
?>

alıntı Dahihost.com

Yazar: Mustafa Şadoğlu

Mustafa sitemizde 102 yazı eklemiş...

Share
  • @Sahin
    get metodu ile almış olduğunuz id yi temizledikten sonra
    $sorgu=”select * from tablo where id=$id”
    şeklinde sorgulayın…
    while ($satir=mysql_fetch_array($sorgu))
    {
    echo ““;
    }
    yapmanız yeterli olacaktır…
    olmazsa yönlendirme için html komutlarından refresh komutunuda kullanabilirsiniz…
    kolay gelsin

  • Sahin

    Merhaba benim bi sorum olcaktı mesela veri tabanında iki değişken var biri id biri link olsun ben form ile id ve linkleri veri tabanına kayıt ediyorum oraya kadar tamam. Ama benim istdiğin sonrası id numarasını adrese şu şekilde yazdırıyorum önerğin http://www.dahiweb.com/index.php?id=1234 bu id numrası ile adrese girildiğinde id numarasına atadığım link çalısın ona yönlendirsin istiyorum böyle bir konuda yardımcı olabilirmisiniz şimdiden teşekkürederim…

  • hasan aykut

    merhaba,

    ben çalışmayı denediğimde Parse error: syntax error, unexpected T_STRING in C:\Inetpub\vhosts\******.com\httpdocs\oku.php on line 3 hatası alıyorum.

    neyden kaynaklanmış olabilir ?

  • @tekken
    bunu yapmak için
    $a=0;
    while döngüsünün içinde
    if ($a%2==0) echo “


    “;
    $a++
    yazabilirsiniz

  • tekken

    kolay gelsin

    while ile verileri yazdırırken sayfalama şeklinde değilde mesela her 2 kayıtta bir hr yazdıralım nasıl yapabilirz acaba ?

    örnek:

    kayıt 1
    kayıt 2

    kayıt 3
    kayıt 4

    kayıt 5 ……

  • @hikmett
    SELECT h.h_id, r.r_yolu, h.h_baslik, h.h_ozet
    FROM haber_tablosu AS h, resimler_tablosu AS r
    WHERE h.h_id = r.h_id AND aktif =’e’ ORDER BY DESC
    aktif =’e’ yerine tablonuza göre r.aktif =’e’ veya h.aktif =’e’ şeklinde yaparsanız sorun kalmayacaktır.
    ancak şu soruyu sormam gerekiyor:
    habere birden fazla resimmi ekliyorsunuzki farklı bir tabloya ihtiyaç duyuyorsunuz?
    eğer tek resimse boşuna farklı bir tablo açmayın.. bu sadece kafanızı karıştıracaktır.
    yaptığım basit bir örnek için bakınız:
    http://www.dahiweb.com/php-haber-script
    biraz daha glişmişi için
    http://www.dahiweb.com/php-haber-scripti-2

  • hikmett

    Merhabalar hocam uzun zamanadır nete giremedim için cvp yazamadım bir çok sorunum var ama öncelikli olan şu şimdi benim haber ve resim tablom farklı habere ait resimi ekrana basamıyorum yani index sayfasında gözükecek olan haberleri listeleyemiyorum resimlerle birlikte şu sorguyu yazdım ama çalışmıyor.
    “SELECT h.h_id, r.r_yolu, h.h_baslik, h.h_ozet
    FROM haber_tablosu AS h, resimler_tablosu AS r
    WHERE h.h_id = r.h_id AND aktif =’e’ ORDER BY DESC yardımlarınız için teşekkürler şimdiden ..

  • @hikmett
    benden hangi konuda yardım istiyorsunuz?

  • hikmett

    merhaba hocam bi haber sitesi yapmaya çalışıyorum bi çok sayfasını yaptım ama index yani haber listele sayfasını normal haber sitelerinde olması gerektiği gibi yapamıyorum ve 3 gün içinde bitirmem gerekio lütfen yardımcı olur musunuz…

  • Pingback: Anonim()

  • @Murat arslan
    bu göndermiş olduğunuz kodlara göre eğer veri tabanında ekleyen alanı varsa çalışması lazım…

  • Murat arslan

    Murat arslan :hocam bir soru da benim olcakziyaretçi detferinde mesajları ufak tefek rütuştanda geçirerek onaylayan bir editör yapmaya çalışıyorum. sizin kursta yapmıştık ama şimdi olmadı.
    deneme satırları bölümü ekrana yazılıyor ama düzenleme yapılamadı uyarısı alıyorum. yardımcı olurmusunuz?

    $id=$_POST[‘id’];
    $ekleyen=$_POST[‘ekleyen’];
    $baslik=$_POST[‘baslik’];
    $email=$_POST[’email’];
    $tarih=$_POST[‘tarih’];
    $metin=$_POST[‘metin’];
    $onay=$_POST[‘onay’];
    //deneme satırları
    echo $id.” klhjkjh “;
    echo $ekleyen;
    $duzenle = mysql_query(“UPDATE ziyaretci SET ekleyen=’$ekleyen’ WHERE id=$id “);
    if ($duzenle)
    {echo “Düzenleme Yapildi”;

    header(“Refresh: 2; url=ziyaretlistele.php”);
    }
    else {
    echo “Düzenleme Yapilamadi.”;
    header(“Refresh: 2; url=ziyaretlistele.php”);
    }

  • Murat arslan

    hocam bir soru da benim olcak
    ziyaretçi detferinde mesajları ufak tefek rütuştanda geçirerek onaylayan bir editör yapmaya çalışıyorum. sizin kursta yapmıştık ama şimdi olmadı.

    deneme satırları bölümü ekrana yazılıyor ama düzenleme yapılamadı uyarısı alıyorum. yardımcı olurmusunuz?

  • @kumsal
    çalışmadığım yerlerden sormadıkça sorun yok 🙂

  • kumsal

    Hocam çok şey denedim fakat aklıma & bu işaret gelmedi. emin olun araştırmadan sormuyorum. ilerleyen günlerde yine sorularım olacak.
    Çok teşekkür ediyorum.

  • @kumsal
    Merhabalar… eğer bilgileri get ile çağırmak istiyorsanız ; gideceğiniz sayfaya size lazım olan tüm bilgileri taşımalısınız. sizin sorduğunuz sorunun cevabı şu şekilde olabilir:
    $tur=$_GET[‘tur’];
    ilang.php?tur=araba&k=10 veya ilang.php?tur=araba&kacinci_satir_bilgisi_gorunecek=20 gibi eğer sayfanızda verdiğiniz linklere “tur=araba” bilgisini de eklerseniz bir önceki sayfada lazım olan “tur” bilgisini de gideceğiniz sayfaya taşımış olursunuz.

  • kumsal

    meraba hocam. benim yine bir sorum olacak. ben basit bir ilan sitesi yapıyorum. ev, araba, telefon gibi şeylerin ilanları olacak.
    Bunlardan birine tıklandiığında GET metodu veri tabanından çağırıyorum ve adres çubuğunda ilang.php?tur=araba yazıyor. burada her sayfada 10 tane ilan (limit ile) olacak şekilde sıralanıyor. fakat 10 ilandan sonra ikinci sayfaya yine get metodu ile ulaşamıyorum. heralde, get ile çağırılmış verilerin olduğu sayfada bir daha get i kullanamıyoruz. yardımcı olursanız sevinirim.

  • @kumsal
    yardımcı olabildiysek ne mutlu bize…

  • kumsal

    hocam harikasın çok teşekkür ederim. tam istediğim buydu.

  • “bu nasıl olur acaba?” bence güzel olur 🙂
    $sorgu=mysql_query(“select * from resim limit 6“);
    echo “< table border=1 >“;
    $sayi=0;
    while ($satir=mysql_fetch_array($sorgu))
    { if ($sayi%3==0) echo “< tr>“;
    echo (“< td>< img src='$satir[resim]'>< /td>”);
    $sayi++;
    }
    echo “< /table>”;

    Bu arada ” işaretlerini düzeltmen gerektiğini unutma…
    “limit 6 ” ifadesini kaldırırsan kaç tane resim varsa hepsini ekrana basarsın…

  • kumsal

    teşekürler hocam benim sorum şöyle aslında;
    mesela veritabanında id ve resimler alanları olsun. ben bu resimlerin sayfama geliş şeklini 1. satırda 3 tane farklı resim 2. satırda 3 tane farklı resim.
    bunu bir tablo olarak düşünürsek herbir hücrede farklı resim olmasını istiyorum. veritabanına 6 farklı resim kayıt ettim bunları 2 satırda herbir satırda 3 tane farklı resim olmasını istiyorum.
    bu nasıl olur acaba?

  • @kumsal
    sorunuzda anlayamadığım yerler var ancak sorunuz şu ise :
    Veritabınındaki tüm satırları tek tek her bir alanı ayrı hücrelerde nasıl gösteririz? ise…
    cevabı:
    $sorgu=mysql_query(“select * from notlar “);

    echo ”
    < table border=1 >
    < tr bgcolor=#6633cc>
    < td> No< /td> < td> ad< /td> < td> ortalama< /td>
    < /tr>”;
    while ($satir=mysql_fetch_row($sorgu))
    {
    echo (“< tr>
    < td>$satir[0]< /td>
    < td>$satir[1]< /td>
    < td>$satir[2]< /td>
    < /tr>”);
    }
    echo “< /table>”;
    böylece goster5.php de gösterildiği gibi bir tabloda ne kadar kayıt varsa tüm satırlara ait veriler her bir alan farklı bir hücrede olacak şekilde ekrana basmış olursunuz..

    eğer farklı birşey sormak istediyseniz sorunuzu tekrarlayın, size yardımcı olmaya çalışırım…

  • kumsal

    merhaba size bir sorum olacaktı. verileri veritabanından çekerken verilerin gösterimini sanki
    3 sutün 2 satırlık bir tabloda gibi her bir veri ayrı hücrelerde gösterimini nasıl yaparız. tek sıra halinde while ile yapıyoruz. acaba iç içe döngü mü kullanmamız gerekiyor?
    şimdiden teşekürler.