Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> nazwa funkcji
qoryto
post
Post #1





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 1.07.2009
Skąd: Rzeszów

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


Witam. Mam taki problem. Otóż posiadam kod z funkcją:
  1. function ocena($num_amount, $num_total) {
  2. $count1 = $num_amount / $num_total;
  3. $count2 = $count1 * 100;
  4. $count = number_format($count2, 0);
  5. return $count;
  6. }


Czy da się zrobić, aby nazwę funkcji w tym przypadku to " ocena " zastąpić wygenerowanym w poście ID? tak aby każdy wpis miał inną nazwe funkcji, gdyż przy wklepaniu tego kodu
występuje błąd: Cannot redeclare percent()

Ten skrypt to ocena wpisów. Mój skrypt jest oparty na plikach testowych, każdy wpis posiada swój ID, który później deklaruje w javascript.
Wszystko działa prawidłowo, jednak gdy wpisów na stronie głównej jest załóżmy 5 - wyskakuje właśnie błąd Cannot redeclare percent() - ponieważ funkcje nie mogą się powtarzać. Czy ktoś ma pomysł w jaki sposób zrobić, aby funkcje były nazwą wygenerowanego ID postu?

function '.$post_id.' coś w tym stylu.. sporo szukałem i nnie mam pojęcia czy sie tak da zrobić

Ten post edytował qoryto 4.06.2014, 15:52:10
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
johny_s
post
Post #2





Grupa: Zarejestrowani
Postów: 594
Pomógł: 122
Dołączył: 17.07.2005
Skąd: P-na

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


A po co Ci 5 takich samych funkcji? Nie wystarczy Ci jedna i ją wywoływać?
Go to the top of the page
+Quote Post
pedro84
post
Post #3





Grupa: Nieautoryzowani
Postów: 2 249
Pomógł: 305
Dołączył: 2.10.2006

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


Deklarować funkcję tylko jeden raz?
Go to the top of the page
+Quote Post
qoryto
post
Post #4





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 1.07.2009
Skąd: Rzeszów

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


Może pojaśnię w czym rzecz ..
mam taki skrypt:
  1. include 'config.php';
  2.  
  3. $user_ip = $_SERVER['REMOTE_ADDR'];
  4. $pageID = ''.$post_id.''; /// <---- tutaj wpisuje '.$post_id.' aby pod każdym postem był inny ID
  5. //function to calculate the percent
  6. function percent($num_amount, $num_total) {
  7. $count1 = $num_amount / $num_total;
  8. $count2 = $count1 * 100;
  9. $count = number_format($count2, 0);
  10. return $count;
  11. }
  12. function ignore_divide_by_zero($count1, $count2)
  13. {
  14. return ($count2 == 'Division by zero');
  15. }
  16.  
  17. set_error_handler('ignore_divide_by_zero', E_WARNING);
  18. // check if the user has already clicked on the unlike (rate = 2) or the like (rate = 1)
  19. $dislike_sql = mysql_query('SELECT COUNT(*) FROM wcd_yt_rate WHERE ip = "'.$user_ip.'" and id_item = '.$pageID.' and rate = 2 ');
  20. $dislike_count = mysql_result($dislike_sql, 0);
  21.  
  22. $like_sql = mysql_query('SELECT COUNT(*) FROM wcd_yt_rate WHERE ip = "'.$user_ip.'" and id_item = '.$pageID.' and rate = 1 ');
  23. $like_count = mysql_result($like_sql, 0);
  24.  
  25. // count all the rate
  26. $rate_all_count = mysql_query('SELECT COUNT(*) FROM wcd_yt_rate WHERE id_item = '.$pageID.'');
  27. $rate_all_count = mysql_result($rate_all_count, 0);
  28.  
  29. $rate_like_count = mysql_query('SELECT COUNT(*) FROM wcd_yt_rate WHERE id_item = '.$pageID.' and rate = 1');
  30. $rate_like_count = mysql_result($rate_like_count, 0);
  31. $rate_like_percent = percent($rate_like_count, $rate_all_count);
  32.  
  33. $rate_dislike_count = mysql_query('SELECT COUNT(*) FROM wcd_yt_rate WHERE id_item = '.$pageID.' and rate = 2');
  34. $rate_dislike_count = mysql_result($rate_dislike_count, 0);
  35. $rate_dislike_percent = percent($rate_dislike_count, $rate_all_count);



ten kod odpowiada za konkretny ID... jak jest jeden wpis to się wyświetla wszystko OK. Natomiast gdy dodam już kilka wpisów zaczynają być jaja właśnie w postaci Cannot redeclare percent()

Więc nie mam pojęcia w jaki sposób zrobić to, aby działało pod każdym wpisem ocenianie na stronie głównej każdego jednego wpisu..

Może prościej.. adres skąd skrypt pobrałem:
  1. http://www.webcodo.net/like-dislike-system-with-jquery-ajax-and-php-youtube-like-design/
Go to the top of the page
+Quote Post
nospor
post
Post #5





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Funkcje maja byc zadeklarowane tylko raz. Nie mozesz ich wkladac w petle ani includowac pliku z nimi tysiac razy pod rząd
Go to the top of the page
+Quote Post
johny_s
post
Post #6





Grupa: Zarejestrowani
Postów: 594
Pomógł: 122
Dołączył: 17.07.2005
Skąd: P-na

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


przenieś sobie ta funckcję do jakiegoś pliku includowanego tylko raz
od biedy możesz użyć czegoś takiego

  1. if(!function_exists ( 'percent' )) {
  2. function percent($num_amount, $num_total) {
  3. $count1 = $num_amount / $num_total;
  4. $count2 = $count1 * 100;
  5. $count = number_format($count2, 0);
  6. return $count;
  7. }
  8. }
Go to the top of the page
+Quote Post
qoryto
post
Post #7





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 1.07.2009
Skąd: Rzeszów

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


Dziękuję za odpowiedź(IMG:style_emoticons/default/smile.gif)


Ten post edytował qoryto 4.06.2014, 17:48:28
Go to the top of the page
+Quote Post

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 Aktualny czas: 22.08.2025 - 20:02