Ir para conteúdo
Fórum Script Brasil
  • 0

Variável Dentro Do Campo "textarea":


fsphp

Pergunta

Como é que eu trabalho com uma variável dentro do campo "textarea"?

Por exemplo, eu tenho um formulário e um dos campos é um textarea, que eu quero que já contenha uma informação dentro.

$conteudo = Primeira linha.\r\nSegunda linha.\r\nTerceira linha.\r\nQuarta linha.\r\n;

form_conteudo.html

<form method=post action=muda_conteudo.php>

<textarea cols="20" rows="20">$conteudo</textarea></form>

Quando eu entrar nessa página, o conteúdo já vai aparecer dentro da textarea. Aí eu excluo a "Terceira linha." e coloco no lugar uma "Nova linha."

Daí eu vou na pagina visualiza_conteudo.htm e vejo o seguinte:

Primeira linha.

Segunda linha.

Nova linha.

Quarta linha.

Como eu devo coordenar a variável $conteudo para que isso seja possível? blink.gif

Link para o comentário
Compartilhar em outros sites

21 respostass a esta questão

Posts Recomendados

  • 0

Não é isso. Eu quero visualizar esse conteúdo dentro do campo textarea na página que tem esse formulário e fazer a auteração nele para visualizar em "visualiza_conteudo.htm", com a "Nova linha" inserida lá dentro, no lugar da que eu apaguei.

Link para o comentário
Compartilhar em outros sites

  • 0

Vamos por partes. Nesse caso teremos três páginas (para não complicar fazendo o form junto com a página que processará suas informações).

Na página do form_conteudo.php, teremos um campo com a variável conteúdo assim:

<textarea rows=20 cols=20>$conteudo</textarea>

Depois teremos a página visualiza_conteudo.php que vai mostrar o que eu escrevi no form. Digamos que vai aparecer:

Dia 29 (quarta) - Filé de abadejo com fritas

Dia 30 (quinta) - Frango à passarinho com pure de batata

Dia 31 (sexta) - Camarão na moranga com arroz a grega

Quando eu voltar para a página form_conteudo.php, dentro da textarea, vou encontrar esse mesmo cardápio. Se eu quiser fazer uma alteração nele, é só "substitutir" o novo texto em cima, por exemplo:

Dia 29 (quarta) - Filé de abadejo com fritas

Dia 30 (quinta) - Frango xadrez com polenta

Dia 31 (sexta) - Camarão na moranga com arroz a grega

Com isso, quando eu for para a página visualiza_conteúdo.php, eu verei o novo cardapio. Se tiver algo de errado, não preciso redigir tudo novamente e pedir para o php substituir o conteúdo antigo pelo novo. Basta alterar apenas o que for necessário.

1- Essa de formulário ela tem que ter extensão .php pois está trabalhando com variáveis. Agora, eu devo fazer a declaração da super global $_POST['conteudo'] nessa página?

2- Vou declarar globalmente a $conteúdo, dentro da função que fará a atualização no banco de dados, certo?

É mais ou menos aqui que está um 'enrosco". Eu não consegui atribuir um valor à essa variável. Fiz assim:

$todo_conteudo = mysql_query("SELECT * FROM cardapio");

while($dados= mysql_fetch_array($todo_conteudo)

{

$conteudo = $dados[0];

echo "$conteudo<br>";

global $conteudo

Está certo isso?

Link para o comentário
Compartilhar em outros sites

  • 0

Aí pessoal, agora corrigi meu post acima. Eu tinha colocado errado pois estou tentando fazer com o while (acima) e tentei também utilizando "for" com mysql_fetch_rows.

Alguém entendeu minha dúvida? huh.gif

Link para o comentário
Compartilhar em outros sites

  • 0

Cara... ainda não entendi a dificuldade...

1º. Da onde vem essa informação que aparece na textarea? De um banco de dados? Todo o conteúdo é um campo do banco de dados? Cada linha é um campo do banco de dados?

Porque você, simplesmente, quando for atualizar o conteúdo pega todo o conteúdo da textarea e passa por cima do que estava gravado antes? huh.gif

Link para o comentário
Compartilhar em outros sites

  • 0

1º. Da onde vem essa informação que aparece na textarea? De um banco de dados? Todo o conteúdo é um campo do banco de dados? Cada linha é um campo do banco de dados?

Essa informação pode vir de um bnco de dados, sendo de um campo só.

Pode ser uma ou várias linhas dentro desse campo.

Também pode ser utilizado arquivos .txt.

Só que não sei o que é melhor.

Porque você, simplesmente, quando for atualizar o conteúdo pega todo o conteúdo da textarea e passa por cima do que estava gravado antes? huh.gif

Se for um cardápio de restaurante, com pratos diários, pode ser que eu queira alterar o prato de um dia ou outro.

Se tiver 30 dias, são trinta pratos, certo?

Para mudar um ou dois pratos, o ideal seria ir nesse formulário e já encontrar o texto todo lá dentro ($conteudo), daí que eu mudo só a linha que desejar.

Fui mais claro agora? blink.gif

Link para o comentário
Compartilhar em outros sites

  • 0

Foi... mas a minha pergunta continua.

Pensa na situação... vocêm um registro contendo o seguinte:

Dia 29 (quarta) - Filé de abadejo com fritas

Dia 30 (quinta) - Frango à passarinho com pure de batata

Dia 31 (sexta) - Camarão na moranga com arroz a grega

Certo? então você joga isso dentro de uma textarea...

A textarea fica com o conteúdo:

Dia 29 (quarta) - Filé de abadejo com fritas

Dia 30 (quinta) - Frango à passarinho com pure de batata

Dia 31 (sexta) - Camarão na moranga com arroz a grega

Mas aí você altera o conteúdo da textarea pra:

Dia 29 (quarta) - Filé de abadejo com fritas

Dia 30 (quinta) - Frango xadrez com polenta

Dia 31 (sexta) - Camarão na moranga com arroz a grega

O que você tem a fazer é pegar todo esse conteúdo e gravar por cima do registro antigo. Não? huh.gif

Link para o comentário
Compartilhar em outros sites

  • 0

Acho que a pedra no meu sapato é a variável $conteudo dentro da textarea. nunca usei assim e estou achando meio confuso.

<textarea rows=20 cols=20>$conteudo</textarea>

Como é que eu vou declarar ela como $_POST['conteudo'] e ao mesmo tempo ela será atualizada na página do form... essas coisas. blink.gif

Link para o comentário
Compartilhar em outros sites

  • 0

Como é que eu vou declarar ela como $_POST['conteudo'] e ao mesmo tempo ela será atualizada na página do form... essas coisas.
Como assim? blink.gif

Ela funciona exatamente como um <input type='text'>, se você coloca alguma coisa escrita entre as tags que abrem e fecham ela, é como se você tivesse colocado alguma coisa no value='' de um campo normal.

Não entendi esse "ao mesmo tempo ser atualizada"... blink.gif

Link para o comentário
Compartilhar em outros sites

  • 0

Eu não tenho que declarar as super-globais para trabalhar com variãveis enviadas por um formulário?

$conteudo = $_POST[´conteudo'];

No caso dessa outra página que envia o formulário, e que tem a variável dentro do input, no campo value, não preciso fazer a declaração da super-global?

Link para o comentário
Compartilhar em outros sites

  • 0

Eu não tenho que declarar as super-globais para trabalhar com variãveis enviadas por um formulário?

Sim, tem...

No caso dessa outra página que envia o formulário, e que tem a variável dentro do input, no campo value, não preciso fazer a declaração da super-global?

Precisa fazer na página que recebe o formulário. Essa página que recebe o formulário vai gravar no banco.

A página que cria a textarea vai puxar os valores do banco...

Veja esse esquema:

A: página que exibe o formulário

B: página que recebe o formulário

C: banco de dados

1- C manda informação para A

2- A manda informação para B

3- B manda informação para C

1- C manda informação para A

...E o clico se repete

Entendeu? huh.gifph34r.gif

Link para o comentário
Compartilhar em outros sites

  • 0

Acho que entendi sim. No caso da página do formulário, claro, não precisa declarar a super-global, pois não está recebendo o dado do form, está apenas recebendo do banco.

Então nessa página do form eu tenho que fazer a conexão com o banco de dados, certo? Antes ou depois do form? Ou tanto faz?

Link para o comentário
Compartilhar em outros sites

  • 0

Agora está funcionando o programinha, mas de forma deficiente. Dentro do "textarea" do formulário já está aparecendo o conteúdo que foi enviado ao banco de dados e é feito o UPDATE desse conteúdo toda vez que o formulário é reenviado com as auterações.

O que está deficiente é o seguinte:

1) Quando consulto a página que vai mostrar os "AVISOS", o programa está repetindo o conteúdo em duplicidade.

2) O conteúdo mostrado está sendo colocado todo ele numa mesma linha, e não da forma espaçada como foi digitada no textarea.

3) Toda vez que eu vou no formulário, a primeira linha é delocada para a esquerda, como se digitasse TAB.

Segue abaixo os scripts:

=================

form_mural_avisos.php

================

<?php

include "include.php";

$seleciona_recados = mysql_query("SELECT mural_recados FROM recados");

$recados = mysql_result($seleciona_recados, 0, "mural_recados");

?>

<table width="750" border="0" cellspacing="1" cellpadding="1">

<tr>

<td><table width="750" border="0" cellspacing="1" cellpadding="1">

<tr>

<td>

</td>

</tr>

<tr>

<td class="verdanavermelho18bold"><div align="center">MURAL DE AVISOS</div></td>

</tr>

<tr>

<td><P align="center"><a href="mural_de_avisos.php">VOLTAR</a></P></td>

</tr>

<tr>

<td><form name="form1" method="post" action="insere_aviso.php">

<textarea name="mural_recados" cols="50" rows="10">

<?php

echo "$recados";

?>

</textarea>

<br>

<input type="submit" name="Submit" value="ENVIAR">

<input type="submit" name="Submit2" value="APAGAR">

</form>

=============

insere_avisos.php

=============

<?php

include "include.php";

$mural_recados = $_POST['mural_recados'];

mysql_query("UPDATE recados SET mural_recados = '$mural_recados'")

or die("Não foi possível anotar o recado!");

?>

<html>

<head>

<title>Documento sem t&iacute;tulo</title>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

</head>

<body>

<p align="center"><a href="form_mural_avisos.php">VOLTAR</a></p>

</body>

</html>

===============

mural_de_avisos.php

===============

<html>

<head>

<title>MURAL DE AVISOS</title>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

<link href="muralcultural_teste_ycom.css" rel="stylesheet" type="text/css">

</head>

<body bgcolor="#FFCC66" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">

<table width="750" border="0" cellspacing="1" cellpadding="1">

<tr>

<td><table width="750" border="0" cellspacing="1" cellpadding="1">

<tr>

<td>&nbsp;</td>

</tr>

<tr>

<td class="verdanavermelho24bold"><div>MURAL DE AVISOS</div></td>

</tr>

<tr>

<td><p><a href="administra_avisos.htm">VOLTAR</a></p></td>

</tr>

<tr>

<td>

<?php

include "include.php";

$seleciona_recados = mysql_query("SELECT mural_recados FROM recados");

$resultado = mysql_fetch_array($seleciona_recados);

//$linhas = mysql_num_rows($seleciona_recados);

foreach($resultado as $elemento)

{

echo "<p><font face=\"verdana\" color=\"0000ff\" size=\"2\"><b>$elemento</b></font><br>";

}

//echo "$resultado<br>";

?>

</td>

</tr>

<tr>

<td>&nbsp;</td>

</tr>

</table></td>

</tr>

</table>

</body>

</html>

Link para o comentário
Compartilhar em outros sites

  • 0

Quanto aos seus problemas:

1) Quando consulto a página que vai mostrar os "AVISOS", o programa está repetindo o conteúdo em duplicidade.

No arquivo mural_de_avisos.php deixe assim:

<?php

include "include.php";

$seleciona_recados = mysql_query("SELECT mural_recados FROM recados");

$resultado = mysql_fetch_array($seleciona_recados);

//$linhas = mysql_num_rows($seleciona_recados);

while($aviso = $resultado) {

echo "<p><font face='verdana' color='0000ff' size='2'><b>".$aviso["mural_recados"]."</b></font><br>";

}

?>

2) O conteúdo mostrado está sendo colocado todo ele numa mesma linha, e não da forma espaçada como foi digitada no textarea.

Em um textarea toda vez que se tecla enter, esse "enter" é enviado como "\n", mas como na exibição o código é html esses "\n" devem ser convertidos para "<br>". Assim:

No arquivo insere_avisos.php conserte a seguinte linha:

$mural_recados = $_POST['mural_recados];

para deixá-la assim:

$mural_recados = nl2br($_POST['mural_recados']);

Essa função nl2br() converte os "\n" para "<br>"

-----------------------------------------------------------

Quanto a sua terceira dúvida não sei o que possa ser. Espero ter ajudado. Um abraço.

Link para o comentário
Compartilhar em outros sites

  • 0

Valeu a força Daniel, mas não funcionou.

A função nl2br() fez com que fossem inseridos "<br>" na textarea do formulário, toda vez que eu acessava essa página. Cada vez que eu enviava um novo recado, esses <br> passavam para o Mural de Recados ....

Quanto ao while(), ele gerou um loop ininterrupto. sad.gif

O que eu não estou conseguindo fazer é o seguinte: inserir um texto formatado no banco de dados e depois exibí-lo no navegador, também formatado. huh.gif

O pior é que sei que é fácil, só não sei fazer como e acho que não estou conseguindo ser claro na minha explicação. Não sei se deu para entender?

Link para o comentário
Compartilhar em outros sites

  • 0

Aí pessoal,

Com banco de dados não acertei fazer. Mas consegui usando arquivos .txt. Foi a melhor saída que encontrei e funcionou direitinho.

Valeu a força galera.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,6k
×
×
  • Criar Novo...