By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
425,677 Members | 1,877 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 425,677 IT Pros & Developers. It's quick & easy.

class does not return a value

P: n/a
My first time working with a PHP class, and after 6 hours of working out the
kinks I am unable to return a value from the class, so now I appeal to the
general audience what on earth did I do wrong this time?

This is the code the retrieves the values:

if (($hasRegistered || $hasPreRegistered) && !empty($uplinenumber)) {
// CHECK TO SEE IF UPLINE NUMBER IS A VALID NUMBER
$regNumberGenerator = new RegNumberGenerator($uplinenumber, $email,
$dbConn);
if (!$regNumberGenerator->isValidUplinenumber()) {
$hasRegistered = 0; $hasPreRegistered = 0;
$errorMsg .= $font . '<font color=cc0000><li>Du måste skicka geltig
upline nr., takk!' .
'</li></font></font><p>';
// ERROR PRODUCED UPON REG OR PRE-REG MODE - FORM WILL BE REPOPULATED BY
$_POST ELEMENTS
// NO NEED FOR DB ANY FURTHER

@mysql_free_result($query); // FREE RESOURCES BUT SUPPRESS WARNINGS IF
NON-SELECT QUERY
mysql_close($dbConn); // CLOSE DB CONNECTION
} else {
$registrationNumber = $regNumberGenerator->getRegNumber();
$registrationNumberForUsername =
$regNumberGenerator->getRegNumberDecDigits($registrationNumber);
$registrationNumberForEmail =
$regNumberGenerator->getRegNumberDecDigits($registrationNumber, '-');
}
}

And here is the class itself:

/*--------------------------------------------------------------------------
-----------------
Class RegNumberGenerator - this class consists of the following:

1. Method isValidUplinenumber - Boolean return if the upline number is a
valid one
according to a db call

2. Method getRegNumber - String method to return the hexidecimal
registration number
3. Method getRegNumberDecDigits - String method to return the reg number
as decimal digits
4. Private method hasFoundNextAvailRegNumber - Boolean method that
searches for the inputted
number as a registration
number in the db
5. Private method incrUplinenumber - String method to increase
next-to-last digit of
upline number by 1 (to get to the
next "leg")

Input parameters:

1. $dbConn - your database connection resource link
2. $uplinenumber - your upline number
3. $email - your email address
--------------------------------------------------------------------------
------------------*/
class RegNumberGenerator {

// STRING TO HOUSE GENERATED REGISTRATION NUMBER BASED ON UPLINE #
var $paddedUplinenumber = '';
var $regNumber = '';
var $canStopMethod = 0; // BOOLEAN TO DETERMINE TO STOP SEARCHING FOR
NEXT VALID REG #

// CONSTRUCTOR
function RegNumberGenerator($uplinenumber, $email, $dbConn) {
$this->uplinenumber = $uplinenumber;
$this->email = $email;
$this->dbConn = $dbConn;
}

// BOOLEAN METHOD
function isValidUplinenumber() {

// CHECK TO SEE IF SINGLE-DIGIT UPLINENUMBER IS NUMERIC VALUE ONLY
if (strlen($this->uplinenumber) == 0 ||
(strlen($this->uplinenumber) == 1 &&
!is_numeric($this->uplinenumber))
) {
$canStopMethod = 1;
return 0;
}

// CHECK TO SEE IF UPLINENUMBER IS VALID (IS HEXADECIMAL NUMBER STRING)
if (preg_match('/[^a-fA-F0-9]+/i', $this->uplinenumber) &&
!$canStopMethod) {
$canStopMethod = 1;
return 0;
}

// CHECK TO SEE THAT IF THIS IS A TOP UPLINENUMBER THAT IT IS A VALID
TOP UPLINE NUMBER IN DB
if (strlen($this->uplinenumber) == 1 && !$canStopMethod) {
$sql = 'SELECT nnet_user_email FROM nnet_top_uplinenumber ' .
'WHERE nnet_user_uplinenumber = ' . (int)$this->uplinenumber;
$query = mysql_query($sql, $this->dbConn) or die('Could not perform
query');
if (mysql_num_rows($query) == 0) {
$canStopMethod = 1;
return 0; // NOT VALID TOP UPLINENUMBER
}
}

// CHECK TO SEE IF SINGLE-DIGIT UPLINENUMBER WAS ENTERED BY A TOP USER
(RAGNAR, DAVID, ETC)
if (strlen($this->uplinenumber) == 1 && !$canStopMethod) {
if ($row = mysql_fetch_row($query)) {
$topUserEmail = $row[0]; // OBTAIN TOP USER EMAIL ADDRESS FOR
COMPARISON
$sql = 'SELECT nnet_userid FROM nnet_usermetadata ' .
'WHERE nnet_user_email = \'' . $this->email . '\' ' .
' AND nnet_user_registrationnumber = \'' . $this->uplinenumber
.. '\' ';
$query = mysql_query($sql, $this->dbConn) or die('Could not perform
query #2');
if (mysql_num_rows($query) > 0) {
// THEY ARE A TOP USER BUT ALREADY FOUND IN USERMETADATA - RETURN
FALSE
$canStopMethod = 1;
return 0;
} elseif (strcmp($topUserEmail, $this->email) == 0) {
// THEY ARE A TOP USER NOT FOUND YET IN USERMETADATA - SET REG # TO
UPLINE # & SET TRUE
$regNumber = $this->uplinenumber;
$canStopMethod = 1;
return 1;
}
}
}

// CHECK TO SEE IF THIS IS SOMEONE'S REGISTRATION NUMBER
if (!$canStopMethod &&
!$this->hasFoundNextAvailRegNumber($this->uplinenumber)) {
$canStopMethod = 1;
return 0;
}

// THIS IS SOMEONE'S REG # - WE NOW HAVE TO CALCULATE THE NEXT AVAILABLE
LEG
if (!$canStopMethod) {
$paddedUplinenumber .= $this->uplinenumber . '11';
if (!$this->hasFoundNextAvailRegNumber($paddedUplinenumber) ) {
$canStopMethod = 1;
return 0;
}
// KEEP INCREASING NEXT_TO_LAST DIGIT BY 1 UNTIL NO LONGER FOUND IN DB
AS REG #
while ($this->hasFoundNextAvailRegNumber($paddedUplinenumber) )
$paddedUplinenumber = $this->incrUplinenumber($paddedUplinenumber);
$regNumber = $paddedUplinenumber;
return 1;
}
}
// STRING METHOD
function incrUplinenumber($myUplinenumber) {
$hexDigit = substr($myUplinenumber, strlen($myUplinenumber) - 2, 1); //
NEXT_TO_LAST DIGIT
$nextDecDigit = (int)hexdec($hexDigit) + 1;
return substr($myUplinenumber, 0, strlen($myUplinenumber) - 2) .
dechex($nextDecDigit) .
substr($myUplinenumber, strlen($myUplinenumber) - 1, 1);
}
// BOOLEAN METHOD
function hasFoundNextAvailRegNumber($paddedUplinenumber) {
global $dbConn;
$sql = 'SELECT nnet_userid FROM nnet_usermetadata ' .
'WHERE nnet_user_registrationnumber = \'' . $paddedUplinenumber .
'\' ';
$query = mysql_query($sql, $dbConn) or die('Could not perform query
#3');
if (mysql_num_rows($query) == 0) {
// NO ONE HAS THIS UPLINE # AS THEIR REG # - INVALID UPLINE NUMBER
return 0;
} else {
return 1;
}
}
// STRING METHOD TO RETURN HEX REG NUMBER
function getRegNumber() {
return $regNumber;
}

// STRING METHOD TO RETURN DECIMAL-DIGITS REG NUMBER (NOT TRUE NUMBER)
WITH OPTIONAL CHAR
// DIVIDER

function getRegNumberDecDigits($myRegNumber, $divider = '') {
for ($i = 0; $i < strlen($myRegNumber); $i++)
$decRegNumber .= '' . hexdec(substr($myRegNumber, $i, 1)) . $divider;
return $decRegNumber;
}
}
//---END OF
CLASS-----------------------------------------------------------------------
----

Phil
Jul 16 '05 #1
Share this Question
Share on Google+
3 Replies


P: n/a
Phil Powell <so*****@erols.com> wrote:
My first time working with a PHP class, and after 6 hours of working out
the kinks I am unable to return a value from the class, so now I appeal to
the general audience what on earth did I do wrong this time?
[snip]
// STRING METHOD TO RETURN HEX REG NUMBER
function getRegNumber() {
return $regNumber;
}


Shouldn't this be:

function getRegNumber() {
return $this->regNumber;
}

HTH;
JOn
Jul 16 '05 #2

P: n/a
Yep, figured that one out on my own. I can't find any online documentation
on PHP classes, where should I look? www.php.net is Macedonian to me at
times.

Phil

"Jon Kraft" <jo*@jonux.co.uk> wrote in message
news:bj************@ID-175424.news.uni-berlin.de...
Phil Powell <so*****@erols.com> wrote:
My first time working with a PHP class, and after 6 hours of working out
the kinks I am unable to return a value from the class, so now I appeal to the general audience what on earth did I do wrong this time?


[snip]
// STRING METHOD TO RETURN HEX REG NUMBER
function getRegNumber() {
return $regNumber;
}


Shouldn't this be:

function getRegNumber() {
return $this->regNumber;
}

HTH;
JOn

Jul 16 '05 #3

P: n/a
Phil Powell <so*****@erols.com> wrote:
Yep, figured that one out on my own. I can't find any online
documentation on PHP classes, where should I look? www.php.net is
Macedonian to me at times.


Google is generally a good start ;)
Here is a good article covering classes in PHP:

Part 1:
http://www.zend.com/zend/tut/tutorial-johnson.php
Part2:
http://www.zend.com/zend/tut/tutorial-johnson2.php

HTH;
JOn
Jul 16 '05 #4

This discussion thread is closed

Replies have been disabled for this discussion.