Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Ocenianie w skali
Forum PHP.pl > Forum > Przedszkole
primo
Witam,

chodzi mi po głowie taki pomysł, aby móc oceniać np. każdy news czy artykuł w skali 1-6. Czy zrobić to w tabeli z artykułami - do każdego tytułu np. dopisywać liczbę głosów czy też zrobić w osobnej tabeli, gdzie mógłbym również dopisywać ip z którego oddano głos i w ten sposób wykluczać oddawanie głosu wielokrotnie questionmark.gif Jak macie to u siebie pomyślane questionmark.gif
sendi16
Ja trzymam w tej samej tabeli co artykuły. jedna kolumna to suma glosow, a w drugiej trzymam ilosc glosow.

smile.gif
primo
  1. <FORM ACTION="index.php?op=49" METHOD="post">
  2.  
  3. <table border="0" cellpadding="5" cellspacing="5">
  4.  
  5. <TR>
  6. <td><div class="form"><b>1</b></div></td>
  7. <td><INPUT TYPE="radio" NAME="liczba_glosow" VALUE="1"></td>
  8. </TR>
  9.  
  10. <TR>
  11. <td><div class="form"><b>2</b></div></td>
  12. <td><INPUT TYPE="radio" NAME="liczba_glosow" VALUE="2"></td>
  13. </TR>
  14.  
  15. <TR>
  16. <td><div class="form"><b>3</b></div></td>
  17. <td><INPUT TYPE="radio" NAME="liczba_glosow" VALUE="3"></td>
  18. </TR>
  19.  
  20. <TR>
  21. <td><div class="form"><b>4</b></div></td>
  22. <td><INPUT TYPE="radio" NAME="liczba_glosow" VALUE="4"></td>
  23. </TR>
  24.  
  25.  
  26. <tr>
  27. <td></td>
  28. <td><input type="submit" name="Dodaj" value="Dodaj swój głos:"></td>
  29. </tr>
  30.  
  31. </form>


  1. <?php
  2.  
  3.  
  4. $id = $_GET[&#092;"id\"];
  5. function glosowanie()
  6. }
  7. if($id){
  8. $query=&#092;"UPDATE filmy SET liczba_glosow = liczba_glosow +1 where id='$id'\";
  9. $result=mysql_query($query);
  10. }
  11. }
  12. ?>


zwiększa mi liczbę głosów, ale nie wiem jak zrobić aby też jak gość naciśnie np.2 lub 3 to aby tyle właśnie dodawał do tabeli.
crash
Dziwne rozwiązanie bo przy każdym wywołaniu z _GET['id'] będzie zwiększana ilość głosów, ustaw może warunek na
  1. <?php
  2. if($id and isset($_POST['liczba_glosow']))
  3. ?>

A co do tego ile dodać to:
  1. <?php
  2. $query='UPDATE filmy SET liczba_glosow = liczba_glosow + '.$_POST['liczba_glosow'].' where id=.'$id;
  3. ?>
primo
chyba czegoś w tym nie rozumiem.

w tym formularzu moim liczba glosow zwiększana jest po każdym glosowaniu o jeden, a value to jest pozycja zwiekszajaca o iles tam pole suma_glosow z tabeli questionmark.gif jak zmodyfikowac zapytanie, aby rowniez uwzglednialo pole suma_glosow questionmark.gif

w tym momencie wyglada to tak:

  1. <?php
  2.  
  3.  
  4. if($id and isset($_POST['liczba_glosow'])&& isset($_POST['suma_glosow'])){
  5. $bd->zapytaj(&#092;"UPDATE filmy SET liczba_glosow = liczba_glosow + '\".$_POST['liczba_glosow'].\"' where id='\".$id.\"'\");
  6.  
  7.  }
  8.  
  9.  
  10. ?>
reemii
Powinno byc chyba tak:

  1. <?php
  2. if($id and isset($_POST['liczba_glosow'])&& isset($_POST['suma_glosow'])){
  3. $bd->zapytaj(&#092;"UPDATE filmy SET liczba_glosow = liczba_glosow + '\".$_POST['liczba_glosow'].\"', suma_glosow = suma_glosow + 1 where id='\".$id.\"'\");
  4.  
  5. }
  6.  
  7. ?>


O ile $liczba_glosow to jest ocena, a $suma_glosow to jest ile osob głosowało. Może nazwij troche bardziej logicznie te zmienne, bo ciężko sie połapać. Tak wogóle to można to zrobić tak. Jak osoba oddaje głos to tych głosów przybywa 1, więc nie potrzebujesz zmiennej $suma_glosow.

  1. <?php
  2. if($id and !empty($_POST['liczba_glosow']))
  3. {
  4. $bd->zapytaj(&#092;"UPDATE filmy SET liczba_glosow = liczba_glosow + '\".$_POST['liczba_glosow'].\"', suma_glosow = suma_glosow + 1 where id='\".$id.\"'\");
  5. }
  6. ?>
primo
no może faktycznie mało czytelne nazwy, ale jakoś sobie poradziłem. Dla zainteresowanych podaję kod:

FORMULARZ DODAJĄCY PUNKTY DO TABELI

  1. <?php
  2.  
  3. require_once(&#092;"funkcje/BD.class.php\");
  4. $bd = new BD;
  5.  
  6. if (!$bd->otworz()) {
  7. die ($bd->blad());
  8. }
  9.  
  10.  
  11. if (!$bd->zapytaj(&#092;"SELECT * FROM filmy WHERE id='$id'\")) {
  12. die ($db->error());
  13. }
  14.  
  15. while($row = $bd->pobierzTablice())
  16. {
  17. $this_id = $row[0];
  18.  
  19.  
  20.  
  21. echo '<form ACTION=\"index.php?op=5&id='.$this_id.'\" \" METHOD=\"POST\">';
  22.  
  23. }
  24.  
  25. ?>


  1. <table border="0" cellpadding="5" cellspacing="5">
  2.  
  3. <tr>
  4. <td><div class="form-glosowanie"><b>1</b></div></td>
  5. <td><INPUT TYPE="radio" NAME="suma_glosow" VALUE="1"></td>
  6. </tr>
  7.  
  8. <tr>
  9. <td><div class="form-glosowanie"><b>2</b></div></td>
  10. <td><INPUT TYPE="radio" NAME="suma_glosow" VALUE="2"></td>
  11. </tr>
  12.  
  13. <tr>
  14. <td><div class="form-glosowanie"><b>3</b></div></td>
  15. <td><INPUT TYPE="radio" NAME="suma_glosow" VALUE="3"></td>
  16. </tr>
  17.  
  18. <tr>
  19. <td><div class="form-glosowanie"><b>4</b></div></td>
  20. <td><INPUT TYPE="radio" NAME="suma_glosow" VALUE="4"></td>
  21. </tr>
  22.  
  23. <tr>
  24. <td><div class="form-glosowanie"><b>5</b></div></td>
  25. <td><INPUT TYPE="radio" NAME="suma_glosow" VALUE="5"></td>
  26. </tr>
  27.  
  28. <tr>
  29. <td><div class="form-glosowanie"><b>6</b></div></td>
  30. <td><INPUT TYPE="radio" NAME="suma_glosow" VALUE="6"></td>
  31. </tr>
  32.  
  33. <tr>
  34. <td></td>
  35. <td><input type="submit" name="Dodaj" value="Dodaj swój głos:"></td>
  36. </tr>
  37.  
  38. </form>


SKRYPT UAKTUALNIAJĄCY TABELE:

  1. <?php
  2.  
  3. $suma_glosow = $_POST['suma_glosow'];
  4.  
  5. if($id and isset($_POST['suma_glosow'])){
  6. $bd->zapytaj(&#092;"UPDATE filmy SET liczba_glosow = liczba_glosow + 1, suma_glosow = suma_glos
    o
  7.  + '$suma_glosow' where id='$id'\");
  8.  
  9.  }
  10.  
  11. ?>


oczywiście trzeba go troszkę zmodyfikować na swoje potrzeby action=swoje_dane
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.