Puanlama sistemi.
Merhaba arkadaşlar.
Bir puanlama sistemi yapıyorum, bu puanlama sisteminde 6 veya daha çok faktöre puan verilebilecek.Tüm faktörlere verilen puanların ortalanmasını yazacak.Ayrıca her faktörün kendi puan ortalaması da ayrıca hesaplanıp karşısında yazacak.
Bunu nasıl yapabilirim.
Bu puanlama sistemini mysql kullanmadan yapabilirmiyim.
Php
mysql gerekmez ama senin çizdiğin resimden faktörler anlaşılmıyor. ortalama hariç ne yapılacak ?
merhaba öncelikle ilgilendiğiniz için teşekkürler drekon.
Yaklaşık altı alan olacak üstten aşağıya ve her alanda bir bar
olacak ve bu bar hareket ettirilerek not verecek giren kişi.
mesela;
ALAN1 --------|-- 80
ALAN2 ------|----- 50
ALAN_ADI - BAR - Puan
Ayrıca tüm ALAN1 ALAN 2 ...ALAN N lerin ortalaması GENEL_PUAN
adında en üstte yazılacak.
ALAN ların karşısında da o alana ait ortalama ayrıca yazacak.
Tam anlatabildimmi bilemiyorum tekrar teşekkürler.
Php
Bu tür bir puanlama sistemi için Mysql kullanmanız şart değil. Ama mysql kullanmamanız için bir sebebinizde yok. Veri depolamak ve veri yönetmek veri tabanlarının işi. Boşuna kendimize eziyet etmektense veri tabanı kullanır keyfimize bakarız.
Mantık (puan verilecek seyin bir ürün olduğunu varsayıyorum);
Tablo1: urunler
tablo1 stunları: urun_id | urun_adi v.s....
------------------------------------------------
Tablo2: puan_turleri
Tablo2 stunları: tur_id | tur_adi
--------------------------------------------------
Tablo 3: puanlar
Tablo3 stunları: urun_id | tur_id | uye_id| puan
--------------------------------------------------
şimdi. ürünler tablosuna normal olarak ürünler eklenecek. Ve ürünlerin puanlarını sınıflandırmak için puan_turleri tablosundaki puan türlerini kullanıcaksınız. Örnk: Tasarım, koku, tat, görsellik gibisinden.
puanlar tablosunada, hangi ürüne oy verildiğini bilmek için oy verilen ürün id umarasını kaydediceksiniz. ve verilen oy'un hangi türe verildiğini bilebilmek için
puan türünün id numarasınıda kayıt ediceksiniz. Eğerki bir üyenin birden fazla oylama yapmasını istemiyorsanız, yada hangi üyelerin oyladığını bilmek istiyorsanız uye_id kısmına da oyu veren üyenin id numarasını kayıt edebilirsiniz. Eğerki gerek yok derseniz o stunu yok sayabilirsiniz.
Ve verilen puanıda "puan" stununa kayıt ediceksiniz.
Şimdi kullanıcının bir ürün için vereceği Oyları burayada kayıt ettik. sıra geldi oyları çekmeye.
Örneğin ürünümüzün detay sayfasındayız. Ve puanlarını dediğiniz gibi çekmek istiyoruz. Ürün id numaramız 15 olsun
SELECT
puan_turleri.tur_adi,
AVG(puanlar.puan) As ortalama,
(SELECT AVG(puan) FROM puanlar WHERE urun_id =1) As
top_ort
FROM
puanlar
INNER JOIN
puan_turleri
ON
puanlar.tur_id = puan_turleri.tur_id
WHERE
puanlar.urun_id = 1 GROUP BY puan_turleri.tur_id
--------------------------------
Şeklinde bir kullanımla alıcağını çıktı şunun gibi bişeydir.
Buradaki tur_adi Oy türlerinin adıdır. Ortalama ise oy türlerinin ortalaması. Top_ort ise Genel ortalamadır.
Not: yukarıdaki urun_id = 1 olan yerlerdeki 1 olan yerlere değişken gelicek.
Not2: Top_ort kısmını bir defa ekrana yazdırmanız gerekli. Onuda döngü içerisinde ayarlarsınız artık :)
Bukadarı yeterlidir sanırım. kolay gelsin.