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 13.06.2008, 16:15:08
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 13.06.2008, 16:45:26
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ń.


--------------------
blog | Tadam — minutnik do Pomodoro na Maka :)
Go to the top of the page
+Quote Post
necro
post 13.06.2008, 16:50:09
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 13.06.2008, 16:52:56
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ś?


--------------------
blog | Tadam — minutnik do Pomodoro na Maka :)
Go to the top of the page
+Quote Post
necro
post 13.06.2008, 16:53:58
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 13.06.2008, 16:58:16
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ć.


--------------------
blog | Tadam — minutnik do Pomodoro na Maka :)
Go to the top of the page
+Quote Post
necro
post 13.06.2008, 17:07:49
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 13.06.2008, 17:43:02
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


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
necro
post 13.06.2008, 17:45:02
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ą sad.gif

Ten post edytował necro 13.06.2008, 17:48:28
Go to the top of the page
+Quote Post
marcio
post 13.06.2008, 17:51:17
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.....smile.gif


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
necro
post 13.06.2008, 17:52:18
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 13.06.2008, 17:54:18
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


--------------------
Pozdrawiam
Go to the top of the page
+Quote Post
.radex
post 13.06.2008, 17:54:22
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.


--------------------
blog | Tadam — minutnik do Pomodoro na Maka :)
Go to the top of the page
+Quote Post
marcio
post 13.06.2008, 18:04:59
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 smile.gif


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
Kicok
post 13.06.2008, 19:10:00
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


--------------------
"Sumienie mam czyste, bo nieużywane."
Go to the top of the page
+Quote Post
marcio
post 13.06.2008, 20:19:39
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 smile.gif

Ten post edytował marcio 13.06.2008, 20:19:54


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
.radex
post 13.06.2008, 20:29:28
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.


--------------------
blog | Tadam — minutnik do Pomodoro na Maka :)
Go to the top of the page
+Quote Post
marcio
post 13.06.2008, 20:34:34
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 smile.gif

Ten post edytował marcio 13.06.2008, 20:35:28


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
.radex
post 13.06.2008, 21:40:41
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).


--------------------
blog | Tadam — minutnik do Pomodoro na Maka :)
Go to the top of the page
+Quote Post
marcio
post 13.06.2008, 21:59:39
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 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 smile.gif

A tak pozwole zapytac a w IPB czyli na tym forum jak sie zabezpiecza sondy?
Ciacha czy baza??


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 1.07.2025 - 10:52