2012-01-13 151 views
0

我有企業目錄網站,我希望它可以像Craigslist一樣將所有帖子分組。PHP的數據庫查詢

目前我的數據會出現在網站上這樣

<business name1> <phone number> <jan 13 2012> 
<business name2> <phone number> <jan 13 2012> 
<business name1> <phone number> <jan 12 2012> 

我想佈局像這樣,這樣的職位將由日期組發佈。

<jan 13 2012> 
<business name1> <phone number> 
<business name2> <phone number> 

<jan 12 2012> 
<business name1> <phone number> 
<business name2> <phone number> 

這裏是我的編碼

connection 
$query = "SELECT * FROM `myname` ORDER BY `myname`.`id` DESC LIMIT $offset, $limit "; 
$result = mysql_query($query); 


    while($row = mysql_fetch_row($result)) 

    { 

?> 

<div class="list"> 
<div class="ads_name"><a href="http://www.mydomain.com/category/<?=$row[0]?>.html" target="_blank"><?=$row[4]?> </a></div> 
    <div class="location"><?= htmlspecialchars($row[5])?></div> 
    <div class="phone"><?=formatPhoneNumber($row[3])?></div> 
    <div class="date"><?=$row[9]?></div> 
</div> 

<?php 
    } 
    mysql_free_result($result); 
?> 
+0

向您的查詢添加一個「GROUP BY日期」子句,並在循環結果時檢查日期值。每當數值發生變化時,將數據分解成新的部分。在不瞭解表格模式和所需的標記輸出的情況下,我們無法給出更準確的答案。 – DaveRandom 2012-01-13 17:56:47

回答

1

首先,你需要像

SELECT * FROM `myname` ORDER BY `myname`.`mydate` DESC, `myname`.`id` DESC LIMIT $offset, $limit 

爲了確保您的行以正確的順序到達。接下來,您需要執行經典的組更改算法:

<?php 
... 

    $date='__invalid__'; 
    while($row = mysql_fetch_row($result)) 

    { 

     if ($row[9]!=$date) 
     { 
     $date=$row[9]; 
?> 
<div class="date_header"><?=$row[9]?></div> 

<?php 
     } 
?> 

<div class="list"> 
<div class="ads_name"><a href="http://www.mydomain.com/category/<?=$row[0]?>.html" target="_blank"><?=$row[4]?> </a></div> 
    <div class="location"><?= htmlspecialchars($row[5])?></div> 
    <div class="phone"><?=formatPhoneNumber($row[3])?></div> 
    <div class="date"><?=$row[9]?></div> 
</div> 

<?php 
    } 
    mysql_free_result($result); 
?> 
+0

它很棒!但你可以向我解釋什麼是'__無效_';對於??與空白一樣嗎?謝謝:) – 2012-01-13 18:57:14

+0

''__invalid __''的原始值是爲了確保在循環開始時'if($ row [9]!= $ date)'會被觸發,這樣你總是用日期開始一個頁面。你可以使用'$ date ='''或'$ date = null'或其他任何東西,我選擇'__invalid __''使代碼爲readabel。 – 2012-01-13 18:59:34

+0

感謝您的快速回復和解釋! :) – 2012-01-13 19:09:54