• 19-04-2010, 23:17:13
    #1
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Öncelikle merhaba arkadaşlar ben şuan bir okul yoklama scripti yazıyorum.PHP bilgim pek fazla yok o yüzden size bir soru sormak istiyorum.

    Şimdi ben yoklamaya ekliyorum öğrenciyi ama bütün bilgileriyle giriyorum mesela okulno,ad,soyad.Bunu şöyle nasıl yaparım mysql de bütün öğrenciler önceden kayıtlı olsun ben öğrencinin numarasını girdiğimde bütün bilgileri çıksın istiyorum bunun için 2 tane tablo oluşturmam gerekti biri bütün öğrencilerin bulunduğu tablo diğeri ise sadece olmayanların olduğu tablo şimdi ben olmaynların olduğu tabloya sadece öğrencinin okul numarasını gireceğim ve sonra bu ik tabloyu birbiriyle karşılaştıracağım php kodlarıyla ve direk çıktı olarak olmayan öğrencinin bütün bilgileri gelecek sayfaya.Bunu nasıl yaprım şimdi birkaç kodlama yaptım onları göstereyim mesela.

    Bu okulda olmayanları kayıt eden sayfa.
    <?php
    
    include ("vt.php"); 
    $numara = $_POST["no"];
    $ad = $_POST["ad"];
    $soyad = $_POST["soyad"];
    $gercek_saat = (date("H") + 1);
    $gercek_zaman = mktime( $gercek_saat );
    $saat = date("H:i:s",$gercek_zaman);
    $tarih = date("d-m-Y $saat");
    $kaydet = mysql_query("insert into yoklama (numara,ad,soyad,tarih)value('$numara','$ad','$soyad','$tarih')");
    mysql_query("SET NAMES UTF8");
    if($kaydet)
    {
    echo "yoklamaya kayit edildi";
    }else{
    echo "Yoklama yapilamadi bir sorun algilandi";
    exit(); 
    }
    
    
    ?>
    Buda onları görüntülediğim sayfa

    <title>Yoklama</title>
    
    
    <?php 
    //veri tabanı bağlantısı
    $hostname = "localhost";
    $username = "root"; //veri tabanı kullanıcı adı
    $password = ""; //veri tabanı şifresi
    $dbname   = "mrtrmn"; //db adı
    
    $connection = mysql_connect($hostname, $username, $password) or die ("Veri tabanı bağlantısı yapılamıyor.");
    
    $db_select = mysql_select_db($dbname, $connection);
    if(!$db_select){
        die("Veri tabanı seçilemiyor.");
    }
    
    $sql = "SELECT * FROM yoklama ORDER BY id ASC";
    $sorgu = mysql_query($sql, $connection);
    
    
    echo "<table width='50%' border='0' cellspacing='4' cellpadding='2' align='center'>";
    echo "<tr>
          <th scope'col'>Sıra</th>
          <th scope'col'>Okul No</th>
          <th scope'col'>Ad</th>
    	  <th scope'col'>Soyad</th>
    	  <th scope'col'>Tarih</th>
        </tr>";
    if(mysql_num_rows($sorgu) > 0){    
        
        while($yaz = mysql_fetch_array($sorgu)){
    
              		
                   
            echo "<tr>";
                echo "<th scope='row'><div align='center'>"; 
                    
                    @$no = $no + 1;
                    echo $no;
    
    
                echo "<td><div align='center'>".strip_tags($yaz['numara'])."</td><td><div align='center'>".strip_tags($yaz['ad'])."</td><td><div align='center'>".strip_tags($yaz['soyad'])."</td><td><div align='center'>".strip_tags($yaz['tarih'])."</td>";
           
    	
    }else{
    
        echo "<tr>";
            echo "<td>Yoklama listesi şimdilik boş.</td>";
        echo "</tr>";
    
    }
    echo "</table>";
    
    ?>

    Arkadaşlar yazım beklediğimden uzun oldu o yüzden özür dilerim sizden.Bu arada yardımcı olan herkese şimdiden teşekkürler.
  • 19-04-2010, 23:33:42
    #2
    Zamanım olmadığı için uygulamalı olarak anlatamıyorum ama şuna benzer bir şey olacak sorgu kodu:

    SELECT * FROM `yoklama`,`ogrenci`
    WHERE (`yoklama`.`okul_no` = `ogrenci`.`okul_no`)
    Tablo yapınızı bilmediğim için bu şekilde birazcık sallayarak yaptım. Yarın en erken akşam saat 6 gibi tekrar bakarım.
  • 19-04-2010, 23:36:47
    #3
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Arkadaşım istediğini yanlış anlamadıysam , şimdi senin bir öğrenciler tabon var, bir de yoklama değil mi, o zaman iki tabloda numara alanları ortak olur, çekerken de ona göre çekersin:
    $sql = 'SELECT y.numara, o.* FROM yoklama as y, ogrenciler as o where  y.numara=o.numara order by y.numara asc';
  • 19-04-2010, 23:44:34
    #4
    Hocam şimdi şöyle açıklayayım ;
    Ben şimdi öğrenciler tablosuna 123 numaralı Ali Yılmaz ı kayıt ettim.
    öğrenci okula gelmeyince ben ali'nin numarasını yoklama tablosuna kayıt ettim sadece numarasını ama.Sonra ben okula gelmeyenlere baktığımda aliyi numarası adı soyadı şeklinde görmek istiyorum olay bu bunun içinde karşılaştırma yapmam gerekiyor nasıl yapcağım sorum bu verdiğiniz kodları birazdan deniyorum.
  • 19-04-2010, 23:58:33
    #5
    @Hkan hocam dediğini yaptım oldu.Çok teşekkür ederim.@metadige hocam sanada teşekkür ederim yardımın için.
  • 20-04-2010, 00:33:21
    #6
    MrTrmn adlı üyeden alıntı: mesajı görüntüle
    @Hkan hocam dediğini yaptım oldu.Çok teşekkür ederim.@metadige hocam sanada teşekkür ederim yardımın için.
    bilginiz olsun 2 tane while falan yazmayin ic ice 2 farkli tablo icin.
    daha profesyonel bir kodlama örneği göstereyim. 2veya daha fazla tabloyu birleştirmek istersen

    $ogrencino = mysql_real_escape_string($ogrencino);// eger ogrenci numarasinda harf vs bulunuyorsa mutlaka kontrol edin
    
    if (is_numeric($ogrencino)               {
    $q="SELECT * FROM ogrenci LEFT JOIN yoklama ON ogrenci.numara=yoklama.numara where ogrenci.numara = '$ogrencino' ";
    $q =mysql_query($q);
    if (mysql_num_rows ==0 ) {
    
    echo 'boyle bir ogrenci bulunamamktadir';
                                        }
    else            {
    while ($row= mysql_fetch_assoc){
    print_r($row); // buradan butun sutun adlari ve degerlerini gorebilirsin kontrol //amacli
    echo $row['sutunadi'];
                                                   }
                     }
                                                      }
    kolay gelsin.
  • 20-04-2010, 02:00:28
    #7
    Kapitan adlı üyeden alıntı: mesajı görüntüle
    bilginiz olsun 2 tane while falan yazmayin ic ice 2 farkli tablo icin.
    daha profesyonel bir kodlama örneği göstereyim. 2veya daha fazla tabloyu birleştirmek istersen

    $ogrencino = mysql_real_escape_string($ogrencino);// eger ogrenci numarasinda harf vs bulunuyorsa mutlaka kontrol edin
    
    if (is_numeric($ogrencino)               {
    $q="SELECT * FROM ogrenci LEFT JOIN yoklama ON ogrenci.numara=yoklama.numara where ogrenci.numara = '$ogrencino' ";
    $q =mysql_query($q);
    if (mysql_num_rows ==0 ) {
    
    echo 'boyle bir ogrenci bulunamamktadir';
                                        }
    else            {
    while ($row= mysql_fetch_assoc){
    print_r($row); // buradan butun sutun adlari ve degerlerini gorebilirsin kontrol //amacli
    echo $row['sutunadi'];
                                                   }
                     }
                                                      }
    kolay gelsin.
    Arkadaşım kusura da bakma da, seninki kaş yapayım derken göz çıkarmaya benzemiş, sorulan sorunun cevabı zaten verilmiş doğru bir şekilde, ben verilen cevaplarda iki while yapılacak bir yer göremiyorum sen görebiliyormusun ?

    Senin verdiğin daha profesyonel kodlama örneğinin, profesyonel olma sebebi if denetiminde parantez hatası yapman mı, mysql_num_rows için başvuracağı sorguyu belirtmemiş olman dolayısı ile devamlı "böyle bir öğrenci bulunmamamaktadır" yazacağı mı, yoksa başka bir sebebi mi var benim göremediğim. Aydınlatırsan sevinirim.

    Yani anlıyorum yardımcı olmaya çalışıyorsun, bu bölümde ki herkes de bunu yapıyor. Ama önce verilen cevapları kontrol edip, yazdığına dikkat etmek gerekiyor haliyle.
  • 20-04-2010, 02:14:09
    #8
    metadige adlı üyeden alıntı: mesajı görüntüle
    Arkadaşım kusura da bakma da, seninki kaş yapayım derken göz çıkarmaya benzemiş, sorulan sorunun cevabı zaten verilmiş doğru bir şekilde, ben verilen cevaplarda iki while yapılacak bir yer göremiyorum sen görebiliyormusun ?

    Senin verdiğin daha profesyonel kodlama örneğinin, profesyonel olma sebebi if denetiminde parantez hatası yapman mı, mysql_num_rows için başvuracağı sorguyu belirtmemiş olman dolayısı ile devamlı "böyle bir öğrenci bulunmamamaktadır" yazacağı mı, yoksa başka bir sebebi mi var benim göremediğim. Aydınlatırsan sevinirim.

    Yani anlıyorum yardımcı olmaya çalışıyorsun, bu bölümde ki herkes de bunu yapıyor. Ama önce verilen cevapları kontrol edip, yazdığına dikkat etmek gerekiyor haliyle.
    arkadasim ben bilgi olsun diye yazdim oraya, hızlı yazdıgım içinde mutlaka açık kapalı parantex syntax hataları olabilir. 3 veya 4 tane tabloyu birbirine bağlayan queryde eminim where kullanırsan yapılan sorgu sayısı 2 katı olacaktır. istersen mysql in referanslarına bak.

    bu arada beni bilen bilir.