2012-11-27 21 views
2

我需要幫助以兩種不同的列表從內顯示的數據加入

$domains_sql = mysql_query("SELECT domains_id, domains_url, keywords_id, keywords_word, domains_comments_comment 

    FROM 
    (
    SELECT domains_id,domains_url 
    FROM domains 
    ORDER BY RAND() 
    LIMIT 1 
    ) as d 

    INNER JOIN domains_comments 
    ON domains_comments_domain = domains_id 

    INNER JOIN domains_keywords 
    ON domains_keywords_website = domains_id 

    INNER JOIN keywords 
    ON domains_keywords_keyword = keywords_id 
     ORDER BY keywords_word ASC") or die (mysql_error()); 


$num = mysql_num_rows($domains_sql); 

$current_price = ""; 


for($i=0;$i<$num;$i++){ 


$domains_result = mysql_fetch_array($domains_sql); 

$domains_id = $domains_result['domains_id']; 
$domains_url = $domains_result['domains_url']; 
$domains_name = preg_replace('#^https?://www.#', '', $domains_url);     

$keywords_id = $domains_result['keywords_id']; 
$keywords_word = $domains_result['keywords_word']; 

$domains_comments = $domains_result['domains_comments_comment']; 

if($domains_url != $current_price) { 

echo $domains_name."<br /><br />"; 

$current_price = $domains_url; 

} 

echo $keywords_word."<br />"; 
echo $domains_comments."<br />"; 
} 

打印出顯示這樣的:

的MS Office
域1
的MS Office
域1 - 第1部分
MySQL
domain 1
MyS QL
域1 - 第1部分
PHP
域1
PHP
域1 - 第1部分
的Visual Basic
域1
的Visual Basic
域1 - 部分

和我需要它是:

(來自關鍵字的信息)

的MS Office
的MySQL
PHP
的Visual Basic

(從評論信息)

域1
域1 - 第1部分

回答

1

我不確定我是否看到您的域名評論和關鍵字是如何相關的,以及您是否只需要兩個列表,或者您是否想要爲每個關鍵字添加一個評論列表。

無論如何,您可以重寫您的查詢邏輯以對關鍵字進行主查詢,然後對註釋運行更簡單的查詢(對於所有用戶或每個關鍵字一個查詢),但是如果您的查詢時間和數據集是這樣的您希望在單個查詢中執行此操作,您可以重構多個數組中的數據。

此外,我認爲你只想列出每個項目一次。

$keywords = array(); 
$comments = array(); //if you want all comments in one list 
for($i=0;$i<$num;$i++){ 
    $domains_result = mysql_fetch_array($domains_sql); 

    //Stores complete row data, only keeps the last, if the same value is fetched from the db several times 
    $keywords [$domains_result['keywords_word']] = $domains_result; 
    $comments[$domains_result['domains_comments_comment']] = $domains_result; 
} 
//Now you have the two list, could be printed several ways, to only print the values 
print implode("<br />\n",array_keys($keywords)); 
print "<br />"; 
print implode("<br />\n",array_keys($comments)); 

//Loop trough 
foreach ($keywords as $keyword=>$data) { 
    print "$keyword<br>\n"; 
    print $data['keywords_word']."<br>\n"; 
    print_r($data); 
} 
+0

那是你非常。這是完美的 – user1856414

+0

很高興聽到@ user1856414,如果這真的解決了您的問題,請將答案標記爲已接受,將您的問題從隊列中刪除:) –

+0

關於關鍵字部分,我希望能夠顯示像'.$keywords_word.'這樣的關鍵字可以幫助任何人嗎? – user1856414