Ir para conteúdo

Arquivado

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

tubadc

[Resolvido] Criando tipo um bbcode porém com mysql...!

Recommended Posts

Olá,

 

Estou desenvolvendo algo semelhante a um bbcode porém com tags personalizadas devido a necessidade do meu cliente em cadastrar ícones no sistema, para quando eles serem impressos mostrar a respectiva imagem...então fiz o seguinte...

 

Criei uma tabela simples no MySQL com os campos

 

idicone | nome | sigla | imagem

 

Através do formulário meu cliente cadastra od dados nela por exemplo uma cor...

 

idicone | nome | sigla | imagem

1 |branco | {b} | branco.jpg

 

O qual irá aprecer no cadastro de produtos para ele inserir como se fosse um bbcode, ao clicar ele insere no campo de texto a tag {b} por exemplo....

 

Agora vem minha dúvida... preciso fazer a consulta no banco para transformar todas as tags no conteúdo gravado na descrição do produto pela imagem respectiva da sigla...

 

Como faço esse loop?

 

basicamente teria que retornar com um SELECT todos os icones com sigla e imagem e subtstituir toda vez que encotra-se a sigla na descrição pela imagem correspondete... sakaram?

 

Alguem pode me dar um exemplo de como fazer esse foreach e o prg_replace ...

 

OBrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode fazer esse SELECT e colocar os resultados em dois arrays: um com os valores iniciais; outro com os valores pelos quais os iniciais deverão ser alterados.

 

Esses arrays poderão ser usados em str_replace() ou preg_replace().

 

Na documentação dessas funções, há exemplos, inclusive, com o uso de arrays.

 

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pela ajuda... fiz mais ou menos isso ... o problema é que agora ele troca tudo... retorna os icones mas não retorna o conteudo..

 

require_once "griadm/includes/_conectabd.php";
//---Tratamento do Custo de Mana e Descrição
function trocarSiglas($campo) {
$sql_icones=mysql_query("SELECT * FROM icones")or die(mysql_error());
while( $linha_i=mysql_fetch_array($sql_icones)){
$sigla_i=$linha_i["sigla"];
$icone_i=$linha_i["iconeP"];
$campo=str_replace($sigla_i,$icone_i." ",$campo);
$campo=explode(" ", $campo);
foreach ($campo as $value) {
   echo "<img src='images/icones/p/".$value."'>";
}

}
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu pensei em algo assim:

 

supondo um filtro de palavras.

Considere uma tabela com os campos anterior (a palavra antes de passar pelo filtro) e nova (palavra filtrada)

PHP
$anterior = array();

$nova = array();

 

$sql = consulta SELECT

while (fetch())

{

    $anterior[] = $fetck['anterior'];

    $nova[] = $fetch['noav'];

}

 

//aqui você chama str_replace() ou preg_replace(), usando $anterior 4 $nova nos dois primeiros argumentos.

 

Dessa forma, as suabtituições são feitas todas de uma vez.

Compartilhar este post


Link para o post
Compartilhar em outros sites

obrigado .... consegui assim...

 

<?
require_once "griadm/includes/_conectabd.php";
//---Tratamento do Custo de Mana e Descrição
function trocarSiglas($campo) {
$anterior = array();
$nova = array();
$sql_icones=mysql_query("SELECT * FROM icones")or die(mysql_error());
while( $linha_i=mysql_fetch_array($sql_icones)){
$anterior[]=$linha_i["sigla"];
$nova[]=$linha_i["iconeP"];
foreach($nova as $value) {
$campo=str_replace($anterior,"<img src='images/icones/p/".$value."'> ",$campo);
}
}
echo $campo;
}

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

achei que tinha resolvido mas não foi não... tentei adicionar outros icones diferentes ele trás apenas o primeiro ícone e transforma os outros pro mesmo valor... transformando todos os ícones no mesmo... sabe porque?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente assim:

 

PHP
<?

require_once "griadm/includes/_conectabd.php";

//---Tratamento do Custo de Mana e Descrição

function trocarSiglas($campo) {

$anterior = array();

$nova = array();

$sql_icones=mysql_query("SELECT * FROM icones")or die(mysql_error());

while( $linha_i=mysql_fetch_array($sql_icones)){

$anterior[]=$linha_i["sigla"];

$nova[]=$linha_i["iconeP"];

}

 

$campo = str_replace($anterior, $nova, $campo);

echo $campo;

}

 

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

ele retorna tudo amontado e somente os nomes das imagens

 

thumb_1197466350.gifthumb_1197396916.gifthumb_1197396916.gif

 

quanto faço

$campo = str_replace($anterior, "<img src='images/icones/p/".$nova." '>", $campo);

 

ele chama as imagesn assim

 

images/icones/p/Array

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça o seguinte:

 

troque esta linha:

PHP
$nova[]=$linha_i["iconeP"];

 

por esta, colocando o caminho completo da imagem:

PHP
$nova[] = "<img src='images/icones/p/".$linha_i["iconeP"] . "' alt='' />";

 

OBS: Isso é dentro do loop while.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pegando o embalo do tópico e do natal! http://forum.imasters.com.br/public/style_emoticons/default/natal_noel.gif

 

Hehehhe...

 

Assim, eu tenho um campo "TEXT" sendo que nele se encontra:

Texto bla bla bla bla segue a imagem abaixo:

#imagem1#

Continuação do texto bla bla bla

Nessa mesma tabela eu tenho 3 campos de imagem imagem1 imagem2 imagem3.

Gostaria de que quando fosse colocado no texto #imagem1# ou #imagem2# ou #imagem3# fosse retornado a imagem que coloquei nessa tabela.

 

Acho que tem que ser alguma coisa como explode, mas não sei muito bem, gostaria de uma luz.

 

Abraços,

Leonardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpe a ignorância galera, já está resolvidíssimo.

 

$Img1 = "<img src=\"imagens/qr/".$rowQ['questaoImg1']."\" alt=\"Imagem1\" />";
$Img2 = "<img src=\"imagens/qr/".$rowQ['questaoImg2']."\" alt=\"Imagem2\" />";
$Img3 = "<img src=\"imagens/qr/".$rowQ['questaoImg3']."\" alt=\"Imagem3\" />";

$bbenunciado = $rowQ['questaoEnunciado'];
$bbimagens = array("#questaoImg1#", "#questaoImg2#", "#questaoImg3#");
$imagens = array($Img1, $Img2, $Img3);

$enunciado = str_replace($bbimagens, $imagens, $bbenunciado);

Abraços,

Leonardo

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.