Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #57 da revista programar. Faz já o download aqui!

Zeux

Problema com Textarea

Mensagens Recomendadas

Zeux    0
Zeux

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:

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
kingless    0
kingless

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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Zeux    0
Zeux

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...

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Zeux    0
Zeux

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:

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Zeux    0
Zeux

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Zeux    0
Zeux

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","    ");

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


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade