Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Создание ключевых слов со ссылками на поиск


Автор: KonstRuctor 28.2.2008, 16:54
В базе данных хранятся ключевые слова к каждой новости:
европа, азия, америка, азия, австралия, ямайка
Задача:
вывести в конце каждой новости ключевые слова, оформив их ссылками.
так, чтобы нажав на любое ключевое слово, далее что-то происходило.
Делаю так:
Код

        function draw_keywords( $keywords )
        {
        return
           implode(
              ',',
              array_filter(
                    array_unique(
                           explode(',', trim($keywords))
                    )
              )
           );
        }

Далее вынимаю из базы данных $keywords = $row["keywords"] и получаю слова через запятую.
То есть по сути эта функция в моем случае только выбирает уникальные ключевые слова и выводит их через запятую. Мне надо как-то к каждому ключевому слову добавить:
Код

<a href=\"search.php?keyword=".$keyword."\">".$keyword."</a>

Что-то туплю и ничего не выходит.

Автор: skyboy 28.2.2008, 17:13
пройтись циклом по массиву, "оборачивая" каждый элемент массива в ссылку. зачем пытаться все сделать "в одну строку"?

Автор: Nigel 28.2.2008, 17:24
Угу, и зачем фильтер, если функции callback нету?

Автор: KonstRuctor 28.2.2008, 17:55
array_filter и верно, надо убрать.

У меня такая задумка:

1) Выбрать из базы 10 строк с новостями
2) Посторить цикл вывода новостей
Код

while ( $row = mysql_fetch_array($result) )
{
   // тут вывожу новость
   // и ключевые слова к новости
   // обернутые в ссылки
   $array = array_unique ( explode(',', trim($row["keywords"])) );
          foreach ( $array as $value )
          {
              echo "<a href=\"search.php?search=".$value."&sendsearch=start\">".$value."</a> &bull; ";
          }
}


Все получается, но как избавиться от &bull; в самом последнем слове?
Вопрос номер два: можно ли передавать по GET прямо так $value, или его лучше urlencode?

Автор: mishaSL 28.2.2008, 18:31
Цитата(KonstRuctor @  28.2.2008,  17:55 Найти цитируемый пост)
Вопрос номер два: можно ли передавать по GET прямо так $value, или его лучше urlencode?

Лучше urlencode.

Вот еще вариант:
Код

      function draw_keywords( $keywords )
        {
            $arr = array_unique(explode(',', $keywords));
            array_walk($arr, create_function('&$v,$key','$v = " <a href=\"search.php?keyword=".$v."\">".$v."</a>";'));

        return implode(',',$arr);
        }

$str = draw_keywords('кл.слово1,кл.слово1,кл.слово2');
print $str;



Цитата(KonstRuctor @  28.2.2008,  17:55 Найти цитируемый пост)
Все получается, но как избавиться от &bull; в самом последнем слове?

Так:
Код

while ( $row = mysql_fetch_array($result) )
{
   // тут вывожу новость
   // и ключевые слова к новости
   // обернутые в ссылки
   $array = array_unique ( explode(',', trim($row["keywords"])) );
          $str = '';
          foreach ( $array as $value )
          {
              $str .= "<a href=\"search.php?search=".$value."&sendsearch=start\">".$value."</a> &bull; ";
          }
          echo substr($str,0,-7);
}

Автор: KonstRuctor 28.2.2008, 19:46
mishaSL, спасибо! Все работает идеально!
Всем остальным также благодарности за содействие!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)