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">
</td>
</tr>
</table><? } ?>
<? require 'footer.php'; ?>
to see it in action visit
http://www.crazyexchange.net/join.php . Register if you have to.