Duyuruyu Kapat
Facebook Gözat
Twitter Gözat

Ortalama Hesaplama

Konu, 'PHP' kısmında ersink tarafından paylaşıldı.

  1. ersink

    ersink Daimi Üye

    Kayıt:
    26 Temmuz 2010
    Mesajlar:
    906
    Beğenilen Mesajlar:
    4
    Meslek:
    Med Student
    Şehir:
    Ankara
    Not ortalaması hesaplayan ufak bir script oluşturuyorum.
    Scriptte form sayfasından POST edilen veriler formdaki durumuna göre ortalaması alınıyor sonra genel ortalama hesaplanıyor. Mesela;
    Matematik için 3 kutu var.
    1. kutu zorunlu diğer 2'si opsiyonel. Kullanıcı 1. ve 2. yi girerse ikisinin ortalamasını alıyor. 1. ile 3. girerse ikisinin ortalamasını alıyor. 1,2,3. kutuları girerse üçünün ortalamasını alıyor. Yani 3 kutuda bile çok olasılık var. Ben bu scripti geliştirip sözlüleri de dahil etmek istiyorum. Dolayısıyla olasılık artacak. Daha kolay bir yöntem var mıdır ?
    Kodlar;
    PHP:
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-9">
    <?php
      
    if(isset($_POST)){
          
    //Resim
          
    if($_POST['resim2']==""){
              
    $resim=$_POST['resim1'];
          }else{
              
    $resim=($_POST['resim1']+$_POST['resim2'])/2;
          }
          
    //Biyoloji
          
    if($_POST['biyoloji2']==""){
              
    $biyoloji=$_POST['biyoloji1'];
          }else{
              
    $biyoloji=($_POST['biyoloji1']+$_POST['biyoloji2'])/2;
          }
          
    //Coğrafya
          
    if($_POST['cografya2']==""){
              
    $cografya=$_POST['cografya1'];
          }else{
              
    $cografya=($_POST['cografya1']+$_POST['cografya2'])/2;
          }
          
    //Din Kültürü
          
    if($_POST['din2']==""){
              
    $din=$_POST['din1'];
          }else{
              
    $din=($_POST['din1']+$_POST['din2'])/2;
          }
          
    //Fizik
          
    if($_POST['fizik2']==""){
              
    $fizik=$_POST['fizik1'];
          }else{
              
    $fizik=($_POST['fizik1']+$_POST['fizik2'])/2;
          }
          
    //Geometri
          
    if($_POST['geometri2']==""){
              
    $geometri=$_POST['geometri1'];
          }else{
              
    $geometri=($_POST['geometri1']+$_POST['geometri2'])/2;
          }
          
    //Almanca
          
    if($_POST['almanca2']==""){
              
    $almanca=$_POST['almanca1'];
          }else{
              
    $almanca=($_POST['almanca1']+$_POST['almanca2'])/2;
          }
          
    //Kimya
          
    if($_POST['kimya2']==""){
              
    $kimya=$_POST['kimya1'];
          }else{
              
    $kimya=($_POST['kimya1']+$_POST['kimya2'])/2;
          }
          
    //Tarih
          
    if($_POST['tarih2']==""){
              
    $tarih=$_POST['tarih1'];
          }else{
              
    $tarih=($_POST['tarih1']+$_POST['tarih2'])/2;
          }
          
    //Sağlık
          
    if($_POST['saglik2']==""){
              
    $saglik=$_POST['saglik1'];
          }else{
              
    $saglik=($_POST['saglik1']+$_POST['saglik2'])/2;
          }
          
    //Dil ve Anlatım
                
    if($_POST['dila2']==""){
              
    $dila=$_POST['dila1'];
          }else{
              
    $dila=($_POST['dila1']+$_POST['dila2'])/2;
          }
          
    //Matematik
          
    if($_POST['matematik2']=="" $_POST['matematik3']==""){
              
    $matematik=$_POST['matematik1'];
          }elseif(
    $_POST['matematik3']=="" $_POST['matematik2']!=""){
              
    $matematik=($_POST['matematik1']+$_POST['matematik2'])/2;
          }elseif(
    $_POST['matematik2']=="" $_POST['matematik3']!=""){
              
    $matematik=($_POST['matematik1']+$_POST['matematik3'])/2;
          }else{
              
    $matematik=($_POST['matematik1']+$_POST['matematik2']+$_POST['matematik3'])/3;
          }
          
    //Türk Edebiyatı
          
    if($_POST['edebiyat2']=="" $_POST['edebiyat3']==""){
              
    $edebiyat=$_POST['edebiyat1'];
          }elseif(
    $_POST['edebiyat3']=="" $_POST['edebiyat2']!=""){
              
    $edebiyat=($_POST['edebiyat1']+$_POST['edebiyat2'])/2;
          }elseif(
    $_POST['edebiyat2']=="" $_POST['edebiyat3']!=""){
              
    $edebiyat=($_POST['edebiyat1']+$_POST['edebiyat3'])/2;
          }else{
              
    $edebiyat=($_POST['edebiyat1']+$_POST['edebiyat2']+$_POST['edebiyat3'])/3;
          }
          
    //İngilizce
          
    if($_POST['ingilizce2']=="" $_POST['ingilizce3']==""){
              
    $ingilizce=$_POST['ingilizce1'];
          }elseif(
    $_POST['ingilizce3']=="" $_POST['ingilizce2']!=""){
              
    $ingilizce=($_POST['ingilizce1']+$_POST['ingilizce2'])/2;
          }elseif(
    $_POST['ingilizce2']=="" $_POST['ingilizce3']!=""){
              
    $ingilizce=($_POST['ingilizce1']+$_POST['ingilizce3'])/2;
          }else{
              
    $ingilizce=($_POST['ingilizce1']+$_POST['ingilizce2']+$_POST['ingilizce3'])/3;
          }
    $resims=$resim*2;
    $biyolojis=2*$biyoloji;
    $cografyas=2*$cografya;
    $fiziks=2*$fizik;
    $geometris=2*$geometri;
    $almancas=2*$almanca;
    $kimyas=2*$kimya;
    $tarihs=2*$tarih;
    $matematiks=4*$matematik;
    $edebiyats=3*$edebiyat;
    $ingilizces=7*$ingilizce;
    $dilas=2*$dila;
    $ortalama=($resims+$biyolojis+$cografyas+$fiziks+$geometris+$almancas+$kimyas+$tarihs+$matematiks+$edebiyats+$ingilizces+$dilas+$din+$saglik)/34;
    if(
    $ortalama >= 85){
      echo 
    "<center><b><font color=red>Ortalamanız</font> = <font color=#0000FF>".$ortalama."</b></font><br><img src='Resimler/5.gif'></center>"
    }
    elseif(
    $ortalama >= 70){
      echo 
    "<center><b><font color=red>Ortalamanız</font> = <font color=#00FF00>".$ortalama."</b></font><br><img src='Resimler/4.gif'></center>"
    }
    elseif(
    $ortalama >= 55){
      echo 
    "<center><b><font color=red>Ortalamanız</font> = <font color=#CACA00>".$ortalama."</b></font><br><img src='Resimler/3.gif'></center>"
    }
    elseif(
    $ortalama >= 45){
      echo 
    "<center><b><font color=red>Ortalamanız</font> = <font color=#FF8000>".$ortalama."</b></font><br><img src='Resimler/2.gif'></center>"
    }
    elseif(
    $ortalama >= 25){
      echo 
    "<center><b><font color=red>Ortalamanız</font> = <font color=#FF0000>".$ortalama."</b></font><br><img src='Resimler/1.gif'></center>"
    }
    else{
      echo 
    "<center><b><font color=red>Ortalamanız</font> = <font color=#800000>".$ortalama."<script>alert('En yakın köprüyü öğrenmek için http://maps.google.com');</script><br><img src='Resimler/0.gif'></b></font><br></center>"
    }       
      }
    ?>

    Cevaplar için teşekkürler,
     
  2. Scientius

    Scientius Daimi Üye

    Kayıt:
    17 Kasım 2009
    Mesajlar:
    581
    Beğenilen Mesajlar:
    0
    Meslek:
    Öğrenci; ancak PHP de olacak diyebiliriz...
    Şehir:
    tinç
    Öncelikle kodundaki önemli hatalardan biri gereksiz hafıza alanı kullanman. Örneğin:
    PHP:
    $kimyas=2*$kimya;
    Bundan sonra $kimya'yı bir daha kullanmadın. Öyleyse
    PHP:
    $kimya $kimya;
    diyeceksin.

    Bir de kodunu tam olarak inceleyecek fırsatı bulamadım. İnceleyeceğim, şimdilik bunu hallet. Kolay gelsin. :)
     
    Son düzenleme yönetici tarafından yapıldı: 15 Ocak 2011
  3. Cihan Yakar

    Cihan Yakar Daimi Üye

    Kayıt:
    8 Temmuz 2003
    Mesajlar:
    5,886
    Beğenilen Mesajlar:
    1
    Şehir:
    Ankara
    inputbox'lara matematik1,2,3 diye isim vermek yerine hepsine "matematik" şeklinde (name özeliğini , id değeri vermeyin) isimlendirseniz, geriye matematik dizisi dönecektir.
    PHP:
     <input type="text" name="matematik" />
     <
    input type="text" name="matematik" />
     <
    input type="text" name="matematik" />
    Bir metot yazarsınız, kendisine verilen dizideki boş olmayan elemanların ortalamasını alır.Böylece tek satırda ortalama almış olursunuz.
     
  4. ersink

    ersink Daimi Üye

    Kayıt:
    26 Temmuz 2010
    Mesajlar:
    906
    Beğenilen Mesajlar:
    4
    Meslek:
    Med Student
    Şehir:
    Ankara
    O tarz bir şey yaptım ancak, diziye boş elemanlar da geliyor.
    Mesela;
    PHP:
    <?
    $mat count($_POST['mat']);
    echo 
    $mat;
    if(
    $mat==1){
             
    $mats=$_POST['mat'];
    }
    elseif(
    $mat==2){
                 
    $mats=($_POST['mat'][0]+$_POST['mat'][1])/2;
    }
    echo 
    $mats;


    ?>
    Gibi bir şey yaptığımızda 1 sayı göndersek de 2 eleman olarak sayıyor.
    Nasıl kullanabiliriz başka ?
     
  5. og-me

    og-me Üye

    Kayıt:
    13 Mart 2010
    Mesajlar:
    35
    Beğenilen Mesajlar:
    0
    Aşağıdaki kodu sana özel hazırladım. direk çalıştır. Çalıştırdıktan sonrada iyice incele ne yaptığımı anlamaya çalış ve kendi sistemine uyarla.

    PHP:
    <?
    header('Content-Type: text/HTML; charset=UTF-8');
    $dersler = array('resim','biyoloji','cografya','din','fizik','geometri','almanca','kimya','tarih','saglik','dila','matematik','ingilizce');
    $not_sayisi = array('2','2','2','2','2','2','2','2','2','2','2','3','3');
    if(
    $_POST){
        foreach(
    $dersler as $indis => $ders){
            
    $toplam 0;
            
    $bos_olmayan 0;
            foreach(
    $_POST[$ders] as $not){
                
    $toplam $toplam $not;
                if(
    $not!=""){
                    
    $bos_olmayan $bos_olmayan 1;
                }
            }
            if(
    $bos_olmayan>0){
                
    $not_dizisi[$ders]=$toplam/$bos_olmayan;
            }
        }
        
        foreach(
    $dersler as $ders){
            
    $ortalama $not_dizisi[$ders];
            if(
    $ortalama >= 85 and $ortalama!=""){ 
              echo 
    "<center><b><font color=red>".ucfirst($ders)." Dersi Ortalamanız</font> = <font color=#0000FF>".$ortalama."</b></font><br><img src='Resimler/5.gif'></center>";  
            } 
            elseif(
    $ortalama >= 70 and $ortalama!=""){ 
              echo 
    "<center><b><font color=red>".ucfirst($ders)." Dersi Ortalamanız</font> = <font color=#00FF00>".$ortalama."</b></font><br><img src='Resimler/4.gif'></center>";  
            } 
            elseif(
    $ortalama >= 55 and $ortalama!=""){ 
              echo 
    "<center><b><font color=red>".ucfirst($ders)." Dersi Ortalamanız</font> = <font color=#CACA00>".$ortalama."</b></font><br><img src='Resimler/3.gif'></center>";  
            } 
            elseif(
    $ortalama >= 45 and $ortalama!=""){ 
              echo 
    "<center><b><font color=red>".ucfirst($ders)." Dersi Ortalamanız</font> = <font color=#FF8000>".$ortalama."</b></font><br><img src='Resimler/2.gif'></center>";  
            } 
            elseif(
    $ortalama >= 25 and $ortalama!=""){ 
              echo 
    "<center><b><font color=red>".ucfirst($ders)." Dersi Ortalamanız</font> = <font color=#FF0000>".$ortalama."</b></font><br><img src='Resimler/1.gif'></center>";  
            } 
            else{ 
                if(
    $ortalama!=""){
                      echo 
    "<center><b><font color=red>".ucfirst($ders)." Dersi Ortalamanız</font> = <font color=#800000>".$ortalama."<script>alert('En yakın köprüyü öğrenmek için http://maps.google.com');</script><br><img src='Resimler/0.gif'></b></font><br></center>";  
                }
            } 
           }
    }else{
    ?>
        <form action="" method="post">
        <?
            foreach($dersler as $indis => $ders){
        ?>
            <b><?=ucfirst($ders);?></b><br/>
            <?
                for($i=1;$i<$not_sayisi[$indis]+1;$i++){
                    echo 'Sınav '.$i.' : <input type="text" name="'.$ders.'[]"><br/>';
                }
            ?>
        <?
            }
        ?>
        <input type="submit" value="Gönder">
        </form>
    <?
    }
    ?>
     
    Son düzenleme yönetici tarafından yapıldı: 22 Ocak 2011
  6. ersink

    ersink Daimi Üye

    Kayıt:
    26 Temmuz 2010
    Mesajlar:
    906
    Beğenilen Mesajlar:
    4
    Meslek:
    Med Student
    Şehir:
    Ankara
    Çok teşekkür ederim de karışık geldi :(
     
  7. og-me

    og-me Üye

    Kayıt:
    13 Mart 2010
    Mesajlar:
    35
    Beğenilen Mesajlar:
    0
    Bunu tek dosya olarak bi çalıştır sonrada satır satır incele anlıcaksın ;)
     
  8. ersink

    ersink Daimi Üye

    Kayıt:
    26 Temmuz 2010
    Mesajlar:
    906
    Beğenilen Mesajlar:
    4
    Meslek:
    Med Student
    Şehir:
    Ankara
    İnceliyorum ama çözemedim daha :)
    Tekrar teşekkürler.
     
  9. og-me

    og-me Üye

    Kayıt:
    13 Mart 2010
    Mesajlar:
    35
    Beğenilen Mesajlar:
    0
    Önemli değil. Takıldığın yer olduğunda çekinmeden sor. Yine halledemezsen hangi sayfaya ne şekil yerleştirmek istediğini söyle direk yazıp göndereyim ;) . Saat 10-11 gibi burda olcam o zamana kadar cevap yazamam kolay gelsin.
     
  10. ersink

    ersink Daimi Üye

    Kayıt:
    26 Temmuz 2010
    Mesajlar:
    906
    Beğenilen Mesajlar:
    4
    Meslek:
    Med Student
    Şehir:
    Ankara
    Başka önerisi olan var mı acaba ?
     
  11. ersink

    ersink Daimi Üye

    Kayıt:
    26 Temmuz 2010
    Mesajlar:
    906
    Beğenilen Mesajlar:
    4
    Meslek:
    Med Student
    Şehir:
    Ankara
    Bahsedilen metotu nasıl yapabiliriz :)
     
  12. canbag

    canbag Aktif Üye

    Kayıt:
    28 Mart 2009
    Mesajlar:
    497
    Beğenilen Mesajlar:
    0
    Meslek:
    öğrenci
    Şehir:
    IEU MYO BP 1. Sınıf
    PHP:
     <input type="text" name="matematik" />
     <
    input type="text" name="matematik" />
     <
    input type="text" name="matematik" />  
    bu böyle miydi yoksa

    PHP:
     <input type="text" name="matematik[]" />
     <
    input type="text" name="matematik[]" />
     <
    input type="text" name="matematik[]" />  
    böyle miydi
     
  13. ersink

    ersink Daimi Üye

    Kayıt:
    26 Temmuz 2010
    Mesajlar:
    906
    Beğenilen Mesajlar:
    4
    Meslek:
    Med Student
    Şehir:
    Ankara
    İkinci şekilde olacak sanırım dizi olarak göndermesi için, biz php bölümünü nasıl halledebiliriz boş gelen değerlerle birlikte bir dizi elde ettikten sonraki bölüm nasıl olabilir ?
     
  14. ersink

    ersink Daimi Üye

    Kayıt:
    26 Temmuz 2010
    Mesajlar:
    906
    Beğenilen Mesajlar:
    4
    Meslek:
    Med Student
    Şehir:
    Ankara
    Çözümü buldum teşekkürler herkese :)
    Çözüm:
    PHP:
    <?
    for(
    $i=0;$i<count($_POST['mat']);$i++){
        if(
    $_POST['mat'][$i]==""){
        unset(
    $_POST['mat'][$i]);
        }
    }
    $mat=array_sum($_POST['mat'])/count($_POST['mat']);
    echo 
    $mat;
    ?>
     
  15. expert_man

    expert_man Yeni Üye

    Kayıt:
    5 Aralık 2011
    Mesajlar:
    1
    Beğenilen Mesajlar:
    0
    arkadaşlar bende böyle birşey arıyorum ama bu program derslerin geçip geçmediğini yazıyor ama ben sadece şunu istiyorum ders falan diil

    1.sınav : 45
    2.sınav : 45
    3.sınav : 45
    ortalama : 45
    durumu : geçti gibi mesela ?

    çok acil arkadaşalr :(