Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL] zliczanie głosów w ankiecie
Piotrroger
post
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 18.01.2007

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


Cześć, mam mały problem.
Kombinuje i nie mam pojęcia, jak zliczyć głosy w ankiecie.
W ankiecie na sztywno ustawione jest 5 rzeczy, na które można głosować, głos można oddawać raz na miesiąc. Głosy zapisuje w takiej tabeli:
  1. CREATE TABLE IF NOT EXISTS `glosowanie` (
  2. `glosowanie_id` int(5) NOT NULL AUTO_INCREMENT,
  3. `glosowanie_user_id` int(5) NOT NULL,
  4. `utwory_id` int(5) NOT NULL,
  5. `glosowanie_data` date NOT NULL,
  6. PRIMARY KEY (`glosowanie_id`)
  7. )

Chodzi o to, aby wyciągnąć stąd liczbę głosów na poszczególne utwory z poszczególnej ankiety. Przynależność do poszczególnej ankiety, mam zapisaną w innej tabeli:
  1. CREATE TABLE IF NOT EXISTS `utwory` (
  2. `utwory_id` int(5) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. `utwory_nazwa` text COLLATE utf8_polish_ci NOT NULL,
  4. `ranking_id` int(5) NOT NULL,
  5. PRIMARY KEY (`utwory_id`)
  6. )

W skrócie, chcę wyciągnąć z tabeli glosowanie liczbę głosów w kolejności od największej do najmniejszej, z warunkiem, że głosy te muszą należeć do tej samej ankiety (tabela utwory).

Mam nadzieję, że zrozumiale to przekazałem (IMG:style_emoticons/default/tongue.gif)
Czekam na podpowiedzi (IMG:style_emoticons/default/wink.gif)

Ok, wymyśliłem coś. Coś co wygląda tragicznie, ale... działa (IMG:style_emoticons/default/smile.gif)
  1. $i=0;
  2.  
  3. //wybranie utworów z podanego rankingu
  4. $link=mysql_query("SELECT utwory_id FROM utwory
  5. WHERE ranking_id='".$_GET['id']."'");
  6. while ($wiersz = mysql_fetch_assoc($link))
  7. {
  8. $utwory_id[$i] = $wiersz["utwory_id"];
  9. $i++;
  10. }
  11. $i=0;
  12.  
  13. //wyświetlenie głosów dla utworów, które mają jakikolwiek głos
  14. $link3=mysql_query("SELECT utwory_nazwa, utwory_id, COUNT(utwory_id) AS wynik FROM glosowanie
  15. LEFT JOIN utwory USING (utwory_id)
  16. WHERE utwory_id=".$utwory_id[0]." || utwory_id=".$utwory_id[1]." || utwory_id=".$utwory_id[2]." ||
  17. utwory_id=".$utwory_id[3]." || utwory_id=".$utwory_id[4]."
  18. GROUP BY utwory_id ORDER BY wynik DESC");
  19. echo "<table>";
  20. while ($wiersz3 = mysql_fetch_array($link3, MYSQL_ASSOC))
  21. {
  22. echo "<tr><td>".$wiersz3["utwory_nazwa"]."</td><td>".$wiersz3["wynik"]."</td></tr>";
  23. $key = array_search($wiersz3["utwory_id"], $utwory_id);
  24. $utwory_id[$key]=NULL;
  25. }
  26.  
  27. //wyświetlenie głosów (zerowych) dla utworów bez oddanego głosu
  28. $link4=mysql_query("SELECT utwory_id, utwory_nazwa FROM utwory
  29. WHERE ranking_id='".$_GET['id']."'");
  30. $i=0;
  31. while ($wiersz4 = mysql_fetch_array($link4, MYSQL_ASSOC))
  32. {
  33. if($utwory_id[$i]==NULL) {} else { echo "<tr><td>".$wiersz4["utwory_nazwa"]."</td><td>0</td></tr>"; }
  34. $i++;
  35. }
  36. echo "<table>";
  37.  


Mimo wszystko, jak ktoś ma pojęcie jak to zoptymalizować to proszę pisać/podpowiadać (IMG:style_emoticons/default/smile.gif)

Ten post edytował Piotrroger 5.06.2014, 21:49:42
Go to the top of the page
+Quote Post

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: 25.08.2025 - 06:47