2015-10-26 2 views
4

Во-первых, я хочу сказать вам, что я использую blob. поэтому, я загружаю некоторые фотографии, и я бы хотел создать панель поиска, поэтому я могу назвать ее tag из моей базы данных. Мое дело прямо сейчас:Я хочу найти изображение из mysql

Я не могу найти 2 слова и более.

В моей базе данных с указанными полями tag и kategori.

В 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 Query:

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

, где я должен поставить этот код? im новый для этого мира, поэтому у меня нет идеи ..sorry XD –

+0

Код должен быть выше вашего оператора sql2. Я дал вам полный код для вставки в ваш php-файл. –

+0

ничего не выходил .. #sad ..echo result «select imageId from output_images, где bukuId = 1 и тег, например«% tag1% », или тег типа«% tag2% »или тег, например«% tag2% », или« Заказ по imageId asc » –

0

Хорошо, что я понимаю. Вам нужна панель поиска, в которой вы можете вводить теги изображений. Вывод/$ _ POST ['tag'] будет похож на этот tag1; tag2

Вы можете использовать разрывы и использовать каждый тег.

$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"; 

это даст вам запрос SQL, как этот

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

EDIT

<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> 

здесь ваш код. Вы увидите изменения, которые я сделал.

+0

, где я должен это поставить? im new to php, поэтому я действительно не понимаю о размещении .. могу ли я поставить его наверху? bellow $ 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"; 
     } 

Вот ваш код изменен

Смежные вопросы