2011-09-04 48 views
-3

任何人都可以給我任何關於如何可以爲傳銷項目(PHP/MySQL)計數下線的想法。目前我正在使用下面的方法。但是當我的數據庫記錄變爲300或更多時,它會顯示:第51行的最大執行時間超過30秒(我認爲這發生在無限循環中)。請幫幫我。什麼應該是正確的方式?如何統計下線,給我任何想法(傳銷項目)

我當前的代碼:

<?php 
require_once('configuration.php'); 

/// main function which will return Total Node Count 
function nodecount($id) { 
    $query = "SELECT * FROM ".memberlogtbl." WHERE locationid='".$id."' and topup >'0'"; 
    $result = mysql_query($query); 
    $count = mysql_num_rows($result); 

    $_SESSION['hackx8'] = $_SESSION['hackx8'] + $count; 
    while($row = mysql_fetch_array($result, MYSQL_BOTH)) { 
     nodecount($row["id"]); 
    } 
    mysql_free_result($result); 
    return ""; 
} 

$q_l = mysql_query("SELECT `left`,id FROM ".memberlogtbl." WHERE `left` >'0' ORDER BY id ASC"); 
while($updt_tbl_l = mysql_fetch_row($q_l)) { 
    unset($_SESSION['hackx8']); 
    $total_l = nodecount($updt_tbl_l['0']).$_SESSION['hackx8'] + 1; 
    mysql_query("UPDATE ".memberlogtbl." SET totalleft='$total_l' WHERE id='".$updt_tbl_l['1']."'"); 
} 
/// Update database with letest Total right Count 
$q_r = mysql_query("SELECT `right`,id FROM ".memberlogtbl." WHERE `right` >'0' ORDER BY id ASC"); 
while($updt_tbl_r = mysql_fetch_row($q_r)) { 
    unset($_SESSION['hackx8']); 
    $total_r = nodecount($updt_tbl_r['0']).$_SESSION['hackx8'] + 1; 
    mysql_query("UPDATE ".memberlogtbl." SET totalright='$total_r' WHERE id='".$updt_tbl_r['1']."'"); 
} 
?> 
+1

請正確縮進您的代碼。 –

回答

1

我做了一個類似的項目。我做了什麼(在做了大量的研究/搜索之後),爲二叉樹中的每個節點使用左值和右值。我不記得我在哪裏閱讀這種方法,但它的工作原理。例如,如果有6個節點,則頂部/根節點將分別得到1個值,因爲它們分別是LEFT值&。那麼你可以通過(右 - 左 - 1)/ 2得到其總下線,我想。 我希望這可以幫助你在你的項目。 :)

1

只需使用MySQL Limts與查詢。

限制用於limit您的MySQL查詢結果落入specified range。您可以使用它顯示第一個X number of results,或顯示X - Y結果的範圍。它被表示爲極限X,Y幷包含在查詢結尾。 X是起點(remember the first record is 0),Y是持續時間(how many records to display)

實例:

SELECT * FROM your_table LIMIT 0,10 - //這將顯示從數據庫中的第10個結果。 SELECT * FROM your_table LIMIT 5,5 - //這將顯示記錄6,7,8,9,和10

+1

感謝您的迴應。但是我可以使用限制,但是我的上面的代碼不是用於顯示的目的,但是我想知道有多少總的左右下劃線來進行二進制支付。 (例如:4左6右,然後他會得到4 * 100 =盧比400盧比)。總的來說,我需要知道他有多少總計下線支付給他。因此,我不能使用限制 –

+1

我可以有你的數據庫的結構嗎? –

+1

我建議你開始使用一個php框架,特別是'Codeigniter' www.codeigniter.com,因爲它具有'Active record libabry' http://codeigniter.com/user_guide/database/active_record.html用於數據庫的目的,使開發人員可以更輕鬆地玩數據庫。 –

0

這是一個複雜的問題,這將需要的數據庫結構的知識和測試數據幫助調試。我已經完成了完全相同的事情,但代碼可以非常依賴於你如何構造事物。

+0

威廉你是對的。但是,你可以通過給我一個簡單的提示來幫助我,我應該如何構造數據,我應該如何繼續。請任何人...... –

2

使您的數據庫中的2列爲每個用戶的左側數量和右側數量。然後用參考ID可以得到每個權利和每個左腿的計數。希望這個作品!