Webboard

Pełna wersja: Limit użycia danej funkcji
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Witajcie, próbuję zrobić limit kupowania losów w dodatku do NewPoints. Myślę, że jestem na dobrej drodze ale to ocenicie.

Chodzi o to że mam loterię, która losuje numer wygranego losu, a los kupuje się za kredyty NewPoints. I wszystko jest okej tylko chodzi o to że każdy może kupować dowolną ilość losów, dzięki czemu zwiększa swoją szanse na wygranie.

Chciałbym teraz ograniczyć ilość kupowanych losów do ustalonej liczby (np. 1).

Napisałem taki kod i wrzucam go do pluginu na pewno w dobrym miejscu:

Kod PHP:
                // LIMIT
                
$limit 1;
                
$query $db->simple_select('newpoints_lottery_tickets','*','uid='.$mybb->user['uid'].' AND ticket_id='.intval($ticket_id));
                while(
$tickets_l $db->fetch_array($query))
                {
                
$usertickets_l $tickets_l['ticket_id'];
                
$useruid_l $tickets_l['uid'];
                }
                    
// Jeżeli ilość kupionych losów jest równa lub większa niż limit -> ERROR
                    
if(count($useruid_l) >= $limit)
                    {
                        
error($lang->newpoints_lottery_limit);
                    }
                    else
                    {
                                        
// Tutaj funkcja kupienia losu 

Kod jakby wcale nie działa, wciąż kupuje dowolną ilość biletów. Udało mi się przed chwilą zrobić że po kupieniu jednego losa blokowało możliwość dalszego kupowania i wyświetlało error z langu newpoints_lottery_limit.

Teraz już się zgubiłem i jestem znów w kropce :/

Bardzo proszę o pomoc w dokończeniu kodu. Z góry dzięki!
Kod PHP:
while($tickets_l $db->fetch_array($query))
                {
                
$usertickets_l $tickets_l['ticket_id'];
                
$useruid_l $tickets_l['uid'];
                } 
zawsze przypisujesz jeden wynik do tych dwóch zmiennych, nawet jeżeli zapytanie zwróci 200.
Kod PHP:
$usertickets_l = array();
$useruid_l = array();
while(
$tickets_l $db->fetch_array($query))
                {
                
$usertickets_l[] = $tickets_l['ticket_id'];
                
$useruid_l[] = $tickets_l['uid'];
                } 
to każdy bilet nie ma innego id?
nawet jak kupi następny nie będzie mial innego id?

Kod PHP:
$query $db->simple_select('newpoints_lottery_tickets','*','uid='.$mybb->user['uid'].'');
if(
$db->num_rows($query) > 0)
{
error("Już kupiles bilet");

w takiej sytuacji user miał by jeden ticket dopóki dopóty go nie wykorzysta
, z twoim kodem array nie działa. Wcześniej użyłem coś w stylu (nie pamiętam już dokładnie):

Kod PHP:
if (!$tickets_l)
$useruid_l = array(); 

Ale działało tylko dla użytkownika o UID=1 (czyli mnie).

, tak wygląda zapytanie z bazy danych:

[Obrazek: m33Qtvh.png]

Z twoim kodem wszystko działa tak jak powinno, a jest z 5 linijek krótszy. Cóż, nie mam jeszcze zbyt dużej wiedzy na temat PHP. Dzięki!