2013-11-04 57 views
0

我知道,如果你可以在SQL查詢中使用不同的,像這樣:PHP鮮明等效

SELECT DISTINCT column_name FROM table_name; 

爲了把所有的獨特的匹配數據,因此它不是在一個循環中重複了一遍又一遍。我有一個難題,我有一個使用連接的SELECT語句;一切都很好。從我創建的那個循環中有一個IF和Else的陳述。如果數據在特定日期範圍內,則顯示相關數據。但是,如果它不在日期範圍內,那麼我只想顯示一些數據。

問題是else語句的意圖是每次在數據庫的每一行中重複數據時複製數據。現在我真的不想使用兩個單獨的查詢,所以我看到過去有沒有人有過這方面的經驗,以及他們做了什麼來解決它。

對於那些你們誰不明白什麼我得到的,我會包括代碼:

// Database query 
    $db_query = mysqli_query($con,$db_data_query); 
while($db_result = mysqli_fetch_array($db_query)) { 

    // Convert to proper datetime format 
    $dt_vdate = new DateTime($view_date); 
    $convert_vdate = $dt_vdate->format('Y-m-d H:i:s'); 

    // Check if the date is within the date range 
    if (($convert_vdate >= $db_result['start']) && ($convert_vdate <= $db_result['finish'])) { 

    // Display Jobs within Range 
    echo ' 
    <div class="db_col"> 
     <div class="person">'. $db_result['name'] . ' #' . $db_result['id'] .'</div> 
     <div class="location">'. $db_result['location'] .'</div> 
     <div class="task">' . $db_result['task'] . '</div> 
    </div>'; 
    } 
    // Display blank tasks 
    else if (**($db_result['start'] == "") && ($db_result['finish'] == "")**){ 

     // Display Jobs within Range 
    echo ' 
    <div class="db_col"> 
     <div class="person">'. $db_result['name'] . ' #' . $db_result['id'] .'</div> 
     <div class="location">'. $db_result['location'] .'</div> 
     <div class="task">&nbsp;</div> 
    </div>';   
    } 

我把**的ELSEIF條件旁邊。我有一個有趣的感覺,我需要將其分解爲兩個查詢,但要讓生活變得輕鬆我正在考慮是否有基本檢查人員是否在日期範圍之間分配任務,然後顯示該人員的姓名,ID#和分配的任務。如果他們沒有分配任務(使用else if),只顯示他們的名字,id#和一個空格。

通過這種方式可以打印此頁面,並且可以手動將任務寫入到稍後可以手動寫入的頁面中。

發生的問題是數據庫正在顯示已分配的人員和任務。但是,如果他們沒有分配任務,那麼每次他們在過去都被分配了一個任務,那麼這些人員以及他們的ID#和空格div將被顯示給每個數據庫條目。所以我試圖以一種方式集思廣益,如果這個人沒有分配一個任務,那麼else就會一次(不是多次)顯示人,id,任務。

+0

你的選擇明確不是做你想做的事,因爲每次「任務」列都不相同。 –

回答

0

鑑於上面我的意見是正確的,你可以在陣列中存儲的人的「ID」值,並檢查使用in_array做一個變通方法:

: 
: 
$got_ids=array(); 
while (...) 
{ 
    $testid=$db_result['id']; 
    if (in_array($testid,$got_ids)) continue; 
    : 
    : 
    $got_ids[]=$testid; 
} // end while 

應該可以解決我假設的問題

+0

我會很快給你一個鏡頭,只需要快速地綁定一下。但是,您的評論對於不斷變化的任務是正確的。這就是爲什麼這對我來說很難纏繞我的頭。 –

+0

好吧,它的工作原理... sorta所以現在它完美地顯示了一切*但它沒有顯示任何新生成的任務,就像它應該。我會繼續擺弄它。 –

+0

試着把if(in_array(...在你的else if子句中) –