[ Aleksandar Klickovic @ 05.09.2017. 04:39 ] @
Ćao Drugari, Mozgam celu noć, testiram, čekiram, ali upao sam o neki loop, ne vidim gde je bug, treba mi drugo mišljenje.. Situacija je sledeća: Kada se novi korisnik registruje, potrebno je da upLine (do 6 nivoa, ako postoje) dobije neki referal bonus. E sad registracija radi skroz, dobijem novog korisnika, vrati mi novi ID (odu email notifikacije itd itd), ali deo sa unosom transakcija za upline jednostavno ne prolazi. Pozivam funkciju ovako Code: $oDb->refBonus($newID, $wallet, 0, $newID); A sama funkcija, koja se nalazi u db.class (klasa koja ima celokupan CRUD i još neke stvari za funkcionisanje) koja radi sve kako treba, izgleda ovako Code: /* Refferal Bonus */ function refBonus ($userID, $tAmount, $n = 0, $origID){ $rBonus = 0; if ($n>5) return; switch($n): case 0: $rBonus = $tAmount * 0.07; break; case 1: $rBonus = $tAmount * 0.03; break; case 2: $rBonus = $tAmount * 0.02; break; case 3: $rBonus = $tAmount * 0.01; break; case 4: $rBonus = $tAmount * 0.01; break; case 5: $rBonus = $tAmount * 0.01; break; endswitch; $sql = "SELECT pId FROM korisnici WHERE id = '" . $userID ."'"; $res3 = $this->link->query($sql); if ($this->link->error) { $this->log_db_errors($this->link->error, $sql); return false; } $oParent = $res3->fetch_object(); $parentID = $oParent->pId; $transaction_data = array( 'uId' => $parentID, 'tAmount' => $rBonus, 'tRefid' => $origID, 'type' => 'Refferal Bonus', 'status' => 'Approved' ); $database = $this->link->insert( 'transactions', $transaction_data ); if ($this->link->error) { $this->log_db_errors($this->link->error, $database); return false; } $this->refBonus($parentID, $tAmount, $n + 1, $origID); } Poenta je da svaki viši nivo dobije odredjenu sumu (procenat od originalne visine uplate $tAmount) i da ima i ID od novog korisnika (zbog pracenja) to je ovo $origID koji bi trebalo da se provlači kroz sve nivoe isto. Ne znam da li je potrebno ali je ovo insert funkcija koja je iznad u istoj klasi Code: public function insert($table, $variables = array()) { self::$counter++; //Make sure the array isn't empty if (empty($variables)) { return false; } $sql = "INSERT INTO " . $table; $fields = array(); $values = array(); foreach ($variables as $field => $value) { $fields[] = $field; $values[] = "'" . $value . "'"; } $fields = ' (' . implode(', ', $fields) . ')'; $values = '(' . implode(', ', $values) . ')'; $sql .= $fields . ' VALUES ' . $values; $query = $this->link->query($sql); if ($this->link->error) { //return false; $this->log_db_errors($this->link->error, $sql); return false; } else { return true; } } Ako ima ovde neki PHP-ovac da baci pogled gde sam napravio grešku, izvrteo sam dve tri varijante, ova mi deluje logično, ali ne znam da li je problem u semantici, logici ili čemu. U svakom slučaju, hvala unapred. |