Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [PHP/Javascript/MySQL] System Ocen
necro
post
Post #1





Grupa: Zarejestrowani
Postów: 19
Pomógł: 1
Dołączył: 19.08.2007

Ostrzeżenie: (0%)
-----


Witam.
Mam pewien problem z systemem ocen (plus i minus), nie wiem dokładnie jak to zrobić.
Chciał bym zrobić taki system ocen jak na www.maxmix.pl/movie-10543.html

Ale nie wiem w ogóle jak to jest zrobione, może ktoś mi pomóc? lub gdzie znajdę jakieś wskazówki?

Pozdrawiam

Ten post edytował necro 13.06.2008, 16:15:35
Go to the top of the page
+Quote Post
.radex
post
Post #2





Grupa: Zarejestrowani
Postów: 1 657
Pomógł: 125
Dołączył: 29.04.2006

Ostrzeżenie: (0%)
-----


Człowieku, bez przesady....

Po prostu za kliknięciem dodajesz do bazy ilość kliknięć PLUS bądź MINUS a następnie z tych wartości obliczasz sobie w dowolny sposób wartość...

Trochę więcej samodzielności i konkretnych pytań.
Go to the top of the page
+Quote Post
necro
post
Post #3





Grupa: Zarejestrowani
Postów: 19
Pomógł: 1
Dołączył: 19.08.2007

Ostrzeżenie: (0%)
-----


Zrobiłem to już, ale nie wiem jak zrobić aby nie przeładowywało strony i jak obliczyć średnią w skali 10

Pozdrawiam
Go to the top of the page
+Quote Post
.radex
post
Post #4





Grupa: Zarejestrowani
Postów: 1 657
Pomógł: 125
Dołączył: 29.04.2006

Ostrzeżenie: (0%)
-----


użyj AJAX-a

"średnią w skali 10" - z matematyki uciekałeś?
Go to the top of the page
+Quote Post
necro
post
Post #5





Grupa: Zarejestrowani
Postów: 19
Pomógł: 1
Dołączył: 19.08.2007

Ostrzeżenie: (0%)
-----


Musisz obrażać?
Nie nie uciekłem, tylko nie wiem jak to w php zrobić.
Go to the top of the page
+Quote Post
.radex
post
Post #6





Grupa: Zarejestrowani
Postów: 1 657
Pomógł: 125
Dołączył: 29.04.2006

Ostrzeżenie: (0%)
-----


Dobra, dobra, wyluzuj.

Powiedz jakim sposobem chcesz to napisać (bo mi dwa przyszły na myśl) to powiem jak to zaimplementować.
Go to the top of the page
+Quote Post
necro
post
Post #7





Grupa: Zarejestrowani
Postów: 19
Pomógł: 1
Dołączył: 19.08.2007

Ostrzeżenie: (0%)
-----


Nie wiem jakim sposobem ale na razie zrobiłem tak:
w Tabeli filmiki dodałem rekordy plus(int11) i minus(int11).
Głosy dodaje tak:
Kod
if($_COOKIE[$_GET[id]]){
    
echo "<center> Nie możesz dodać więcej głosów na ten dowcip!  </center>";
    
}else{

if(!isset($_COOKIE[$_GET['id']])){
    setcookie( $_GET['id'], $_GET['id'], time()*3600*12);
    }else{
    setcookie( $_GET['id'], "voted", time()*3600*12);
    }
    
    $sql = "SELECT * FROM filmiki WHERE id = '$_GET['id']'";
    $res = mysql_query($sql);
    $row = mysql_fetch_array($res);
    
    if($_GET['glos'] == "plus"){
        
        $plus = $row['plus']+1;
        $sql = "UPDATE filmiki SET plus='$plus' WHERE id='$_GET['id']'";
        $res = mysql_query($sql);
    
    echo "<center> Twój głos został dodany! </center>";
    }
    
    if($_GET['glos'] == "minus"){
        
        $minus = $row['minus']+1;
        $sql = "UPDATE filmiki SET minus='$minus' WHERE id='$_GET['id']'";
        $res = mysql_query($sql);
    
    echo "<center> Twój głos został dodany! </center>";
    }

    
    
}


Pozdrawiam
Go to the top of the page
+Quote Post
marcio
post
Post #8





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Hmm... ale z tego co widze to ty zwiekszasz lub zmiejszasz zmienna z bazy i na nowo ja zapiusjesz najlatwiej bedzie zrobic tak robisz <select> z option on 1-10 dodajesz do bazy za pomoca insert into nie update aby zrobic srednia liczysz wszystkie oceny od danego filmu dzielisz perzez wszystkie oceny i zaokroglasz za pomoca round() albo ceil() zalezy jak chcesz zaokroglac bo tak jak ty to robisz to chyba nie mozna obliczyc sredniej tak jak chcesz w sumie moze sam napisze system ocen do art'ow w cms
Go to the top of the page
+Quote Post
necro
post
Post #9





Grupa: Zarejestrowani
Postów: 19
Pomógł: 1
Dołączył: 19.08.2007

Ostrzeżenie: (0%)
-----


Wolał bym zrobić tak jak jest teraz, nie da jakoś rady?
Pozdrawiam
Dzięki za info o zaookrągleniu liczby

PS. Chciałem tylko plus i minus no i żeby obliczało średnią (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)

Ten post edytował necro 13.06.2008, 17:48:28
Go to the top of the page
+Quote Post
marcio
post
Post #10





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Nie wiem jak moglbys obliczac srednia przy twoim systemie nie przychodzi mi nic do glowy chyba ze bedziesz robis roznice pozytywnych i negatywnych ocen i to wsio ale cos nie teges.....(IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
necro
post
Post #11





Grupa: Zarejestrowani
Postów: 19
Pomógł: 1
Dołączył: 19.08.2007

Ostrzeżenie: (0%)
-----


Wiesz, nie znam najlepiej PHP, szukałem wszędzie ale co znalazłem to tylko gwiazdkowe systemy ocen a ja takich nie chce.

Pozdrawiam
Go to the top of the page
+Quote Post
simple programme...
post
Post #12





Grupa: Zarejestrowani
Postów: 74
Pomógł: 5
Dołączył: 17.07.2007
Skąd: Krakow

Ostrzeżenie: (0%)
-----


Do obliczania średniej służy w Mysql funkcja AVG.
Kod
SELECT AVG(ocena) FROM oceny as srednia
Go to the top of the page
+Quote Post
.radex
post
Post #13





Grupa: Zarejestrowani
Postów: 1 657
Pomógł: 125
Dołączył: 29.04.2006

Ostrzeżenie: (0%)
-----


Gwiazdkowe systemy oceny opierają się na praktycznie tej samej zasadzie.
Go to the top of the page
+Quote Post
marcio
post
Post #14





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Sorki za OT ale chcialem zapytac tez sobie zrobie system ocen tak jak mu to opisalem tylko mam pytanko bo wysylanie cookie nie jest zabardzo bezpieczne zapisywac w bazie i sprawdzic czy dany user juz dodal czy samo cookie wystarcz??

@simple programmer i jak to potem wyswietlic sorki za takie pytanko ale sql az tak dobrze nie znam (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Kicok
post
Post #15





Grupa: Zarejestrowani
Postów: 1 033
Pomógł: 125
Dołączył: 17.09.2005
Skąd: Żywiec

Ostrzeżenie: (0%)
-----


Po pierwsze to zwiększać ilość plusów/minusów w bazie danych możesz przy pomocy jednego zapytania, np:
  1. UPDATE tabela SET kolumna = kolumna + 1 WHERE warunek = 'cośtam'



Do wyświetlenia oceny potrzebujesz z bazy: ilość ocen ( plusy i minusy ) oraz ilość plusów.
A potem już matematyka: ile procent wszystkich głosów to plusy i zamiana na skalę 1-10 ( 0% = 1; 100% = 10 )

Możesz to zrobić w PHP, lub już na poziomie zapytania SELECT
Go to the top of the page
+Quote Post
marcio
post
Post #16





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


@necro bede dobry masz napisalem sobie taki system ocen dla moich art'ow nie mozna oceniac 2 razy nie wysylac cookie bo mozna oszukiwac o jest srednia ocen
  1. <?php
  2. $oceny = mysql_query('select ocena from oceny where aid = '.(int)$_GET['id'].'', $db);
  3. $wszystkie = mysql_num_rows($oceny);
  4.  
  5. if($wszystkie == 0) $ilosc_ocen = '<b style="color:#FF0000">Nie ma ocen</b>';
  6. else $ilosc_ocen = 'Lacznie ocen: '.$wszystkie;
  7.  
  8. while($razem = mysql_fetch_assoc($oceny)) $lacznie += $razem['ocena'];
  9. $srednia = round($lacznie/$wszystkie, 1);
  10.  
  11. $czy_ocenil = mysql_query('select ocena,dodal from oceny where aid = '.(int)$_GET['id'].' and dodal = "'.mysql_real_escape_string($_COOKIE['name']).'" limit 1', $db);
  12. $jaka = mysql_fetch_assoc($czy_ocenil);
  13.  
  14. <table width="100%">
  15. <form action="'.$_SERVER['PHP_SELF'].'?strona='.$strona.'&action=pokaz&id='.$_GET['id'].'&autor='.$_GET['autor'].'" method="post">
  16. <tr><td align="center" bgcolor="#eeeeee" height="18"><b style="color: #000000">Oceny</b></td></tr>');
  17.  
  18. if(mysql_num_rows($czy_ocenil) == 0)
  19.  
  20. echo('<tr><td align="center">Podaj swoja ocene 
  21. <select name="ocena">
  22. <option value="1">1</option>
  23. <option value="2">2</option>
  24. <option value="3">3</option>
  25. <option value="4">4</option>
  26. <option value="5">5</option>
  27. <option value="6">6</option>
  28. </select>
  29. <input type="submit" name="ocen" value="Ocen" style="background-color:#ECECEC; color:#000000; border: 1px solid blue;"></td>
  30. </tr>
  31. </form>');
  32.  
  33. else echo('<tr><td align="center">Oceniles na: <b style="color: #000000">'.$jaka['ocena'].'</b></td></tr>');
  34.  
  35.  
  36. echo('<tr><td align="center">'.$ilosc_ocen.'</td></tr>
  37. <tr><td align="center">Srednia ocen: '.$srednia.'</td></tr>
  38. </table>');
  39.  
  40. if(isset($_POST['ocen'])) {
  41.  
  42. $id = (int)$_GET['id'];
  43. $ocena = $_POST['ocena'];
  44. $dodal = mysql_real_escape_string($_COOKIE['name']);
  45. $data = date('j/n/Y H:i:s');
  46.  
  47. if(mysql_query("insert into oceny(aid,ocena,dodal,data) values('$id', '$ocena', '$dodal', '$data')", $db)) echo('<script>alert("Ocena zostala dodana")</script>');
  48.  
  49. }
  50. ?>

Czy ktos moze mi powiedziec czy ten kod jest optymalny jesli nie jest to prosze o pokazania jak go zooptymalizowac (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował marcio 13.06.2008, 20:19:54
Go to the top of the page
+Quote Post
.radex
post
Post #17





Grupa: Zarejestrowani
Postów: 1 657
Pomógł: 125
Dołączył: 29.04.2006

Ostrzeżenie: (0%)
-----


Cytat
Sorki za OT ale chcialem zapytac tez sobie zrobie system ocen tak jak mu to opisalem tylko mam pytanko bo wysylanie cookie nie jest zabardzo bezpieczne zapisywac w bazie i sprawdzic czy dany user juz dodal czy samo cookie wystarcz??


baza + ciacha

baza = pewność, że nie oszukuje
ciacha = ograniczenie zapytań do bazy.
Go to the top of the page
+Quote Post
marcio
post
Post #18





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Cytat
baza + ciacha

baza = pewność, że nie oszukuje
ciacha = ograniczenie zapytań do bazy.

WLasnie zrobilem sprawdzanie na bazie mam pewnosci ze ktos nie oszuka a tak jak mi powiedzieli w innym temacie o 1 zapytanie wiecej baza nie zdechnie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował marcio 13.06.2008, 20:35:28
Go to the top of the page
+Quote Post
.radex
post
Post #19





Grupa: Zarejestrowani
Postów: 1 657
Pomógł: 125
Dołączył: 29.04.2006

Ostrzeżenie: (0%)
-----


No tak, ale przecież chodzi o to, żeby nie zagłosowali drugi raz. Walisz ciacho i nie musisz za każdą odsłoną dawać tego jednego zapytania. A jak ciacha nie będzie, to dopiero wtedy się musisz upewnić.

Przy większej aplikacji (więcej takich "akcji") możesz na tym zaoszczędzić 2-3 zapytania na odsłonę. Przy dużej ilości userów jakaś różnica będzie (nieduża, ale zawsze).
Go to the top of the page
+Quote Post
marcio
post
Post #20





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Cytat
No tak, ale przecież chodzi o to, żeby nie zagłosowali drugi raz

No to tez ni zaglosuje 2 razy (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Cytat
Walisz ciacho i nie musisz za każdą odsłoną dawać tego jednego zapytania. A jak ciacha nie będzie, to dopiero wtedy się musisz upewnić.

To to0 ja tez wiem ale koledzy upewnili mnie ze nie robi to roznicy przy 2-3k user'ow (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

A tak pozwole zapytac a w IPB czyli na tym forum jak sie zabezpiecza sondy?
Ciacha czy baza??
Go to the top of the page
+Quote Post
.radex
post
Post #21





Grupa: Zarejestrowani
Postów: 1 657
Pomógł: 125
Dołączył: 29.04.2006

Ostrzeżenie: (0%)
-----


Moim zdaniem warto oszczędzać wszędzie, gdzie nie wiąże się to z dużą ilością kodu do napisania. Nie jestem w stanie potwierdzić tego żadnymi testami, ale wydaje mi się że przy dużym skrypcie i dużej ilości userów różnica dzięki takim pierdołkom będzie.

Ciacha + baza. Mówiłem przecież.

Ten post edytował radex_p 14.06.2008, 09:10:08
Go to the top of the page
+Quote Post
marcio
post
Post #22





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Po co ciahca + baza albo jedno albo drugie a nie 10 rzeczy chcesz potestowac:
http://www.marcio.szu.pl/czyt_art.php?stro...p;autor=uw_test

Login: uw_test
Haslo: uw_test
Go to the top of the page
+Quote Post
.radex
post
Post #23





Grupa: Zarejestrowani
Postów: 1 657
Pomógł: 125
Dołączył: 29.04.2006

Ostrzeżenie: (0%)
-----


Ehhh... Już to wytłumaczyłem.

Baza po to, żeby mieć PRAWDZIWĄ pewność, że już głosowałeś

A ciacha po to, żeby ograniczyć zapytania do bazy i zrobić to po stronie klienta.

Rozumiesz?

Ciacha po jakimś czasie wygasają. Można je też ręcznie usunąć. Po to dodawanie tych danych do bazy. A jeśli ciastko jest (np. zaglosowal=tak), to dopóki nie będzie próbował zagłosować, nie ma sensu pakować zapytania do bazy.
Go to the top of the page
+Quote Post
marcio
post
Post #24





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Nie rozumiem twojej toerii moglbys to pokazac na moim kodzie??
Chodzi ci o to ze gdy wysyla pierwszy glos wysylam ciacho gdy ciacha nie ma bo wygaslo albo ktos usunolem przed wyswietleniem forma sprawdzam czy jest ciacho jesli go nie to robie zapytanie czy dana osoba juz dodala odpowiez w sumie teoria dobra jak mi sie bedzie chcialo to moze zmienie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) ale dzieki
Go to the top of the page
+Quote Post
.radex
post
Post #25





Grupa: Zarejestrowani
Postów: 1 657
Pomógł: 125
Dołączył: 29.04.2006

Ostrzeżenie: (0%)
-----


O to właśnie chodzi (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
marcio
post
Post #26





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


W sumie to to jest ok moze zrobie cos takiego tylko jak ktos oceni 50 art'ow to bedzie mial 50 cookie a w cookie bede musial wysylac id art'a moze to zmienie w sumie to jest 5 min roboty :0
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 26.09.2025 - 08:44