class does not return a value

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Phil Powell

    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 (($hasRegistere d || $hasPreRegister ed) && !empty($uplinen umber)) {
    // CHECK TO SEE IF UPLINE NUMBER IS A VALID NUMBER
    $regNumberGener ator = new RegNumberGenera tor($uplinenumb er, $email,
    $dbConn);
    if (!$regNumberGen erator->isValidUplinen umber()) {
    $hasRegistered = 0; $hasPreRegister ed = 0;
    $errorMsg .= $font . '<font color=cc0000><l i>Du m&#229;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_res ult($query); // FREE RESOURCES BUT SUPPRESS WARNINGS IF
    NON-SELECT QUERY
    mysql_close($db Conn); // CLOSE DB CONNECTION
    } else {
    $registrationNu mber = $regNumberGener ator->getRegNumber() ;
    $registrationNu mberForUsername =
    $regNumberGener ator->getRegNumberDe cDigits($regist rationNumber);
    $registrationNu mberForEmail =
    $regNumberGener ator->getRegNumberDe cDigits($regist rationNumber, '-');
    }
    }

    And here is the class itself:



    /*--------------------------------------------------------------------------
    -----------------
    Class RegNumberGenera tor - this class consists of the following:

    1. Method isValidUplinenu mber - 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 getRegNumberDec Digits - String method to return the reg number
    as decimal digits
    4. Private method hasFoundNextAva ilRegNumber - Boolean method that
    searches for the inputted
    number as a registration
    number in the db
    5. Private method incrUplinenumbe r - 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 RegNumberGenera tor {

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

    // CONSTRUCTOR
    function RegNumberGenera tor($uplinenumb er, $email, $dbConn) {
    $this->uplinenumber = $uplinenumber;
    $this->email = $email;
    $this->dbConn = $dbConn;
    }

    // BOOLEAN METHOD
    function isValidUplinenu mber() {

    // CHECK TO SEE IF SINGLE-DIGIT UPLINENUMBER IS NUMERIC VALUE ONLY
    if (strlen($this->uplinenumber ) == 0 ||
    (strlen($this->uplinenumber ) == 1 &&
    !is_numeric($th is->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_upline number ' .
    'WHERE nnet_user_uplin enumber = ' . (int)$this->uplinenumber ;
    $query = mysql_query($sq l, $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_usermetada ta ' .
    'WHERE nnet_user_email = \'' . $this->email . '\' ' .
    ' AND nnet_user_regis trationnumber = \'' . $this->uplinenumber
    .. '\' ';
    $query = mysql_query($sq l, $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($topUse rEmail, $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 (!$canStopMetho d &&
    !$this->hasFoundNextAv ailRegNumber($t his->uplinenumber )) {
    $canStopMethod = 1;
    return 0;
    }

    // THIS IS SOMEONE'S REG # - WE NOW HAVE TO CALCULATE THE NEXT AVAILABLE
    LEG
    if (!$canStopMetho d) {
    $paddedUplinenu mber .= $this->uplinenumber . '11';
    if (!$this->hasFoundNextAv ailRegNumber($p addedUplinenumb er)) {
    $canStopMethod = 1;
    return 0;
    }
    // KEEP INCREASING NEXT_TO_LAST DIGIT BY 1 UNTIL NO LONGER FOUND IN DB
    AS REG #
    while ($this->hasFoundNextAv ailRegNumber($p addedUplinenumb er))
    $paddedUplinenu mber = $this->incrUplinenumb er($paddedUplin enumber);
    $regNumber = $paddedUplinenu mber;
    return 1;
    }
    }


    // STRING METHOD
    function incrUplinenumbe r($myUplinenumb er) {
    $hexDigit = substr($myUplin enumber, strlen($myUplin enumber) - 2, 1); //
    NEXT_TO_LAST DIGIT
    $nextDecDigit = (int)hexdec($he xDigit) + 1;
    return substr($myUplin enumber, 0, strlen($myUplin enumber) - 2) .
    dechex($nextDec Digit) .
    substr($myUplin enumber, strlen($myUplin enumber) - 1, 1);
    }


    // BOOLEAN METHOD
    function hasFoundNextAva ilRegNumber($pa ddedUplinenumbe r) {
    global $dbConn;
    $sql = 'SELECT nnet_userid FROM nnet_usermetada ta ' .
    'WHERE nnet_user_regis trationnumber = \'' . $paddedUplinenu mber .
    '\' ';
    $query = mysql_query($sq l, $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 getRegNumberDec Digits($myRegNu mber, $divider = '') {
    for ($i = 0; $i < strlen($myRegNu mber); $i++)
    $decRegNumber .= '' . hexdec(substr($ myRegNumber, $i, 1)) . $divider;
    return $decRegNumber;
    }
    }
    //---END OF
    CLASS-----------------------------------------------------------------------
    ----

    Phil


  • Jon Kraft

    #2
    Re: class does not return a value

    Phil Powell <soazine@erols. com> wrote:
    [color=blue]
    > 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?[/color]

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

    Shouldn't this be:

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

    HTH;
    JOn

    Comment

    • Phil Powell

      #3
      Re: class does not return a value

      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" <jon@jonux.co.u k> wrote in message
      news:bjhivj$jdv 2f$2@ID-175424.news.uni-berlin.de...[color=blue]
      > Phil Powell <soazine@erols. com> wrote:
      >[color=green]
      > > 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[/color][/color]
      to[color=blue][color=green]
      > > the general audience what on earth did I do wrong this time?[/color]
      >
      > [snip]
      >[color=green]
      > > // STRING METHOD TO RETURN HEX REG NUMBER
      > > function getRegNumber() {
      > > return $regNumber;
      > > }[/color]
      >
      > Shouldn't this be:
      >
      > function getRegNumber() {
      > return $this->regNumber;
      > }
      >
      > HTH;
      > JOn[/color]


      Comment

      • Jon Kraft

        #4
        Re: class does not return a value

        Phil Powell <soazine@erols. com> wrote:
        [color=blue]
        > 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.[/color]

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

        Part 1:

        Part2:


        HTH;
        JOn

        Comment

        Working...