• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Skrypt głosowania

VPS Starter Arubacloud
0 głosów
1,053 wizyt
pytanie zadane 27 czerwca 2015 w PHP przez lukaszgo3 Początkujący (440 p.)
edycja 27 czerwca 2015 przez lukaszgo3

Witam

Mam takowy skrypt na oddawanie głosów

   $vote_down = NULL;
   $vote_up = NULL;

                        $vote_up = mysql_num_rows(mysql_query("SELECT * FROM `glitchbay_img_vote` WHERE `vote` = 1 AND `object_id`=".$img['id']));

                        $text = str_replace("#VOTEUP#", '<span style="color:#fff;" class="up_'.$img['id'].'">'.$vote_up.'</span>', $text);

                        $vote_down = mysql_num_rows(mysql_query("SELECT * FROM `glitchbay_img_vote` WHERE `vote` = 0 AND `object_id`=".$img['id']));

                        $text = str_replace("#VOTEDOWN#", '<span style="color:#fff;" class="down_'.$img['id'].'">'.$vote_down.'</span>', $text);

 

Wszystko działa ładnie, ale chciałbym aby głosy pozytywne i negatywne były widoczne jako jedna wartość, a nie osobno, tak jak jest to teraz.

Chciałem to zrobić na zasadzie,

'.$vote_up - $vote_down.'

lecz nie działa, domyślam się że pewnie dlatego ponieważ takie operacje są tu niewykonywalne.

Jakieś inne pomyły jak ujednolicić głosy?

 

2 odpowiedzi

0 głosów
odpowiedź 27 czerwca 2015 przez Comandeer Guru (599,730 p.)

Przeca powinno działać, bo mysql_num_rows zwraca liczbę. Jakiś błąd rzuca?

komentarz 27 czerwca 2015 przez lukaszgo3 Początkujący (440 p.)

Przy kodzie

$text = str_replace("#VOTEUP#", '<span style="color:#fff;" class="up_'.$img['id'].'">'.$vote_up.'</span>', $text);

Wygląda tak

 

a po zmianie na

$text = str_replace("#VOTEUP#", '<span style="color:#fff;" class="up_'.$img['id'].'">'.$vote_up - $vote_down.'</span>', $text);

tak

komentarz 27 czerwca 2015 przez efiku Szeryf (75,160 p.)

$text = str_replace("#VOTEUP#", '<span style="color:#fff;" class="up_'.$img['id'].'">'.$vote_up.'</span> <strong> - </strong> ', $text);

$text = str_replace("#VOTEDOWN#", '<span style="color:#fff;" class="down_'.$img['id'].'">'.$vote_down.'</span>', $text);

Tak?

Btw, mysql_* są deprecated.

0 głosów
odpowiedź 30 czerwca 2015 przez lukaszgo3 Początkujący (440 p.)

Prolbem niejako rozwiązałem, a kod wygląda teraz nastepująco;

 $vote_down = NULL;
                        $vote_up = NULL;

                        $vote_up = mysql_num_rows(mysql_query("SELECT * FROM `tentego_img_vote` WHERE `vote` = 1 AND `object_id`=".$img['id']));

                        $text = str_replace("#VOTEUP#", '<span style="color:#fff;" class="up_'.$img['id'].'">'.$vote_up.'</span>', $text);

                        $vote_down = mysql_num_rows(mysql_query("SELECT * FROM `tentego_img_vote` WHERE `vote` = 0 AND `object_id`=".$img['id']));

                        $text = str_replace("#VOTEDOWN#", '<span style="color:#fff;" class="down_'.$img['id'].'">'.$vote_down.'</span>', $text);

                        $text = str_replace("#VOTE#",$vote_up - $vote_down,$text);

Jak widać #VOTE# jest odpowiedzialne za rożnice głosów, niestety nie zlicza ich na bierząco tak jak to było przy #VOTEUP# i #VOTEDOWN#. Oddany głos widzimy dopiero po odwieżeniu strony. Jak powinna wyglądać mniej wiecej modyfikacja aby wszystko pieknie działało? ;)

komentarz 30 czerwca 2015 przez Comandeer Guru (599,730 p.)
Jeśli oddany głos widać po odświeżeniu, to ewidentny znak, że najpierw wyświetlasz, a później dodajesz głos, więc wystarczy te fragmenty kodu zamienić miejscami.
komentarz 30 czerwca 2015 przez lukaszgo3 Początkujący (440 p.)
         $text = str_replace(,$vote_up - $vote_down, "#VOTE#"$text);

O to chodzi?

komentarz 30 czerwca 2015 przez Comandeer Guru (599,730 p.)
Nie, chodzi mi o fragment, w którym głos jest dodawany do bazy.
komentarz 30 czerwca 2015 przez lukaszgo3 Początkujący (440 p.)
Hmmm głos dodatni i ujemny są dodawane do bazy, a Vote je tylko zlicza jak dobrze rozumiem, więc jakbyś mogł mnie troche naprowadzić na co mam właściwie zwrócic uwage ;)
komentarz 30 czerwca 2015 przez Comandeer Guru (599,730 p.)
Chodzi o to czy najpierw jest dodawany ten głos do bazy, a dopiero później jest ten kod wyświetlający, czy najpierw jednak wyświetla a dopiero później dodaje.
komentarz 30 czerwca 2015 przez lukaszgo3 Początkujący (440 p.)
Przekaz zrozumiałem, ale niestety nie mam pojęcia gdzie powinienem tego szukać aby to pozmieniać.

Podobne pytania

0 głosów
1 odpowiedź 181 wizyt
pytanie zadane 3 lipca 2015 w PHP przez No Lime Gaduła (4,540 p.)
0 głosów
3 odpowiedzi 719 wizyt
pytanie zadane 23 kwietnia 2015 w HTML i CSS przez Bartaz Początkujący (440 p.)
0 głosów
2 odpowiedzi 192 wizyt
pytanie zadane 17 października 2017 w PHP przez NogaProgramowania Nowicjusz (160 p.)

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...