Page 1 of 1

Referral system question

Posted: Thu Mar 17, 2005 4:12 pm
by s.dot
Ah, complexity.

This is my first time dealing with generating a referral system. So it seems majorly complex to me. However with some of you it may be simple. So I will post my problem.

I have a referral table:

referrer (the person who is doing the referring)
referree (the person who got referred)
level (what level of referral it is)

Here is my code:

Code: Select all

// Level 1 referrals //
$getlevel1sql = "SELECT id FROM users WHERE username = '$lowerusername'"; // $lowerusername is coming from a value on the signup page //
$getlevel1query = mysql_query($getlevel1sql);
$getlevel1array = mysql_fetch_array($getlevel1query);
if(mysql_num_rows($getlevel1query) > 0){
$referralsql = "INSERT INTO referrals (referrer, referree, level) VALUES ('$refid', '".$getlevel1array['id']."', '1')"; // $refid is defined in the URL
mysql_query($referralsql) or die(mysql_error()); }

// Level 2 referrals //
$getlevel2sql = "SELECT referrer FROM referrals WHERE referree = '$refid'";
$getlevel2query = mysql_query($getlevel2sql) or die(mysql_error());
if(mysql_num_rows($getlevel2query) > 0){
$getlevel2array = mysql_fetch_array($getlevel2query);
$referralsql2 = "INSERT INTO referrals (referrer, referree, level) VALUES('".$getlevel2array['referrer']."', '".$getlevel1array['id']."', '2')";
mysql_query($referralsql2) or die(mysql_error()); }

// Level 3 referrals //
$getlevel3sql = "SELECT referrer FROM referrals WHERE referree = '".$getlevel2array['referrer']."'";
$getlevel3query = mysql_query($getlevel3sql) or die(mysql_error());
if(mysql_num_rows($getlevel3query) > 0){
$getlevel3array = mysql_fetch_array($getlevel3query);
$referralsql3 = "INSERT INTO referrals (referrer, referree, level) VALUES('".$getlevel3array['referrer']."', '".$getlevel1array['id']."', '3')";
mysql_query($referralsql3) or die(mysql_error()); }
The problem is, all level 3 referrals are showing up on level two. And I don't know why.

Posted: Thu Mar 17, 2005 5:06 pm
by shiznatix
after just a quick glance it dosnt seam like you are seperating the levels?
shouldnt you do somtin like

Code: Select all

if ($referal_level == 1){
//level 1 referal sql stuff
}

if ($referal_level == 2){
//level 2 referal sql stuff
}

if ($referal_level == 3){
//level 3 referal sql stuff
}
i may be wrong i just took a quick look at your code

Posted: Thu Mar 17, 2005 5:14 pm
by John Cartwright
shiznatix wrote:after just a quick glance it dosnt seam like you are seperating the levels?
shouldnt you do something like

Code: Select all

if ($referal_level == 1){
//level 1 referal sql stuff
}

if ($referal_level == 2){
//level 2 referal sql stuff
}

if ($referal_level == 3){
//level 3 referal sql stuff
}
i may be wrong i just took a quick look at your code
nah uh!!! switch()

Posted: Thu Mar 17, 2005 9:19 pm
by s.dot
Well the thing is this is where they are signing up from.

There wouldn't be a referral level #

It's just the person who directly referred them would be Level 1 referrer

The person who referred the Level 1 referrerr would be Level 2 referrer, and

The person who referred Level 2 referrer would be level 3 referrer

And the person who was referred on all 3 levels, would be the person signing up.

I know that sounds complicated but I can't really explain it much better.

Posted: Thu Mar 17, 2005 10:51 pm
by infolock
ok, i can understand the concept of what you are wanting to do as far as refering goes, but what i can't seem to grasp is what exactly your code is suposed to do.

it has almost no bareing on what you are trying to achieve (at least i can't see that it does).

could you post the rest of the code that belongs in that script? it might make our jobs of trying to understand a little easier

Posted: Thu Mar 17, 2005 11:14 pm
by s.dot
Okay, here's the whole join page.
Note that what you do not see here is my header script which assigns a $refid everytime someone visits the page to a current member.
So there will ALWAYS be a $refid.

Also, the script does have baring on what I am trying to do because the level 1 and 2 referrals work flawlessly, but the level 3 referrals are ending up on level 2.

Code: Select all

<? require 'header.php';

$check = "false";

if($action == "signup"){
$username = mysql_real_escape_string(strip_tags($_POST['username']));
$password = mysql_real_escape_string(strip_tags($_POST['password']));
$password = mysql_real_escape_string(strip_tags($_POST['password2']));
$email = mysql_real_escape_string(strip_tags($_POST['email']));
$acode = mysql_real_escape_string(strip_tags($_POST['acode']));

$check = "true";

if(!$username || !$password || !$password2 || !$email){ echo "You must fill in all of the forms.<BR>"; $check = "false"; }
if($password != $password2){ echo "Your passwords do not match.<BR>"; $check = "false"; }

$sql2 = "SELECT id FROM users WHERE username = '$username'";
$query2 = mysql_query($sql2);

if(mysql_num_rows($query2) > 0){ echo "This username has already been chosen, choose another.<BR>"; $check = "false"; }

$sql3 = "SELECT id FROM users WHERE email = '$email'";
$query3 = mysql_query($sql3);

if(mysql_num_rows($query3) > 0){ echo "This email is already in use.  You are only allowed one account per person.<BR>"; $check = "false"; }
if(!eregi("^[_\.0-9a-z-]+$", $username)){ echo "Your username may only consist of letters and numbers.<BR>"; $check = "false"; }
if(!eregi("^[_\.0-9a-z-]+$", $password)){ echo "Your password may only consist of letters and numbers.<BR>"; $check = "false"; }
if(!eregi("^(.+)@(.+)\\.(.+)$", $email)){ echo "Your e-mail address appears to be invalid.<BR>"; $check = "false"; }

if($check != "false"){
$lowerusername = strtolower($username);
$acode = rand(100000, 999999);
$timesignedup = time();
$password3 = md5($password);
$sql4 = "INSERT INTO users (username, password, email, acode, timesignedup, activated, premium) VALUES('$lowerusername', '$password3', '$email', '$acode', '$timesignedup', 'n', 'n')";
mysql_query($sql4) or die(mysql_error());

// Level 1 referrals //
$getlevel1sql = "SELECT id FROM users WHERE username = '$lowerusername'";
$getlevel1query = mysql_query($getlevel1sql);
$getlevel1array = mysql_fetch_array($getlevel1query);
if(mysql_num_rows($getlevel1query) > 0){
$referralsql = "INSERT INTO referrals (referrer, referree, level) VALUES ('$refid', '".$getlevel1array['id']."', '1')";
mysql_query($referralsql) or die(mysql_error()); }

// Level 2 referrals //
$getlevel2sql = "SELECT referrer FROM referrals WHERE referree = '$refid'";
$getlevel2query = mysql_query($getlevel2sql) or die(mysql_error());
if(mysql_num_rows($getlevel2query) > 0){
$getlevel2array = mysql_fetch_array($getlevel2query);
$referralsql2 = "INSERT INTO referrals (referrer, referree, level) VALUES('".$getlevel2array['referrer']."', '".$getlevel1array['id']."', '2')";
mysql_query($referralsql2) or die(mysql_error()); }

// Level 3 referrals //
$getlevel3sql = "SELECT referrer FROM referrals WHERE referree = '".$getlevel2array['referrer']."'";
echo $getlevel3sql; ?><BR><?
$getlevel3query = mysql_query($getlevel3sql) or die(mysql_error());
if(mysql_num_rows($getlevel3query) > 0){
$getlevel3array = mysql_fetch_array($getlevel3query);
echo $getlevel3array['referrer']; ?><BR><?
$referralsql3 = "INSERT INTO referrals (referrer, referree, level) VALUES('".$getlevel3array['referrer']."', '".$getlevel1array['id']."', '3')";
mysql_query($referralsql3) or die(mysql_error()); }

$recipient = $email;
$subject = "Activate Your CrazyExchange Account!";
$email_body = "Hello, $lowerusername<BR>\r\n
There's just one last step to completing your CrazyExchange.net registration.  Please click on this activation link.<BR>\r\n
<a href='http://www.crazyexchange.net/activate.php?username=$lowerusername&acode=$acode'>http://www.crazyexchange.net/activate.php?username=$lowerusername&acode=$acode</a>.<BR>\r\n
<B>-CrazyExchange Staff-</B>";
$additional_headers = "From: scrotaye@crazyexchange.net\r\n";
$additional_headers .="Content-type: text/html; charset=iso-8859-1\r\n";
if(mail($recipient, $subject, $email_body, $additional_headers)) {
print("An email has been sent to <B>$email</B>.  Please check your email and click on the activation link.  You have 72 hours to activate your account."); } ELSE {
print("There has been an error.  Please try again later."); } } }

if($check == "false"){ ?>
<table width="100%" cellspacing="0" cellpadding="3" border="0">
	<tr>
		<td width="50%" valign="top">
		<h3>Join Now!</h3>
		<form action="join.php?refid=<? echo $refid; ?>" method="post">
		<input type="hidden" name="action" value="signup">
		<B>Username</B><BR>
		<input type="text" name="username" size="20" style="border: solid 1px #000000" value="<? echo $lowerusername; ?>"><BR>
		<B>Password</B><BR>
		<input type="password" name="password" size="20" style="border: solid 1px #000000" value="<? echo $password; ?>"><BR>
		<B>Confirm</B><BR>
		<input type="password" name="password2" size="20" style="border: solid 1px #000000" value="<? echo $password2; ?>"><BR>
		<B>E-Mail</B><BR>
		<input type="text" name="email" size="20" style="border: solid 1px #000000" value="<? echo $email; ?>"><BR><BR>
		<B>Referred By:</B> UserID # <? echo $refid; ?><BR><BR>
		<input type="submit" value="Join!">
		</form>
		</td>
		<td width="50%" valign="top">
		<h3>Join free and get these features:</h3>
		<p><li>4:3 surfing ratio
		<li>20 second timer
		<li>25 credits per 100 pages surfed
		<li>Promote 10 URLs
		<li>Earn 5% of your referrals credits
		<li>Chances to win credits playing random JackPot games!</p>
		<p>CrazyExchange is simply the best manual traffic exchange website on the internet.  Improve your marketing reach by signing up.</p>
		</td>
	</tr>
	<tr>
		<td colspan="2">&nbsp;
		</td>
	</tr>
</table><? } ?>
<? require 'footer.php'; ?>
to see it in action visit http://www.crazyexchange.net/join.php . Register if you have to.