2017-04-07 49 views
0

加盟時,我有兩個表。一個叫'標記',包含ID(pk),名稱,地址和另一個名爲'markers_date'的表,其中包含'markers_id,date,date2,time。顯示在記錄一個名字,如果它包含重複另一個表

我已經完全沒有問題,呼應它作爲JSON。但是,我只想顯示名稱和地址一次,並顯示名稱的相應日期和時間,其中有多個日期和時間。

PHP


$markers = array(); 
$qry = "SELECT markers.name, markers.address, markers_date.date, markers_date.date2, markers_date.time FROM markers, markers_date WHERE markers_date.markers_id = markers.id ORDER BY markers.name"; 

$result = mysqli_query($dbConnect, $qry); 

while($row = mysqli_fetch_object($result)) { 

    $markers[] = $row; 

} 

echo '{"markers":'.json_encode($markers).'}'; here 

我收到的輸出如下:

  Atlantic Yacht Club  5 New St   3/31  5/30  6:30-9:00pm 
      Atlantic Yacht Club  5 New St   4/30  6/16  4:30-7:00pm 
      VFW     145 Greenwich St  4/22    6:30-9:00pm 
      VFW     145 Greenwich St  4/27  4/30  6:30-9:00pm 
      VFW     145 Greenwich St  7/22    6:30-9:00pm 

我真正從它想要的是:

  Atlantic Yacht Club  5 New St   3/31  5/30  6:30-9:00pm 
                4/30  6/16  4:30-7:00pm 

      VFW     145 Greenwich St  4/22    6:30-9:00pm 
                4/27  4/30  6:30-9:00pm 
                7/22    6:30-9:00pm 

我的問題是,將這可以在SQL語句或som中進行控制ehow從PHP數組中控制?只要它不是我們所看到的姓名和地址的該組合首次

感謝

+2

這是應該在表示層(例如PHP)IMO中處理的東西。 –

回答

1

一種方法是遍歷在PHP中設置你的有序的結果,然後有選擇地空出的標記名稱和地址。

$curr_name = ''; 
$curr_address = ''; 
while ($row = mysqli_fetch_object($result)) { 
    $name = $row->name; 
    $address = $row->address; 
    // if we have seen this name/address pair already, blank it out 
    if ($name == $curr_name && $address == $curr_address) { 
     $row->name = ''; 
     $row->address = ''; 
    } 
    // otherwise, don't blank it out but remember this name/address pair 
    else { 
     $curr_name = $name; 
     $curr_address = $address; 
    } 
    echo '{"markers":'.json_encode($row).'}'; 
} 
+0

謝謝你的建議蒂姆,我會試試這個。 – muttBunch

+0

蒂姆,輝煌!你的建議奏效了,我非常感激。 – muttBunch

+0

是的,先生,對不起。再次感謝 – muttBunch

相關問題