• 31-01-2008, 02:10:38
    #1
    Merhabalar arkadaşlar. Öncelikle php de yeniyim Şimdi benim yapmak istediğim şey lig puan tablosu. Tabloda Takım ismi,Oynadığı maç sayısı, acerajı ve puanı olacak. Bunu yapmak için bir şeyler denedim ama bir türlü veritabanından veri çekemedim.

    Sql :
    Alıntı
    CREATE TABLE lig (
    id smallint(6) NOT NULL auto_increment,
    takim varchar(20) NOT NULL default '',
    oynanan varchar(20) NOT NULL default '',
    averaj varchar(20) NOT NULL default '',
    puan varchar(20) NOT NULL default '',
    PRIMARY KEY (id)
    ) TYPE=MyISAM;
    kayip.php
    Alıntı
    <?php
    $dbhost = "localhost";
    $dbuser = "ates";
    $dbpass = "123456";
    $dbname = "ates";
    @mysql_connect ("$host","$dbuser","$dbpass","$dbname") or die ("Veritabanına bağlanalımadı... Veritabanı bilgilerini kontrol edin");
    @mysql_select_db ("$dbname") or die ("Veritabanına Bağlanılamadı...");
    $takim = $POST ['takim'];
    $oynanan = $POST ['oynanan'];
    $averaj = $POST ['averaj'];
    $puan = $POST ['puan'];
    $sql = "insert into lig (takim, oynanan, averaj, puan)
    values ('$takim', '$oynanan', '$averaj', '$puan')";
    $kayit = mysql_query($sql);
    if (isset ($kayit)){
    echo "takım bilgileri kaydı Yapılmıştır";
    }
    else {
    echo "Takım bilgileri kaydı yapılamadı.";
    }
    echo "takım Adi :".$kayit['takim']."<br />";
    echo "Oynadığı Maç :".$kayit['oynanan']."<br />";
    echo "averaj :".$kayit['averaj']."<br />";
    echo "puan :".$kayit['puan']."<br />";
    ?>
    Kayıt Fomu:
    Alıntı
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="XHTML namespace">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Untitled Document</title>
    </head>
    <body>
    <form action="kayit.php" method="post">&nbsp;&nbsp;
    <table width="290" border="0">
    <tr>
    <td width="160">Takım :</td>
    <td width="120"><input type="text" name="takim" id="takim" size="20" /></td>
    </tr>
    <tr>
    <td>Oynadığı Maç Sayısı:</td>
    <td><input type="text" name="oynanan" id="oynanan" size="20" /></td>
    </tr>
    <tr>
    <td>Averaj</td>
    <td><input type="text" name="averaj" id="averaj" size="20" /></td>
    </tr>
    <tr>
    <td>Puan</td>
    <td><input type="text" name="puan" id="puan" size="20" /></td>
    </tr>
    <tr>
    <td colspan="2"><div align="center">
    <input type="submit" value="Gönder" name="B1" />
    </div></td>
    </tr>
    </table>
    </body>
    </html>
    Kodlar bunlar arkadaşlar. Öncelikle yeni olduğum için çok hatam olmuş olabilir sizler hatalarımı düzelterek "bak kardeş şuraları yanlış olmuş. Bu komutu ... değilde ... olarak kulllanman gerek." gibi yapıcı cümlelerle hatalarımı gösterirseniz çok sevinirim.
  • 31-01-2008, 02:38:24
    #2
    2 kere veritabanına bağlanmışşınız 1 kere bağlanmanız yeterli.
    birde hata yaptığınız yer: "insert into" yani sql kayıtı ekleme cümlesini sorgulatıp onunla veri çekmeye çalışmışşınız.

    mantığını veriyorum.
    mesela tabloda id değeri 1 olan kayıtın değerlerini çekmek istiyorsunuz bunun için sorgunuz şu şekilde olmalı.

     <?php
    $baglanti=mysql_connect("localhost","root","");
    mysql_select_db("veritabaniadi",$baglanti);
    $sql=mysql_query("SELECT * FROM tabloadi WHERE id='1'");
    $kayit=mysql_fetch_array($sql);
    echo $kayit['puan'] . "<br />" . $kayit['averaj'];
    ?>
    gibi....yukarıdaki kod bloğunda sadece 1 nolu id nin averaj ve puan alanlarındaki değerleri çektirdik.

    veya o tablodaki bütün kayıtlardaki verileri sorgulatıp ekrana bastırmak istiyorsanız bunu while döngüsü içinde yapmanız yeterlidir.

     <?php
    $baglanti=mysql_connect("localhost","root","");
    mysql_select_db("veritabaniadi",$baglanti);
    $sql=mysql_query("SELECT * FROM tabloadi");
    while ($kayit=mysql_fetch_array($sql)) {
    echo $kayit['puan'] . "<br />" . $kayit['averaj'];
    }
    ?>
    bu kod bloğunda ise o tablodaki bütün değerleri while döngüsü içerisinde alt alta yazdırdık.

    umarım açıklayıcı olmuştur.takıldığınız yerde sorun biz buralardayız
    kolay gelsin.
  • 31-01-2008, 02:57:06
    #3
    Öncelikle yardımcı olmaya çalıştığınız için teşekkür ederim. Ancak bilgiler veritabanına yazıldı mesajını almama rağmen hala veritabanından veri çekemiyorum. kayit.php nin son hali :

    <?php
    $dbhost = "localhost";
    $dbuser = "ates";
    $dbpass = "123456";
    $dbname = "ates";
    @mysql_connect ("$host","$dbuser","$dbpass","$dbname") or die ("Veritabanına bağlanalımadı... Veritabanı bilgilerini kontrol edin");
    @mysql_select_db ("$dbname") or die ("Veritabanına Bağlanılamadı...");
    $takim = $POST ['takim'];
    $oynanan = $POST ['oynanan'];
    $averaj = $POST ['averaj'];
    $puan = $POST ['puan'];
    $sql = "insert into lig (takim, oynanan, averaj, puan)
    values ('$takim', '$oynanan', '$averaj', '$puan')";
    $baglanti=mysql_connect("localhost","ates","123456");
    mysql_select_db("ates",$baglanti);
    $sql=mysql_query("SELECT * FROM lig WHERE id='1'");
    $kayit=mysql_fetch_array($sql);
    if (isset ($kayit)){
    echo "takım bilgileri kaydı Yapılmıştır";
    }
    else {
    echo "Takım bilgileri kaydı yapılamadı.";
    }
    echo $kayit['puan'] . "<br />" . $kayit['averaj'];
    ?>
  • 31-01-2008, 03:03:47
    #4
    Merhaba,

    Hala 2 defa bağlanıyorsunuz.
  • 31-01-2008, 03:08:36
    #5
    eskisinin yedeğini alıp aşağıdaki gibi deneyebilirmisiniz?

    <?php
    $dbhost = "localhost";
    $dbuser = "ates";
    $dbpass = "123456";
    $dbname = "ates";
    @mysql_connect ($host,$dbuser,$dbpass,$dbname) or die ("Veritabanına bağlanalımadı... Veritabanı bilgilerini kontrol edin");
    @mysql_select_db ($dbname) or die ("Veritabanına Bağlanılamadı...");
    $takim = $POST ['takim'];
    $oynanan = $POST ['oynanan'];
    $averaj = $POST ['averaj'];
    $puan = $POST ['puan'];
    $sql = mysql_query("insert into lig (takim, oynanan, averaj, puan)
    values ('$takim', '$oynanan', '$averaj', '$puan')");
    
    if ($sql) {
    echo "takım bilgileri kaydı Yapılmıştır";
    }
    else {
    echo "Takım bilgileri kaydı yapılamadı.";
    }
    
    $sql=mysql_query("SELECT * FROM lig WHERE id='1'");
    $kayit=mysql_fetch_array($sql);
    
    echo $kayit['puan'] . "<br />" . $kayit['averaj'];
    ?>
    yukarıdaki kodun sizin kodunuzdan farkı:

    if sorgusunda değişiklik yaptım ve yerini değiştirdim.2. kez mysql_connect() yapmanıza gerek yok o kısmı silip yerine veritabanına bilgi eklediğimiz yeri mysql_query ile sorgulattım.

    birde veritabanına bilgi ekleme sayfası ile veritabanındaki verileri gösterme sayfası bir birinden farklı olursa karışıklık dahada azalır.
    mesela bilgigir.php de veritabanına kayıt eklersiniz.
    bilgioku.php de ise kayıtları ekrana verip gösterebilirsiniz.
    böyle daha kolay olur.

    bir veritabanına bir kere bağlanıp istediğiniz kadar işlem yapabilirsiniz 2. kez bağlanmanıza gerek yok.eğer bir bağlantıyı kapatmak istersenizde mysql_close(); function unu kullanabilirsiniz.

    kolay gelsin.
  • 31-01-2008, 03:17:35
    #6
    Tekrar yardımlarınız için teşekkür ediyorum. Ama malesef hala ekrana veri yazdıramıyorum.

    yasarkemaldag : Dediğin gibi ayrı php dosyasında yazdırmayı düşünüyorum zaten. Bağlantı kodlarını baglanti.php diye yapıp include ile halledicem ama şu ekrana verileri hala alamıyorum
  • 31-01-2008, 03:24:58
    #7
    yazma ve okuma işlemlerini ayrı dosyalar olarak ayarlayın sorununuz hallolacaktır diye düşünüyorum.

    birde tablonuzda id değerleri var demi.id değerleri yoksa WHERE id='1' kodu hiç bir anlam taşımaz.ondanda ekrana veri alamıyor olabilirsiniz.
  • 31-01-2008, 03:36:12
    #8
    Sql tablomda "id smallint(6) NOT NULL auto_increment," şu var sadece. Başka bir yerede mi koyacağız? ekrana yazdırma işlevini yazdir.php olarak kaydettim ama yine olmadı.
  • 31-01-2008, 03:56:31
    #9
    ilk önce id değerlerinin özelliklerini size tavsiyem (int,max boyut=11,auto_increment,primary key) olarak ayarlayın (kişisel önerim)

    şimdi yazdir.php ye şunu bir yazın deneyelim.

     <?php
    $baglanti=mysql_connect("localhost","ates","123456");
    mysql_select_db("ates",$baglanti);
    $sql=mysql_query("SELECT * FROM lig WHERE id='1'",$baglanti);
    $kayit=mysql_fetch_array($sql);
    echo $kayit['puan'];
    echo "<br>";
    echo $kayit['averaj'];
    ?>
    şu an kendim denedim çalışıyor.veritabanında id değeri primary key değilse birden fazla aynı id li kayıt olabilir ona dikkat edin.veritabanında kayıt olduğundan emin olun özellikle id değer 1 olan kayıt.phpmyadminden bir kontrol edin.

    iyi geceler diliyorum.eğer takıldığınız yer olursa yazın yarın cevaplamaya çalışırım.veya diğer php bilen arkadaşlarda cevaplarlar.