2012-05-14 39 views
0

我創建使用MySQL和PHP照片加標籤的項目,不僅只是增加了標籤的照片,但它也返回我已經保存在我的數據庫相關的標籤。我幾乎完成了我的項目(有點),只是在我上傳照片時必須返回相關標籤的部分。智能標籤項目MySQL的PHP​​

我的數據庫稱爲惡搞和我有兩個表「圖像」(圖像標識,名稱,標籤識別)和「標籤」(ID,標籤)。

我有3個PHP頁面database.php,index.php(我上傳圖片的標籤)和show.php我沒有問題上傳圖片的標籤,但我也想使它的方式返回相關標籤也是如此。例如,如果我上傳了一張寶貝圖片,並在上傳時添加了「寶貝笑容」標籤,它會寫在「寶貝笑笑孩子笑」旁邊。我不知道該怎麼做。

這是我show.php代碼:

<? 
require_once('/database.php'); 
$dbconnect = NEW DB_Class('tagger', 'root', ''); 
$query = "SELECT * FROM image, tag WHERE image.TagID = tag.ID"; 
$result = $dbconnect->fetch($query); 
echo "<table border='2'>"; 
foreach ($result as $record) 
{ 
echo "<tr>"; 
echo "<td>"; 
echo "<a href='images/".$record['Name']."' target='_blank'> 
<img src='images/".$record['Name']."' alt='SSsss' height='120' width='120' /></a>"; 
echo "</td>"; 
echo "<td>"; 
echo $record['Tag']; 
echo "</td>"; 
echo "</tr>"; 
} 
echo "</table>"; 
?> 

<form name="newad" method="post" enctype="multipart/form-data" 
action=""> 

<table align="center" > 
<tr> 
<td> <h2>Image to upload: </h2> </td> 
<td><input type="file" name="image"></td> 
</tr> 
<tr> 
<td><h2>Tags:</h2></td> 
<td><input type="text" name="tags"/></td> 
</tr> 
<tr> 
<td></td> 

<td><input name="Submit" type="submit" value="Upload image" style="width 120px;  height: 70px;font-size:20px"></td> 
</form> 
</tr> 
<br/> 
</table> 

</form> 

請問我要補充像所謂的「同義詞」,例如一個全新的表?我完全失去了,任何幫助將不勝感激。如果你們需要查看另外兩頁的代碼,我也會展示這些代碼。謝謝。

+0

,你不能百分百確定什麼用戶將特定照片標籤,而不是進入標籤附加你的建議,你可以提供用戶基於他進入什麼樣的標籤一組相關的標籤。 –

+0

您需要使用搜索引擎Solr的一樣OK – Petah

回答

0

你的數據庫架構看起來你可以在你的描述爲圖片添加只有一個標籤,但您使用「標籤」。讓asume這是你的表模式Image:(ImageId,Name)和Tag(TagId,ImageId,Tag)。如有必要進行適當的修改。

現在創建同義詞表作爲緩存表,可從作爲cron作業進行更新。

SELECT rel.Tag as related_tag, tag.Tag as tag, COUNT(tag.Tag) as connections 
FROM tags rel 
LEFT JOIN tags tag ON tag.ImageId = rel.ImageId 
GROUP BY tag.Tag 
WHERE COUNT(tag.Tag) > 5 -- Use $image_count/10 or 100 or other appropriate value 

再行插入到緩存的提交。如果你沒有很多圖像,你可以每次調用這個查詢。

所以,如果您的表看起來像這樣

1, 1, baby 
2, 2, car 
3, 1, smile 
4, 1, laugh 
5, 1, child 
6, 2, baby 
7, 2, child 

你的結果將是: (標籤,related_tag,連接)

baby, smile, 1 
baby, laugh, 1 
baby, child, 2 
smile, baby, 1 
smile, laugh, 1 
... 

這種方式,你可以創建一個表,其中顯示該標記出現一起5張或更多。

+0

非常感謝。我會試試這個。但我也有另一個問題,每當我點擊圖像它會去新標籤。我希望它進入一個新的頁面。我需要更改show.php上的整個代碼嗎? – user1393436

+0

target =「_ blank」在new中打開圖像的事實是瀏覽器的設置。用戶選擇在新選項卡中打開新窗口中的內容。如果您不想在新窗口中強制打開,請使用javascript的window.open,但某些智能瀏覽器(例如chrome)仍然可能會在新選項卡中打開它。 – ther

+0

非常感謝。你一直在幫助很大。 – user1393436