2012-08-09 20 views
0

我有一個函數可以從表中獲取未發佈的記錄數(工作正常)。但是現在我想要在多個表中獲得未發佈的事件總數。我想我可以使用$ tables = array('projects','testimonials').etc來做一個foreach循環。然後將它們各自的結果加在一起得到總數並返回?但我不確定如何做到這一點,這種循環有點超出我的能力。使用循環和數組跨越多個表的未發佈事件總數

function publishCount($table) { 
    $sql = mysql_query("SELECT COUNT(*) AS nb FROM ".$table." WHERE published='0' OR published=''") or die(mysql_error()); 
    $result = mysql_result($sql, 0); 
    if (!$result == 0) { echo 'Awaiting to be published <span class="badge badge-important">'.$result.'</span>'; } 
    else { echo 'Awaiting to be published <span class="badge badge-inverse">'.$result.'</span>'; } 
} 

回答

1

您應該編輯你的函數是這樣的:

function publishCount($table) { 
    $sql = mysql_query("SELECT COUNT(*) AS nb FROM ".$table." WHERE published='0' OR published=''") or die(mysql_error()); 
    $result = mysql_result($sql, 0); 
    return $result; 
} 

所以,你可以再通過你$tables列表做一個循環:

$tables = array('projects', 'testimonials', [...]); 
$nbResults = 0; 
foreach($tables as $table) { 
    $nbResults += publishCount($table); 
} 
if($nbResults == 0) { 
    // ... 
} else { 
    // ... 
} 
+0

真棒!謝謝一堆。 – Alex 2012-08-10 00:03:35

+0

您是否知道是否可以在查詢中指定一個用戶ID來顯示某個用戶的未發佈總數? – Alex 2012-08-10 00:15:15

+0

是的,只需在'WHERE'之後添加'user_id = $ user_id'。 – 2012-08-10 00:22:20