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
$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
/* 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
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.