Dzień dobry, wieczór Polsko! O tuż przerobiłem sobie trochę plugin do pokazywania notatki o ostrzeżeniu za posta na reputację i wygląda to tak:
http://ferrycraft.pl/Thread-Nowe-ip
I nie wiem jak to zaokrąglić do 1 notatki typu:
Kod:
Użytkownik dostał więcej niż 1 punkt reputacji za ten post.
Ale kompletnie nie wiem jak to zrobić..
Tak wygląda funkcja:
Kod PHP:
function ReputationInfo_postbit(&$post)
{
global $mybb;
if($mybb->settings['ReputationPostInfo_onoff'] == 1)
{
global $db;
$query=$db->query('SELECT * FROM '.TABLE_PREFIX.'reputation WHERE pid ='.$post['pid']);
while($result=$db->fetch_array($query))
{
$post['message'].='<div class = "reputation_info">Użytkownik dostał reputację za ten post!</div>';
}
}
}
Zapewne trzeba dopisać warunek, tylko że właśnie nie wiem jak..
może tak, jak nie zadziała to zrób pętle while, co do zliczania musisz użyć count w zapytaniu
Kod:
$query=$db->query('SELECT * FROM '.TABLE_PREFIX.'reputation WHERE pid ='.$post['pid'].' limit 1);
Heh Twoje zapytanie nie działa.
Zrobiłem to w taki sposób:
Kod PHP:
function ReputationInfo_postbit(&$post)
{
global $mybb;
if($mybb->settings['ReputationPostInfo_onoff'] == 1)
{
global $db;
$query=$db->query('SELECT * FROM '.TABLE_PREFIX.'reputation WHERE pid ='.$post['pid']);
if ($result=$db->fetch_array($query) == 1)
{
$post['message'].='<div class = "reputation_info">Użytkownik dostał punkt reputacji za ten post!</div>';
}
elseif ($result=$db->fetch_array($query) > 1)
{
$post['message'].='<div class = "reputation_info">Użytkownik dostał więcej niż 1 punkt reputacji za ten post!</div>';
}
}
}
I wyświetla się tylko że jak ktoś dostanie 1 pkt reputacji za post to nie wyświetla się notatka. Do testu:
http://ferrycraft.pl/Thread-Nowe-ip (2 post dostał 1 punkt reputacji).
I pokazuje się w każdym poście notatka:
Kod:
Użytkownik dostał punkt reputacji za ten post!
Mój błąd skopałem coś w kodzie (a dokładniej dałem <= zamiast ==), już tego ni mo
Powiem że jestem coraz bliżej, wyjdę na kłamcę?
Ehh... Nie kumam tego w ogóle! Jak mam coś takiego:
Kod PHP:
if ($result=$db->fetch_array($query) == 0)
To wyświetla sięw każdym poście (prócz tych z repką) info.
A jak mam:
Kod PHP:
if ($result=$db->fetch_array($query) == 1)
To nie wyświetla się nawet w poście który ma 1 repkę..
Spróbuj tak, jak nie zadziała to napiszę Ci coś innego.
Kod PHP:
function ReputationInfo_postbit(&$post)
{
global $mybb;
if($mybb->settings['ReputationPostInfo_onoff'] == 1)
{
global $db;
$query=$db->query('SELECT * FROM '.TABLE_PREFIX.'reputation WHERE pid ='.$post['pid']);
$rep = mysql_fetch_array(mysql_query("select (select count(*) from '.TABLE_PREFIX.'reputation where pid =".$post['pid'].") as ile"));
while($result=$db->fetch_array($query) >= 1)
{
$post['message'].='<div class = "reputation_info">Użytkownik dostał '.$rep['ile'].' punkt reputacji za ten post!</div>';
}
}
}
Po 1. W kij błędów mi wyskakuje.
Po 2. Nie zaokrągla do jednej notatki.
Po 3. To jest moja teraźniejsza funkcja:
Kod PHP:
function ReputationInfo_postbit(&$post)
{
global $mybb;
if($mybb->settings['ReputationPostInfo_onoff'] == 1)
{
global $db;
$query=$db->query('SELECT * FROM '.TABLE_PREFIX.'reputation WHERE pid ='.$post['pid']);
if ($result=$db->fetch_array($query) == 1)
{
$post['message'].='<div class = "reputation_info">Użytkownik dostał punkt reputacji za ten post!</div>';
}
elseif ($result=$db->fetch_array($query) > 1)
{
$post['message'].='<div class = "reputation_info">Użytkownik dostał więcej niż 1 punkt reputacji za ten post!</div>';
}
}
}
Tylko że nie działa notatka jak ktoś dostał 1 pkt repki. :/
Nie działa. :/
O o o coś zrobiłem! Tylko że teraz wyświetla zawszę notatkę:
Cytat:Użytkownik dostał więcej niż 1 punkt reputacji za ten post!
A tak wygląda funkcja:
Kod PHP:
function ReputationInfo_postbit(&$post)
{
global $mybb;
if($mybb->settings['ReputationPostInfo_onoff'] == 1)
{
global $db;
$query=$db->query('SELECT * FROM '.TABLE_PREFIX.'reputation WHERE pid ='.$post['pid']);
$repka = $result=$db->fetch_array($query);
if ($repka == 1)
{
$post['message'].='<div class = "reputation_info">Użytkownik dostał punkt reputacji za ten post!</div>';
}
elseif ($repka > 1)
{
$post['message'].='<div class = "reputation_info">Użytkownik dostał więcej niż 1 punkt reputacji za ten post!</div>';
}
}
}
Help me please
Ani to ani to. Wyświetla tylko:
Cytat:Użytkownik dostał więcej niż 1 punkt reputacji
Tyle razy ile dostał reputacji. Więc zostaje przy starym kodzie na razie. ni kija nie wiem jak to zrobić :/ Myślę nad tym 2 dni..
Jak będę miał jutro czas to ci to zrobię
Dlaczego pętla? Po co ona??
Wystarczy obliczyć liczbę, więc
Kod PHP:
function ReputationInfo_postbit(&$post)
{
global $mybb, $db;
if($mybb->settings['ReputationPostInfo_onoff'] == 1)
{
$query = $db->query('SELECT rid FROM '.TABLE_PREFIX.'reputation WHERE pid ='.$post['pid']);
$repka = $db->num_rows($query);
if ($repka == 1)
{
$post['message'].='<div class = "reputation_info">Użytkownik dostał punkt reputacji za ten post!</div>';
}
elseif ($repka > 1)
{
$post['message'].='<div class = "reputation_info">Użytkownik dostał więcej niż 1 punkt reputacji za ten post!</div>';
}
}
}
Do tego to jest i tak źle zbudowane, bo dla każdego posta tworzy zapytanie do bazy, a tak nie powinno się dziać. Trzeba by sprawdzać, czy w ogóle jest jakaś reputka, albo zbierać wszystkie posty do jednego zapytania.
Dziękuje Matslom, bo działa!
Na razie zostaje przy tym pluginie, ale może kiedyś napisze nowy.