За последние 24 часа нас посетили 53735 программистов и 1725 роботов. Сейчас ищут 798 программистов ...

Вывод одинаковых значений из БД на сайт

Тема в разделе "PHP для новичков", создана пользователем AkudJEE, 28 окт 2012.

  1. AkudJEE

    AkudJEE Активный пользователь

    С нами с:
    29 июл 2012
    Сообщения:
    29
    Симпатии:
    0
    Здравствуйте. У меня встал вопрос вывода одинаковых ключевых слов из БД на сайт. К примеру есть страница картинки у нее есть ключи, нужно будет вывести под картинкой одинаковые ключевые слова (такие же как у картинки)из трех полей, чтобы был лимит.
    Есть таблица table, поле id картинки и ключи metakey в одной таблице table.
    [​IMG] [​IMG]
    Я понимаю, что надо сперва ключи разбить на массивы (скорее всего), затем проверить, если есть одинаковые значения массивов, то вывести эту картинку (для начала надо вывести только поле с ключами, а потом уже с выводом картинки разберусь). Лучше будет если поставить лимит на вывод, к примеру 3.
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    первая таблица - картинки
    вторая таблица - ключи
    третья таблица - ключ, картинка

    по одному.
     
  3. AkudJEE

    AkudJEE Активный пользователь

    С нами с:
    29 июл 2012
    Сообщения:
    29
    Симпатии:
    0
    таблица одна, к примеру назовем ее Table, в ней картинки, для каждой картинки есть столбец id, затем catid это id категории, затем название, опубликовано или нет, мета данные и ключи поле metakey.
    |id| catid |imgtitle |metakey | metadesc|
    --------------------------------------------------------------
    |1 | id |название |ключи1 |мета |
    |2 |категории|картинки |ключи1 |описание |
    --------------------------------------------------------------
    Вот нарисовал

    Добавлено спустя 35 секунд:
    Ключи1, ключи2 - перечислены ключевые слова, через запятую

    Добавлено спустя 3 минуты 27 секунд:
    Допустим открывается страница с картинкой и у картинки есть свои ключи, перечисленные через запятую, мне нужно вывести те картинки, в количестве трех штук, у которых хотя бы один ключ одинаков с картинкой на странице
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    я вам сказал как это сделать. то что у вас есть сейчас - это неправильное решение.
     
  5. AkudJEE

    AkudJEE Активный пользователь

    С нами с:
    29 июл 2012
    Сообщения:
    29
    Симпатии:
    0
    У меня на данный момент решения никакого нет. То что вы мне ответили мне не совсем ясно как делать.
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    в смысле не совсем ясно? вы спросите, что вам не ясно. Для того и форум.
     
  7. AkudJEE

    AkudJEE Активный пользователь

    С нами с:
    29 июл 2012
    Сообщения:
    29
    Симпатии:
    0
    Мне нужно составить запрос к БД и вывести картинки у которых одинаковые ключи. А вы мне что ответили:
    Где тут запросы?
     
  8. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    третья таблица - ключ, картинка

    Select `картинка` FROM `третья таблица` WHERE `ключ` = 10
     
  9. AkudJEE

    AkudJEE Активный пользователь

    С нами с:
    29 июл 2012
    Сообщения:
    29
    Симпатии:
    0
    А сравнивать как?
     
  10. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Что значит сравнивать?
     
  11. AkudJEE

    AkudJEE Активный пользователь

    С нами с:
    29 июл 2012
    Сообщения:
    29
    Симпатии:
    0
    Я вроде понял как это сделать, нашел ваш ответ вот здесь http://www.php.ru/forum/viewtopic.php?f=13&t=42323&p=339331#p339331, попробую так же сделать, если не получится, то к вам опять обращусь за помощью.
     
  12. AkudJEE

    AkudJEE Активный пользователь

    С нами с:
    29 июл 2012
    Сообщения:
    29
    Симпатии:
    0
    Сделал так:
    Код (Text):
    1.  
    2. //Вывод количества ключей
    3. $link=mysql_connect("localhost", "root","");
    4. mysql_select_db("base_name") or die ("Не найдена БД");
    5. $query="SELECT * FROM `table` where `metakey`='рыбки, аквариум, 3д обои, 1920x1200 px'";
    6. $result=mysql_query($query);
    7. $num_rows = mysql_num_rows($result);
    8. echo   $num_rows;
    9.  
    10. //Вывод названия картинки
    11. while ($sql_data = mysql_fetch_array ($result))
    12. {echo $sql_data ['imgtitle'];}
    13.  
    14. //Вывод ключевых слов
    15.  $d_table= mysql_query("SELECT * FROM `table`");
    16.  while ($stroka=mysql_fetch_array($d_table));
    17.  {echo $stroka ["metakey"];
    18.  echo " ";
    19.  echo "<br>";}
    20.  $d_table1= mysql_query("SELECT * FROM `table` where `metakey`='рыбки, аквариум, 3д обои, 1920x1200 px'");
    21. if (mysql_num_rows ($d_table1))
    22. {$res=mysql_result($d_table1,0,"metakey");}
    23.  
    24. //Разбиваем ключи и вывод
    25. $strkey = $row->metakey;
    26. list($a,$b,$c,$d) = explode(", ", $strkey);
    27. echo $a;
    Написал коды, но теперь как-то надо их объединить, последний вариант не выводит ключи, знаю, что запроса там нет, как сделать. Надо сделать такой запрос: проверяем ключи данной картинки по id, если есть такие ключи, то вывести название картикни.
    Здесь:
    Код (Text):
    1. $query="SELECT * FROM `table` where `metakey`='рыбки, аквариум, 3д обои, 1920x1200 px'";
    Тоже надо сделать, запрос ключей по id. Пока еще работаю, может чо получится.

    Добавлено спустя 3 минуты 14 секунд:
    Если надо, могу адрес сайта выложить, если, конечно, не запрещено правилами форума

    Добавлено спустя 53 минуты:
    Написал таким образом:
    Код (Text):
    1. //Разбиваем ключи и вывод
    2. $id=$this->image->id; //берем id картинки
    3. $link=mysql_connect("localhost", "root","");
    4. mysql_select_db("base_name") or die ("Не найдена БД");
    5. $query="SELECT `metakey` FROM `table` where `id`=$id";
    6. $result=mysql_query($query);
    7. while ($sql_data = mysql_fetch_array ($result))
    8. {
    9. list($a,$b,$c,$d) = explode(", ", $sql_data ['metakey']);//разбиваем ключи
    10. echo $a;} //вывод одного ключа
    11. $query="SELECT `imgtitle` FROM `jos_joomgallery` where `metakey`=$a";//опять делаю запрос, ищу название картинки imgtitle, где ключи равны $a
    12. $result=mysql_query($query);
    13. while ($sql_data = mysql_fetch_array ($result))
    14. {echo $sql_data ['imgtitle'];}//выводим название картинки
    Но выдает ошибку:
    Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in Z:\home\xorstlocal.ru\www\components\com_joomgallery\views\detail\tmpl\default.php on line 1174
    Что-то неправильно. Не подскажете что именно не так?
     
  13. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    чувак, тебе еще раз говорю, не делай так =)
    делай табицу вида
    столбик картинка
    столбик ключ



    запрос обломился.