Morphius Posted August 29, 2009 Report Share Posted August 29, 2009 (edited) 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 August 29, 2009 by Morphius Quote Link to comment Share on other sites More sharing options...
bubu Posted August 30, 2009 Report Share Posted August 30, 2009 Ja mainīgajam gribi pamainīt vērtību, tad izteiksmes rezultāts ir kautkam jāpiešķir: $points = $points + 1; Quote Link to comment Share on other sites More sharing options...
Kemito Posted August 30, 2009 Report Share Posted August 30, 2009 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 ! Quote Link to comment Share on other sites More sharing options...
bubu Posted August 30, 2009 Report Share Posted August 30, 2009 Kemito: Nu nav jau tā, ka NEKAM nav pieskaitīta vērtība +1. Pie $points tiek skaitīt vērtība 1, tik lūk šīs saskaitīšanas rezultāts netiek nekam piešķirts. Quote Link to comment Share on other sites More sharing options...
Kemito Posted August 30, 2009 Report Share Posted August 30, 2009 Ja nemaldos, es arī tā izskaidroju! Puslīdz, iespējams uz papīra šeit savādāk. Bet nu domāju ka viņš ideju ir sapratis. Quote Link to comment Share on other sites More sharing options...
Morphius Posted August 30, 2009 Author Report Share Posted August 30, 2009 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: 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: 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? Quote Link to comment Share on other sites More sharing options...
bubu Posted August 30, 2009 Report Share Posted August 30, 2009 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. Quote Link to comment Share on other sites More sharing options...
Morphius Posted August 30, 2009 Author Report Share Posted August 30, 2009 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 :) Quote Link to comment Share on other sites More sharing options...
bubu Posted August 30, 2009 Report Share Posted August 30, 2009 Tas, ko es uzrakstīju jau nav nekas "plašs". SQL'ā visu daudz vairāk un plašāk. Eku smuks piemērs - fraktāļa zīmēšana: http://wiki.postgresql.org/wiki/Mandelbrot_set Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.