473,503 Members | 3,045 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

class does not return a value

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
3 4504
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
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
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 thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

20
1912
by: syd | last post by:
In my project, I've got dozens of similar classes with hundreds of description variables in each. In my illustrative example below, I have a Library class that contains a list of Nation classes. ...
9
1385
by: Erick Sasse | last post by:
How can I make a method that takes a class (not an instance) as parameter? And I want this parameter to accept only Windows Form classes, ie classes that inherits System.Windows.Forms.Form. ...
9
8287
by: craig.overton | last post by:
All, I am currently developing an FTP class in VB.NET. It's kid tested, mother approved when trying to access an FTP Server on a Windows box meaning I can connect, run commands, upload and...
10
10185
by: mast2as | last post by:
Is it possible to limit a template class to certain types only. I found a few things on the net but nothing seems to apply at compile time. template <typename T> class AClass { public:...
3
1583
by: Miro | last post by:
First off...thanks in advance for getting me this far. Sorry for all these class posts but im having a heck of a time here trying to get something to work, and have finally got it to work (...
6
2745
by: Erick | last post by:
I've created a class called Procs and a collection class called Processes which uses a hastable object to store the Procs. Now i want to enumerate with the "For each" to extract all the Procs in...
3
4069
by: ryan.gilfether | last post by:
I have a problem that I have been fighting for a while and haven't found a good solution for. Forgive me, but my C++ is really rusty. I have a custom config file class: class ConfigFileValue...
20
4002
by: tshad | last post by:
Using VS 2003, I am trying to take a class that I created to create new variable types to handle nulls and track changes to standard variable types. This is for use with database variables. This...
6
391
by: Gaijinco | last post by:
I'm trying to do a template class Node. My node.hpp is: #ifndef _NODE_HPP_ #define _NODE_HPP_ namespace com { namespace mnya { namespace carlos { template <typename T>
16
3407
by: John Doe | last post by:
Hi, I wrote a small class to enumerate available networks on a smartphone : class CNetwork { public: CNetwork() {}; CNetwork(CString& netName, GUID netguid): _netname(netName),...
0
7193
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
7067
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
7316
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...
1
6975
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...
0
5562
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing,...
0
3160
by: TSSRALBI | last post by:
Hello I'm a network technician in training and I need your help. I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs. The...
0
3148
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
0
1495
by: 6302768590 | last post by:
Hai team i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated ...
0
371
bsmnconsultancy
by: bsmnconsultancy | last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.