Ocenianie dla gości - rozwiazanie!
|
horus |
Dodany dnia 13.09.2006 16:52:46
|

Przedszkolak

Postów: 5
Data rejestracji: 13.09.2006 16:46
|
Heja.
Wydaje mi się, że wcześniej miałem możliwość oceniania artykułów dla gosći. Teraz mam tekst, ze ocenianie możliwe tylko dla zarejestrowanych uzytkowników. Gdzie to się włącza/wyłącza? Komentowane dziala dla gosci bez problemu. Fusion v6.01.5.
Pozdrawiam
Edytowane przez Pieka dnia 13.09.2006 20:27:36
|
|
|
|
Wścibski Gość |
Dodany dnia 19.04.2025 11:43:56
|
Pan Kontekstualny
Postów: n^x
Data rejestracji: Zawsze
|
|
IP: localhost |
|
|
Pieka |
Dodany dnia 13.09.2006 19:01:57
|


Postów: 19887 Pomógł: 767
v7.02.03 Data rejestracji: 23.02.2005 18:12
|
horus napisał/a:
Heja.
Wydaje mi się, że wcześniej miałem możliwość oceniania artykułów dla gosći.
Masz racje, wydawalo Ci sie
Edytowane przez Pieka dnia 08.11.2007 19:26:32
Jestem jaki jestem 
|
|
|
|
slawekneo |
Dodany dnia 13.09.2006 19:12:45
|

Bywalec

Postów: 915 Pomógł: 41
Data rejestracji: 12.03.2006 07:28
|
wejdz w includes/ratings_include.php
odnajdz
if (!iMEMBER) {
echo "<div align='center'>".$locale['r104']."</div>\n";
} elseif (isset($d_rating['rating_vote'])) {
i zamien na to
$result = dbquery("SELECT * FROM ".DB_PREFIX."ratings WHERE rating_item_id='".$rating_item_id."' AND rating_type='".$rating_type."' ORDER BY rating_ip");
$pierwsze = "";
$wynik = "";
$ip = "".USER_IP."";
while ($ipp = dbarray($result)) {
$pierwsze .= " ".$ipp['rating_ip']." ";
}
$wynik .= substr_count(strtolower($pierwsze), strtolower($ip));
if ($wynik != 0) {
echo "<div align='center'>Nie mozesz wiecej nadawac ocen !</div>\n";
} elseif ($d_rating['rating_vote']>0) {
Pozdro!!
Przyklejam i przenosze./Pieka
Edytowane przez Pieka dnia 08.11.2007 19:26:57
|
|
|
|
horus |
Dodany dnia 22.09.2006 10:43:09
|

Przedszkolak

Postów: 5
Data rejestracji: 13.09.2006 16:46
|
Dziękuję.
Ale dziwnie się u mnie zachowuje - pod FF dodaje głosy, natomiast pod IE nie.
Jak zagłosowałem pod ff (pojawia się blokada ip i jest ok) to pod ie nie pojawila mi sie blokada i moglem dalej głosować ale bez żadnego efektu - jakby nie pobieral/wysyłał
danych z/do bazy. (php 5.1.6; apache 2.2.3; mysql 5.0.24a). To tylko u mnie czy u was też?
Pozdrawiam |
|
|
|
slawekneo |
Dodany dnia 22.09.2006 13:14:10
|

Bywalec

Postów: 915 Pomógł: 41
Data rejestracji: 12.03.2006 07:28
|
Hee to nie wina Twojego serwa tylko wersji fusiona :D
Oto kod do najnowszej wersji 6.01.5 B) (dodalem tez opcje zapisu i odczytu IP z cookie ).
W maincore.php, gdzies nad ta linia:
if (isset($_POST['login'])) {
Wklej to:
if (empty($_COOKIE['fusion_user_ip'])) {
setcookie("fusion_user_ip", "".USER_IP."", time() + 18000, "/", "", "0");
}
Zapisz i wyjdz.
Plik w includes/ratings_include.php (calosc pliku):
<?php
/*---------------------------------------------------+
| PHP-Fusion 6 Content Management System
+----------------------------------------------------+
| Copyright © 2002 - 2006 Nick Jones
| http://www.php-fusion.co.uk/
+----------------------------------------------------+
| Released under the terms & conditions of v2 of the
| GNU General Public License. For details refer to
| the included gpl.txt file or visit http://gnu.org
+----------------------------------------------------+
| Ratings system developed by CrappoMan
| email:
+----------------------------------------------------*/
if (!defined("IN_FUSION")) { header("Location: ../index.php"); exit; }
include LOCALE.LOCALESET."ratings.php";
function showratings($rating_type,$rating_item_id,$rating_link) {
global $locale,$userdata,$_COOKIE;
$result2 = dbquery("SELECT * FROM ".DB_PREFIX."ratings WHERE rating_item_id='".$rating_item_id."' AND rating_type='".$rating_type."' ORDER BY rating_ip");
$pierwsze = "";
$wynik = "";
$ip = "".USER_IP."";
$ip1 = $_COOKIE['fusion_user_ip'];
while ($ipp = dbarray($result2)) {
$pierwsze .= " ".$ipp['rating_ip']." ";
}
$wynik .= substr_count(strtolower($pierwsze), strtolower($ip));
$wynik .= substr_count(strtolower($pierwsze), strtolower($ip1));
$d_rating = dbarray(dbquery("SELECT rating_vote,rating_datestamp FROM ".DB_PREFIX."ratings WHERE rating_item_id='".$rating_item_id."' AND rating_type='".$rating_type."' AND rating_user='".$userdata['user_id']."'"));
if(iMEMBER){
if (isset($_POST['post_rating'])) {
if (isNum($_POST['rating']) && $_POST['rating'] > 0 && $_POST['rating'] < 6 && !isset($d_rating['rating_vote'])) {
$result = dbquery("INSERT INTO ".DB_PREFIX."ratings (rating_item_id, rating_type, rating_user, rating_vote, rating_datestamp, rating_ip) VALUES ('$rating_item_id', '$rating_type', '".$userdata['user_id']."', '".$_POST['rating']."', '".time()."', '".USER_IP."')");
}
redirect($rating_link);
} elseif (iMEMBER && isset($_POST['remove_rating'])) {
$result = dbquery("DELETE FROM ".DB_PREFIX."ratings WHERE rating_item_id='$rating_item_id' AND rating_type='$rating_type' AND rating_user='".$userdata['user_id']."'");
redirect($rating_link);
}
} else {
if (isset($_POST['post_rating'])) {
if ($wynik == 0) {
$result = dbquery("INSERT INTO ".DB_PREFIX."ratings (rating_item_id, rating_type, rating_user, rating_vote, rating_datestamp, rating_ip) VALUES ('$rating_item_id', '$rating_type', '".$userdata['user_id']."', '".$_POST['rating']."', '".time()."', '".USER_IP."')");
}
}
}
$ratings = array(5 => $locale['r120'], 4 => $locale['r121'], 3 => $locale['r122'], 2 => $locale['r123'], 1 => $locale['r124']);
tablebreak();
opentable($locale['r100']);
if ($wynik != 0) {
echo "<div align='center'>Nie mozesz wiecej dodawac ocen!</div>\n";
} elseif (iMEMBER && $d_rating['rating_vote']>0) {
echo "<form name='removerating' method='post' action='".$rating_link."'>
<div align='center'>".sprintf($locale['r105'], $ratings[$d_rating['rating_vote']], showdate("longdate", $d_rating['rating_datestamp']))."<br><br>
<input type='submit' name='remove_rating' value='".$locale['r102']."' class='button'></div>
</form>";
} else {
echo "<form name='postrating' method='post' action='".$rating_link."'>
<div align='center'>".$locale['r106'].": <select name='rating' class='textbox'>
<option value='0'>".$locale['r107']."</option>\n";
foreach($ratings as $rating=>$rating_info) {
echo "<option value='".$rating."'>$rating_info</option>\n";
}
echo "</select>\n";
echo "<input type='submit' name='post_rating' value='".$locale['r103']."' class='button'>
</form>\n";
}
echo "<hr>";
$tot_votes = dbcount("(rating_item_id)", "ratings", "rating_item_id='".$rating_item_id."' AND rating_type='".$rating_type."'");
if($tot_votes){
echo "<table align='center' cellpadding='0' cellspacing='1' class='tbl-border'>
<tr>
<td>
<table align='center' cellpadding='0' cellspacing='0'>\n";
foreach($ratings as $rating=>$rating_info) {
$num_votes = dbcount("(rating_item_id)", "ratings", "rating_item_id='".$rating_item_id."' AND rating_type='".$rating_type."' AND rating_vote='".$rating."'");
$pct_rating = number_format(100 / $tot_votes * $num_votes);
if ($num_votes == 0) {
$votecount = "[".$locale['r108']."]";
} elseif ($num_votes == 1) {
$votecount = "[1 ".$locale['r109']."]";
} else {
$votecount = "[".$num_votes." ".$locale['r110']."]";
}
$class = ($rating % 2==0?"tbl1":"tbl2");
echo "<tr>
<td class='$class'>$rating_info</td>
<td width='250' class='$class'><img src='".THEME."images/pollbar.gif' alt='$rating_info' height='12' width='".$pct_rating."%' class='poll'></td>
<td class='$class'>".$pct_rating."%</td>
<td class='$class'>$votecount</td>
</tr>\n";
}
echo "</td>\n</table>\n</td>\n</tr>\n</table>";
}else{
echo "<div align='center'>".$locale['r101']."</div>\n";
}
closetable();
}
?>
Zapisz i wyjdz.
Ta i to tyle :D Mozesz sie cieszyc ocenami :D
Edytowane przez Pieka dnia 30.12.2007 20:24:28
|
|
|
|
horus |
Dodany dnia 22.09.2006 15:09:32
|

Przedszkolak

Postów: 5
Data rejestracji: 13.09.2006 16:46
|
Działa w FF i w IE. Sprawdzałem w lanie z innych compów!
Dziękuję )))) |
|
|
|
crasch |
Dodany dnia 22.09.2006 16:51:15
|

Zaawansowany

Postów: 1473
Data rejestracji: 02.01.2005 01:21
|
Dobra robota sławek.
..i to by było na tyle.
28 listopada 2006
|
|
|
|
ICEK |
Dodany dnia 30.12.2007 19:59:03
|

Bywalec

Postów: 658 Pomógł: 27
Data rejestracji: 22.09.2007 08:29
|
Witam :)
Po zastosowaniu się do powyższych wskazówek gdy dodaje ocenę pojawia się taki błąd:
Warning: substr_count() [function.substr-count]: Empty substring. in /includes/ratings_include.php on line 31
Wydaje mi się, że może to być spowodowane tym, że kod w poście Sławka jest do wersji 6.01.5 a przy 13 coś jest nie tak. Mógłby ktoś zobaczyć co jest nie tak w tym kodzie i ewentualnie go "podrasować" ;)
Pozdrawiam :)
|
|
|
|
Pieka |
Dodany dnia 30.12.2007 20:17:34
|


Postów: 19887 Pomógł: 767
v7.02.03 Data rejestracji: 23.02.2005 18:12
|
ICEK napisał/a:
..Wydaje mi się, że może to być spowodowane tym, że kod w poście Sławka jest do wersji 6.01.5 a przy 13 coś jest nie tak. Mógłby ktoś zobaczyć co jest nie tak w tym kodzie i ewentualnie go "podrasować"
Pozdrawiam
Pozwolilem sobie sprawdzic te modyfikacje na v6.01.13 i wszystko dziala poprawnie.
Prosze, sam ocen, czy mam racje: http://pieka.ugu....readmore=1
Jak zwykle diabel tkwi w szczegolach, wiec wykonaj wszystko jak zaleca autor.
Jestem jaki jestem 
|
|
|
|
ICEK |
Dodany dnia 30.12.2007 20:22:27
|

Bywalec

Postów: 658 Pomógł: 27
Data rejestracji: 22.09.2007 08:29
|
Wchodzę i od razu jest błąd:
|
|
|
|
Pieka |
Dodany dnia 30.12.2007 20:39:17
|


Postów: 19887 Pomógł: 767
v7.02.03 Data rejestracji: 23.02.2005 18:12
|
Tak sie dzieje, tylko przy bezposrednim wejsciu do komentarzy, kliknij F5 ;)
Jednak zapytalem Grzesia, co o tym mysli i prosze:
Znajdz:
$ip1 = $_COOKIE['fusion_user_ip'];
Zamien na:
if (isset($_COOKIE['fusion_user_ip'])) { $ip1 = $_COOKIE['fusion_user_ip']; }
else { $ip1 = "999.999.999.999"; }
Edytowane przez Pieka dnia 30.12.2007 20:52:26
Jestem jaki jestem 
|
|
|
|
ICEK |
Dodany dnia 30.12.2007 20:50:19
|

Bywalec

Postów: 658 Pomógł: 27
Data rejestracji: 22.09.2007 08:29
|
Czyli wszystko jest OK i mogę zostawić juz ocenianie w spokoju ? A mi właśnie cały czas o ten błąd chodziło co Ci właśnie pokazałem wyżej.
|
|
|
|
Pieka |
Dodany dnia 30.12.2007 21:00:38
|


Postów: 19887 Pomógł: 767
v7.02.03 Data rejestracji: 23.02.2005 18:12
|
ICEK napisał/a:
Czyli wszystko jest OK i mogę zostawić juz ocenianie w spokoju ? A mi właśnie cały czas o ten błąd chodziło co Ci właśnie pokazałem wyżej.
Tak, spokojnie mozesz zostawic, poniewaz cookies jest tworzone podczas wejscia na strone, a przeciez nikt nie bedzie wchodzil bezposrednio do komentarzy.
Jednak mozesz zastosowac w/w poprawke i bedzie ok nawet jesli tak sie stanie.
Jestem jaki jestem 
|
|
|
|
ICEK |
Dodany dnia 30.12.2007 21:05:16
|

Bywalec

Postów: 658 Pomógł: 27
Data rejestracji: 22.09.2007 08:29
|
OK. To jeszcze małe pytanko Teraz to co dopisałeś ta poprawka to ją zrobić jeszcze do tego co pisał Sławek? Tzn. Wszystko co Sławek + to co Ty dopisałeś tak?
|
|
|
|
Pieka |
Dodany dnia 30.12.2007 21:06:18
|


Postów: 19887 Pomógł: 767
v7.02.03 Data rejestracji: 23.02.2005 18:12
|
ICEK napisał/a:
OK. To jeszcze małe pytanko  Teraz to co dopisałeś ta poprawka to ją zrobić jeszcze do tego co pisał Sławek? Tzn. Wszystko co Sławek + to co Ty dopisałeś tak?
Po prostu zamien te linie kodu Slawka na to, co podalem.
Jednak nie jest to wymagane, poniewaz przy standardowym wchodzeniu na strone blad nie wystepuje.
Edytowane przez Pieka dnia 30.12.2007 21:07:13
Jestem jaki jestem 
|
|
|
|
ICEK |
Dodany dnia 30.12.2007 21:12:29
|

Bywalec

Postów: 658 Pomógł: 27
Data rejestracji: 22.09.2007 08:29
|
Śmiga jak Bolka trampki - Dziękuję Niech Ci Pan Bóg to wszystko w dzieciach wynagrodzi (albo w nowym sprzęcie do kompa )
Pzdr
Edytowane przez ICEK dnia 30.12.2007 21:12:48
|
|
|