Dołącz do zespołu ekspertów! Backend lub Frontend Developer?

Sprawdź najnowsze oferty pracy naszego partnera - 8lines.io!

Limit użycia danej funkcji

PHP/MYSQL  Założony przez  Ecosse.

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:

                // 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!
Pomoc poza forum - odpłatnie.
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.
$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?

$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
@Matslom, z twoim kodem array nie działa. Wcześniej użyłem coś w stylu (nie pamiętam już dokładnie):

if (!$tickets_l)
$useruid_l = array(); 

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

@Supryk, 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!
Pomoc poza forum - odpłatnie.



Użytkownicy przeglądający ten wątek: