2015-10-26 23 views
4

首先,我想告訴你,我正在使用blob。所以,我上傳了一些照片,我想創建一個搜索欄,所以我可以從我的數據庫中調用tag。我現在的情況如下:我想從mysql搜索圖片

我無法搜索2個字或更多。

我的數據庫中有一個名爲tagkategori的字段。

tag我把數據象zat ; proses ; obat ;

它由;(分號)隔開。

所以,這裏是我的一個搜索代碼:

<html> 
<body> 
<?php 
$conn = mysql_connect("localhost", "denis", "denis"); 

mysql_select_db("company"); 
echo($_POST["tag"]); 
?> 
<form method="POST" > 
<font color='black'>Cari gambar:</font> 
<input type="text" name="tag" value=" "> 
<input type="submit" name="search" value="Cari"/> 
</form> 
    <?php 
    if(isset ($_POST["tag"])) 
    { 
    $sql2="select imageId from output_images where bukuId=". $_GET["id"]." and tag like '%".$_POST["tag"]."%' Order by imageId asc"; 


    } 
    else 
    { 
    $sql2="select imageId from output_images where bukuId=". $_GET["id"]." Order by imageId asc limit 1"; 

    }`enter code here` 
    $res2=mysql_query($sql2,$conn); 
    while($row2=mysql_fetch_array($res2)) 
    { 
     echo("<img src='http://" . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . "/profile.php?image_id=". $row2["imageId"]. "' width='15%' height='30%'/>"); 

    } 


    mysql_close(); 
    //echo("ada"); 
mysql_close($conn); 

?> 
</body> 
</html> 

如何,我可以通過2個字或以上做呢?

我聽說過爆炸,但我不明白如何使用它。

this is my database, which use tag to find my image

+1

你應該有一個'標籤[TAG_ID,TAG_NAME]'表來存儲*單*標記然後'image_tags與每一行對應一個[TAG_ID,image_id]'表標記特定的圖像。將多個值存儲在單個列中永遠不會結束,使用一對多表使事情變得更簡單,您可以使用簡單的連接查詢完成所需的任務。 –

回答

1

使用這種在MySQL查詢:

WHERE interests REGEXP 'tag1|tag2|tag3' 
+2

你可以擴展這個答案來展示如何構建這個查詢,例如'$ tags = str_replace('','|',$ _ POST ['tag']);'關於sql注入和歸一化是一個好主意 – Steve

0

這裏是我的代碼,我分裂標記,併產生類似條款的MySQL查詢:

  $tags = "tag1 tag2 tag2"; 
      $Id = 1; 
      $atags = explode(" ",$tags); 
      $mytags = ""; 
      foreach($atags as $tag) 
      { 
      $mytags .= " tag like '%". $tag . "%' or"; 
      } 
      $sql2="select imageId from output_images where bukuId=". $Id." and ".$mytags."der by imageId asc"; 
      echo $sql2; 
+0

我必須把這個代碼?即時通訊新到這個世界,所以我沒有任何想法..熊XD –

+0

該代碼需要在您的sql2語句之上。我給你完整的代碼粘貼到你的PHP文件。 –

+0

什麼都沒有出來.. #sad ..echo結果是「從output_images中選擇imageId,其中bukuId = 1且標記類似於'%tag1%'或標記類似於'%tag2%'或標記類似於'%tag2%'或由imageId asc排序」 –

0

行麼我明白了。您需要一個搜索欄,您可以在其中輸入圖像標籤。輸出/ $ _ POST ['tag']將會像這樣tag1; tag2

您可以使用explode併爲每個標籤編寫foreach。

$data = explode(';', $_POST['tag']); 
$i = 0; 
foreach($data as $tags){ 
$i++; 
    if($i == 1){ 
$query .= 'AND tag like %'.$tags.'%'; 
}else{ 
$query .= 'OR tag like %'.$tags.'%'; 
} 
} 

$sql2="select imageId from output_images where bukuId=". $_GET["id"]." ".$query." Order by imageId asc"; 

這會給你這樣的

SELECT imageId from output_images where bukuId= '5' AND tag='tag1' OR tag='tag2' Order by imageId asc 

編輯

<html> 
<body> 
<?php 
$conn = mysql_connect("localhost", "denis", "denis"); 

mysql_select_db("company"); 
echo($_POST["tag"]); 
?> 
<form method="POST" > 
<font color='black'>Cari gambar:</font> 
<input type="text" name="tag" value=" "> 
<input type="submit" name="search" value="Cari"/> 
</form> 
    <?php 
    if(isset ($_POST["tag"])) 
    { 
    $data = explode(';', $_POST['tag']); 
$i = 0; 
foreach($data as $tags){ 
$i++; 
    if($i == 1){ 
$query .= 'AND tag like %'.$tags.'%'; 
}else{ 
$query .= 'OR tag like %'.$tags.'%'; 
} 
} 

$sql2="select imageId from output_images where bukuId=". $_GET["id"]." ".$query." Order by imageId asc"; 


    } 
    else 
    { 
    $sql2="select imageId from output_images where bukuId=". $_GET["id"]." Order by imageId asc limit 1"; 

    } 
    $res2=mysql_query($sql2,$conn); 
    while($row2=mysql_fetch_array($res2)) 
    { 
     echo("<img src='http://" . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . "/profile.php?image_id=". $row2["imageId"]. "' width='15%' height='30%'/>"); 

    } 


    mysql_close(); 
    //echo("ada"); 
mysql_close($conn); 

?> 
</body> 
</html> 

SQL查詢這裏是你的代碼。你會看到我所做的改變。

+0

我必須把這個?即時通訊新的PHP,所以我真的不明白關於安置..我可以把它放在頂部?波紋管$ conn? –

0
 if(isset ($_POST["tag"])) 
     { 
     $tags = $_POST["tag"]; 
     $Id = $_GET["id"]; 
     $atags = explode(" ",$tags); 
     $mytags = ""; 
     foreach($atags as $tag) 
     { 
     $mytags .= " tag like '%". $tag . "%' or"; 
     } 
     $sql2="select imageId from output_images where bukuId=". $Id." and tag like '%".$tags."%' Order by imageId asc"; 
     } 

這裏是你的代碼修改