• 14-02-2021, 00:51:59
    #1
    Merhabalar arkadaşlar sitemde hepsiburada sitesinde ki gibi değerlendirme kısmı var oy verme vesayre benim sorum sorunum 1-5 arasın da oy veriliyor ben bunun ortalamasını almak istiyorum görselde ki örnekte ki gibi ortalama nasıl çıkartırım acaba...



    not soruda ürün yerleştirme vardır.. kullandığım klavyemin ortalamasıdır
  • 14-02-2021, 00:57:03
    #2
    Backend Developer
    tam mantıgını kuramadım ama (toplam verilen yıldız sayısı) / 14 14 adet yıldız oldugu için ort. yıldız başına düşen puanı verir diye düşünüyorum bir deneyin
  • 14-02-2021, 01:00:27
    #3
    146*5 = 730
    45*4 = 180
    25*3 = 75
    5*2 = 10
    10*1 = 10

    Toplam Değerlendirme Sayısı: 146+45+25+5+10=231
    Toplam Yıldız Sayısı: 730+180+75+10+10 = 1005

    1005/231 = 4,3506 ~ 4,4 Puan
  • 14-02-2021, 21:03:14
    #4
    ByKiprik adlı üyeden alıntı: mesajı görüntüle
    146*5 = 730
    45*4 = 180
    25*3 = 75
    5*2 = 10
    10*1 = 10

    Toplam Değerlendirme Sayısı: 146+45+25+5+10=231
    Toplam Yıldız Sayısı: 730+180+75+10+10 = 1005

    1005/231 = 4,3506 ~ 4,4 Puan
    böyle bir hesaplama yapıldığının farkındayım hocam sorum şu ki ben bunun kod mantığını nasıl ederim...
  • 14-02-2021, 22:25:27
    #5
    basite indirgeyerek şöyle birşey çıktı, üzerinde biraz daha çalışılabilir .)

    function yildizsay($puan){
    $query = $db->query("SELECT * FROM urun WHERE puan='{$puan}' ", PDO::FETCH_ASSOC);
    if ( $query->rowCount() ){ return( $sayi = $query->rowCount()); }else{$sayi = 0}
    //$sayi = rand(1,20);
    $don['oy'] = $sayi;
    $don['puan'] = $sayi*$puan;
    return ($don);
    }
    $puanlama = array();
    for ($i = 1; $i <= 5; $i++) {
    $yildizsay = yildizsay($i);
    if($i == 1){
    $toplam['oy'] = $yildizsay['oy'];
    $toplam['puan'] = $yildizsay['puan'];
    }
    else{
    $toplam['oy'] = $toplam['oy'] + $yildizsay['oy'];
    $toplam['puan'] = $toplam['puan'] + $yildizsay['puan'];
    }
    $puanlama[$i] = $yildizsay;
    }
    echo '<pre>';
    print_r($puanlama);
    
    echo '<br />';
    echo 'Toplam Oy : '.$toplam['oy'].'<br />';
    echo 'Toplam puan : '.$toplam['puan'].'<br />';
    echo 'Ortalama : '.$toplam['puan']/$toplam['oy'].'<br />';
  • 14-02-2021, 22:28:13
    #6
    aSSembLy adlı üyeden alıntı: mesajı görüntüle
    basite indirgeyerek şöyle birşey çıktı, üzerinde biraz daha çalışılabilir .)

    function yildizsay($puan){
    $query = $db->query("SELECT * FROM urun WHERE puan='{$puan}' ", PDO::FETCH_ASSOC);
    if ( $query->rowCount() ){ return( $sayi = $query->rowCount()); }else{$sayi = 0}
    //$sayi = rand(1,20);
    $don['oy'] = $sayi;
    $don['puan'] = $sayi*$puan;
    return ($don);
    }
    $puanlama = array();
    for ($i = 1; $i <= 5; $i++) {
    if($i == 1){
    $toplam['oy'] = yildizsay($i)['oy'];
    $toplam['puan'] = yildizsay($i)['puan'];
    }
    else{
    $toplam['oy'] = $toplam['oy'] + yildizsay($i)['oy'];
    $toplam['puan'] = $toplam['puan'] + yildizsay($i)['puan'];
    }
    $puanlama[$i] = yildizsay($i);
    }
    echo '<pre>';
    print_r($puanlama);
    
    echo '<br />';
    echo 'Toplam Oy : '.$toplam['oy'].'<br />';
    echo 'Toplam puan : '.$toplam['puan'].'<br />';
    echo 'Ortalama : '.$toplam['puan']/$toplam['oy'].'<br />';

    hocam eline yüreğine sağlık sağolasın emeğin için çok çok teşekkür ederim
  • 14-02-2021, 22:40:06
    #7
    rica ederim,
  • 14-02-2021, 23:57:07
    #8
    HakanKorkz adlı üyeden alıntı: mesajı görüntüle
    Merhabalar arkadaşlar sitemde hepsiburada sitesinde ki gibi değerlendirme kısmı var oy verme vesayre benim sorum sorunum 1-5 arasın da oy veriliyor ben bunun ortalamasını almak istiyorum görselde ki örnekte ki gibi ortalama nasıl çıkartırım acaba...



    not soruda ürün yerleştirme vardır.. kullandığım klavyemin ortalamasıdır
    veritabanı şemanızı görmeden net bir şey söylemek zor ama degerlendirmeler adında tablo ve bu tablonun oy adında bir sütunu olduğunu varsayalım. her değerlendirmeyi 1-5 arasında değer olarak oy sütununa yazdırıyorsunuz diyelim. (bu sütun numeric bir alan olmalı (integer, float vb.)

    Select AVG(oy) as oy_ortalama, COUNT(oy) as oy_sayisi From degerlendirmeler Where urun_id='xxx'
    bu şekilde bir sql sorgusundan hem oy ortalamasını hemde toplam oy sayısını çektirebilirsiniz. Dbden gelen ortalamayı da

    $oy_ortalama = round($dbden_gelen_oy_ortalama, 1);
    bu şekilde virgünden sonra tek hane (4.4) gibi yuvarlayıp kullanabilirsiniz. Yıldızların gösterimi de hayal gücünüze kalmış

    Daha iyi anlaşılması için ufak bir örnek hazırladım: http://sqlfiddle.com/#!9/83d2a5/1
  • 18-02-2021, 16:29:54
    #9
    yasarkemaldag adlı üyeden alıntı: mesajı görüntüle
    veritabanı şemanızı görmeden net bir şey söylemek zor ama degerlendirmeler adında tablo ve bu tablonun oy adında bir sütunu olduğunu varsayalım. her değerlendirmeyi 1-5 arasında değer olarak oy sütununa yazdırıyorsunuz diyelim. (bu sütun numeric bir alan olmalı (integer, float vb.)

    Select AVG(oy) as oy_ortalama, COUNT(oy) as oy_sayisi From degerlendirmeler Where urun_id='xxx'
    bu şekilde bir sql sorgusundan hem oy ortalamasını hemde toplam oy sayısını çektirebilirsiniz. Dbden gelen ortalamayı da

    $oy_ortalama = round($dbden_gelen_oy_ortalama, 1);
    bu şekilde virgünden sonra tek hane (4.4) gibi yuvarlayıp kullanabilirsiniz. Yıldızların gösterimi de hayal gücünüze kalmış

    Daha iyi anlaşılması için ufak bir örnek hazırladım: http://sqlfiddle.com/#!9/83d2a5/1
    hocam eline yüreğine sağlık sağolasın emeğin için çok çok teşekkür ederim