Jump to content
php.lv forumi

Affiliate skripts


Morphius

Recommended Posts

Cenšos uzkodēt refferal sistēmu, bet kaut kas pietrūkst :D

Primitīva sistēma ir gatava, kad zem linka /?affid=1 saitā ieiet lietotājs tad datubāzē tiek ierakstīts:

id - 7

affid - 10

userid - 0

ip - 127.0.0.1

 

ja šis lietotājs reģistrējas tad datubāzē tiek veikts ieraksts:

id - 8

affid - 10

userid - 12

ip - NULL

 

Vēlme uzlabot šo sistēmu sekojoši! Ja piereģistrējas jebkāds dzimums, tad affiliate kontā pieksaita pieņemsim 0.5 punkti, ja vīrietis pievieno foto profilā, tad vēl +0.5, ja sieviete pievieno foto, tad +1. Šeit protams ka var izvērsties, tip ja tiek pievienots apraksts par sevi, tad +0.1 utt, nu bet tās jau ir formalitātes.

Tātad kas man nesanāk...

Nesanāk punktu uzkaite! Mēģināju darīt sekojoši:

$points=0;
$result=mysql_query("SELECT * FROM aff_referals WHERE affid='10'");
$row=mysql_fetch_assoc($result);
//Tiek izvilkti dati saistībā ar affid 10
//Tālāk, manuprāt vajadzētu pielietot ciklu
while ($row=mysql_fetch_assoc($result))
{
  //Tagad vajadzētu atrast jūzeri ar id 12 un pārbaudīt kas par dzimumu un vai ir pievienots foto
  $result2=mysql_query("SELECT * FROM users WHERE id='$row[userid]'");
  $row2=mysql_fetch_assoc($result2);
  if($row2["gender"] == "F")
  {
     if($row2["pictures"] > 0)
     {
        $points+1;
     }
  }
}

Izvadot datus man tāpat rāda $points=0...droši vien kaut kas te nav pareizi...kāds var palabot? Varbūt fiškai pavisam citai jābūt?

Vēl varu piebilst ka, manuprāt, punktu skaitīšanai jānotiek reālā laikā, nevis ar ierakstiem datubāzē, jo ja referālis pievieno foto pēc nedēļas vai arī izdzēš to...

Edited by Morphius
Link to comment
Share on other sites

Padomā loģiskāk mazliet :)

Tu definē vērtību 0, izej cauri ciklam un centies NEKAM pieskaitīts vērtība + 1.

Kā bubu minēja - $points = $points + 1 - Tu pieskaitīsi klāt jau esošai summai klāt vienu! nevis visu laiku gremdēsies 1 vai 0 !

Link to comment
Share on other sites

Ideju sapratu un viss ok tajā ziņā, tikai tagad lūgums apskatīt nākamo problēmu ar nekorekto punktu skaitīšanu...

Tātad testa veidā izveidoju 4 profilus zem ?affid=1 linka! Lūk screeshot:

post-3692-125165026407_thumb.jpg

 

Tālāk testējot šo kodu:

// Par viriesha registraciju + 0.5
// Par viriesha foto pievienoshanu anketaa + 1
// Par sievietes registraciju + 1
// Par sievietes foto pievienoshanu anketaa +1.5
$points = 0;
$result=mysql_query("SELECT * FROM dating_aff_referals WHERE affid='1'");
$row=mysql_fetch_assoc($result);
while ($row=mysql_fetch_assoc($result))
{
echo 'User id: '.$row[userid].'';
if ($row["userid"] > 0)
{
	$result2=mysql_query("SELECT * FROM dating_user WHERE id='$row[userid]'");
  		$row2=mysql_fetch_assoc($result2);
  		if($row2["gender"] == "M")
  		{
     			$points=$points+0.5;
     			if($row2["picture"] > 0 || $row2["pictures_cnt"] > 0)
     			{
        			$points=$points+1;
     			}
  		}
  		if ($row2["gender"] == "F")
  		{
  			$points=$points=+1;
  			if($row2["picture"] > 0 || $row2["pictures_cnt"] > 0)
  			{
  				$points=$points+1.5;
  			}
  		}
}
echo ' and points earned: '.$points.'</br>';
}

 

Un rezultāts šāds:

post-3692-125165065939_thumb.jpg

 

Reāli jābūt šādi:

User id: 96 = Vīrietis ar foto = 1.5 punkti

User id: 97 = Sieviete ar foto = 2.5 punkti

User id: 98 = Vīrietis ar foto = 1.5 punkti

User id: 99 = Sieviete ar foto = 2.5 punkti

Kopā = 8 punkti

 

Kā redzam reālā situācija nav tāda kā gribētos...

Jautājumi:

Kāpēc skripts laiž apgrozībā "User id: 0" ja skriptā esmu ierakstījis nosacījumu?

if ($row["userid"] > 0)

Kāpec netiek summēti punkti? Kur kļūda?

Link to comment
Share on other sites

Nevajag summēt ar php. Summēt vajag ar SQL iespējām:

$sql = 'SELECT dar.userid, SUM(IF du.gender = "M" THEN (IF du.picture>0 AND du.pictures_cnt>0 THEN 1.5 ELSE 0.5 END IF) ELSE (IF du.picture>0 AND du.picture_cnt>0 THEN 2.5 ELSE 1 END IF) END IF) AS points
FROM dating_aff_referals AS dar
LEFT JOIN dating_user AS du ON du.id = dar.userid
WHERE dar.affid = 1
GROUP BY dar.userid';

$result = mysql_query($sql) or die(mysql_error());
while ($row = mysql_fetch_assoc($result))
{
    echo "User id: ", $row["userid"], " and points earned: ", $row["points"], "<br/>";
}

Iespējams vajag kādu sintakses vai citu kļūdiņu pielabot, pārbaudījis kodu neesmu. Galvenais lai ideju saproti.

Link to comment
Share on other sites

Nevajag summēt ar php. Summēt vajag ar SQL iespējām

 

Nu jā, bet kā ar tādu situāciju ka lietotājs pēc nedēļas pievieno foto, vai kā jau minēju, kad punkti tiek pieskaitīti ja jūzers aipilda anketu?! Ar SQL var ļoti labi skaitīt, bet ja jūzers izmaina profilu, tad ir jāveic pārrēķins...

 

Manuprāt atstāšu veco skaitīšanas sistēmu + veikšu ierakstu datubāzē, pirms tam jāpārbauda, vai esošais aprēķins ir savādāks nekā tas, kurš ir ierakstīts un ja viss ir čikiniekā, tad izvadīt summu...nu jāpamēģina :)

 

PS

 

Nemaz nezināju ka SQL kverijā var tik plaši kodēt...Tā kā priekš manis tas ir kas jauns, tāpēc atstāšu "bubu" piemēru citai reizei :)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...