Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

ilustrando

Tags com PHP e MySQL

Recommended Posts

Meus caros amigos do Imasters, tenho uma dúvida e se puderem me ajudar nisso, ficaria grato.

Já perdi alguns cabelos por causa disso mas até o momento não consegui resolver....rsrsrs

 

Seguinte, tenho uma tabela no banco de dados onde registro as informações de uma notícia, onde tenho os campos de id, texto, autor, etc. Dentre estas colunas, tenho uma chamada tags_noticia, onde gravo as "palavras-chave" separadas por virgula, até ai acho que esta tudo bem.

 

O problema é como apresentar estas palavras chave como link, onde pego a própria palavra como link e caminho de link, por exemplo:

 

Tenho uma notícia onde esteja gravado na coluna tags_noticia: Notícia, Palavra-Chave, Eventos, Informação

 

Na hora de mostrar gostaria que ficasse assim (vou mostrar como html):

 

<a href="noticia">Notícia,</a>

<a href="palavra-chave">Palavra-Chave,</a>

<a href="eventos">Eventos,</a>

<a href="informacao">Informação</a>

 

Onde cada palavra se transforma em link, onde a ultima palavra não fique com ","

 

Tentei um explode mas não deu certo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vc poderia continuar com o explode e tirar a virgula do final:

 

<?php
$palavras_chave = 'Notícia, Palavra-Chave, Eventos, Informação';
$separadas = explode(",", $palavras_chave);
foreach($separadas as $palavra){
   $palavra = substr(0,-1, trim($palavra));
   echo "<a href='index.php?search=$palavra'>$palavra</a><br/>";
}

Compartilhar este post


Link para o post
Compartilhar em outros sites
Raul, muito obrigado pela disposição em ajudar assim como ao Marcos.
Vamos lá, o código que tenho, ficou assim:
$array = explode(",", $noticia['tags_noticia']);
foreach($array as $registro){
    $registro = substr(0,-1, trim($registro)); <------- se coloco isso, dá erro
    echo '<a href="'.URL.'/tags/'.$registro.'">'.$registro.'</a>';
}

 

Raul, quando eu coloco a linha "$registro = substr(0,-1, trim($registro));" dá um erro:
"Warning: substr() expects parameter 3 to be long"
Da forma que esta o código, já esta aparecendo as palavras com seus links, o que falta agora é colocar uma virgula em cada palavra-chave, com exceção da última.
As palavras chaves devem ficar na mesma linha separadas por virgula, peço desculpas pois nas informações acima coloquei cada link em uma linha diferente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Raul, meu amigo.... muito obrigado.

 

Meu código ficou assim:

 

 

$array = explode(",", $noticia['tags_noticia']);
foreach($array as $registro){
    $registro = substr(trim($registro), 0, -1);
    echo '<a href="'.URL.'/tags/'.$registro.'" class="tags_link">'.$registro.'</a>';
}

O que aconteceu foi que ele tirou a ultima letra de cada palavra, no exemplo que coloquei ficou:

Notíci

Palavra-Chav

Evento

Informaçã

 

Mas deveria ficar assim, na mesma linha, separado por virgula:

Notícia, Palavra-Chave, Eventos, Informação

 

Tem alguma ideia do por que esta assim?

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Erro meu, o sono esta me afetando. Rs

Então, depois que você da o explode(), não existem mais virgulas, somente os espaços em branco, não tem necessidade do substr(), você pode tira-lo.

 

$array = explode(",", $noticia['tags_noticia']);
foreach($array as $registro){
    $registro = trim($registro);
    echo '<a href="'.URL.'/tags/'.$registro.'" class="tags_link">'.$registro.'</a>';
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hahahaha.... sei bem como é isso.

 

Certo, entendi.... deixei a separação por blocos e tal, agora esta certinho.

Só mais uma última dúvida.... caso eu queira deixar as virgulas, ou melhor, inserí-las novamente no fim de cada palavra, menos na última, como eu poderia fazer?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vc pode declarar um array antes do foreach (Ex: $keywords = array)

Trocar o echo do foreach por um $keywords[] =

E depois do foreach dar um implode (Ex: echo implode(', ', $keywords);)

 

<?php 
$noticia['tags_noticia'] = 'Noticia, Palavra-Chave, Eventos, Informacao';
$array = explode(",", $noticia['tags_noticia']);
$keywords = array();
foreach($array as $registro){
	$registro = trim($registro);
	$keywords[] = '<a href="/tags/'.$registro.'" class="tags_link">'.$registro.'</a>';
}
echo implode(', ', $keywords);
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Funcao Nativa array_values() captura o conteudo sem virgulas

 

[inline]

$array = explode(",", $noticia['tags_noticia']);
foreach($array as $registro){
echo '<a href="'.URL.'/tags/'.array_values($registro).'" class="tags_link">'.array_values($registro).'</a>';

}

[/inline]

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.