• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Zeux

Problema com Textarea

13 mensagens neste tópico

Boas

Estou aqui a precisar de uma pequena ajudita  :D

Tenho numa página uma textarea onde vai ser escrita uma descrição de uma peça, e vai ter quebras de linha à mistura.

O que eu fiz foi guardar o valor da textarea directamente na bd, e depois quando vou editar uma peça, vou buscar o valor à bd para colocar na textarea, mas antes disso, fasso o seguinte:

$desc_pt=eregi_replace("

","\\n",$desc_pt);

Ou seja, trocar os enter pelo \n para apresentar as quebras de linhas na textarea. Isto está a funcionar perfeitamente no apache no meu pc, mas agora pos o site num servidor e não me está a funcionar, sempre que vou editar um produto dáme um erro de javascript, isto acontece porque a textarea é colocada por javascript através de innerhtml e deve de haver um caracter que depois estraga o resto

document.getElementById("dados").innerHTML="Português: <textarea name=\"desc_pt\" class=\"textareas\" readonly ><?php print $desc_pt ?><\/textarea><br /><br />Inglês: <textarea name=\"desc_en\" class=\"textareas\" readonly ><?php print $desc_en ?><\/textarea><br /><br />Francês: <textarea name=\"desc_fr\" class=\"textareas\" readonly ><?php print $desc_fr ?><\/textarea><br /><br />Alemão: <textarea name=\"desc_ge\" class=\"textareas\" onkeyup=\"alemao1()\" readonly ><?php print $desc_ge ?><\/textarea>"

O mais estranho é que no meu pc funciona bem  :dontgetit:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Em vez de colocares:

$desc_pt = eregi_replace("","\\n",$desc_pt);

Coloca:

$desc_pt = nl2br( $desc_pt );

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Com essa função tambem não dá, já tinha tentado tambem  :D

Com nl2br nem no meu pc dá, lol

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

nl2br tem que funcionar... nl2br serve para fazer exactamente isso que tu queres.... eu estou a programar um CMS (Content Management System) e estou a utilizar esta função e está a funcionar correctamente nas textareas, se calhar não funciona porque estas a utilizar javascript.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pois, quase de certeza que é por causa do javascript

O problema deve ser que o nl2br gera o caracter de quebra de linha sem ser escaped, ou algo do género, ou seja, tenho:

innerhtml="..echo $desc_pt;....."

o que acontece deve ser que ao fazer o echo escreve algum caracter que faz saltar fora das aspas do innerhtml, pelo menos penso eu...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tenta assim:

$desc_pt = preg_quote( nl2br( $desc_pt ) );

Para "escapar" o caracter que o nl2br gera.... :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Então não utiliza javascript  :D acho que é desnecessário utilizar javascript.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Só se mudar mesmo o funcionamento disto

Porque isto é do género: uma peça pode ser uma cabine, e neste caso vão existir os campos descrição em português, inglês, francês e alemão, ou pode ser de umaoutra categoria, e nesse caso só vai existir o campo referência.

E então tava a usar javascript para preencher o div dinamicamente dependo do tipo de peça

Neste caso só se inventar outra coisa...

Mas o que acho mais esquesito é dar no meu pc e no server não  :wallbash:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tena utilizar assim:

$desc_pt = eregi_replace("","\\r\\n",$desc_pt);

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Voltámos ao inicio...

No meu computador funciona 5*, no servidor não...  :hmm:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Este problema deve ter a haver algo com as diferentes configurações do php

Como é um servidor web deve ter regras mais restritas de segurança e deve ser isso que me está a causar o problema

Agora o que resta saber é ao certo o que causa o problema para tentar encontrar algo que o desfaça  :D

Já tou farto de fazer várias tentativas, mas nada...

Página com o problema

O código que tenho para teste do erro é este:

$sql = mysql_query("select * from pecas where peca_id=31");

$desc_pt=mysql_result($sql,0,"peca_desc_pt");

echo $desc_pt;

E quando a página é carregada é chamada esta função:

function mudaaccao(){
document.getElementById("dados").innerHTML="Português: <textarea name=\"desc_pt\" class=\"textareas\" readonly ><?php echo $desc_pt; ?><\/textarea>"
}

Se quiserem vejam na consola de javascript o erro que dá, que pelo que penso é causado pelo que já tinha dito  :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Após tempos de volta disto descobri a solução  :D

Tinha chegado à conclusão que o problema estava na variável php porque fiz:

alert("<?php $variavel_php; ?>")

Isto assim dava erro, mas se copiasse o resultado do echo dessa variável e fizesse isto:

$variavel_php="resultado do echo"

Isto assim já dava  :cheesygrin:

Então o problema tinha que estar na variável devolvida da bd, e então assim já funciona:

//substituir os enters por \n
$desc_pt=eregi_replace("
","\\n",$desc_pt);

//mudar a variável para funcionar em javascript
$desc_pt=strtr($desc_pt,"\n\r\t\0","    ");

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora