Jump to content


Photo

Problema Na Alteração


  • Faça o login para participar
2 replies to this topic

#1 camis

camis

    Novato no fórum

  • Usuários
  • 9 posts
  • Sexo:Não informado

Posted 11/06/2003, 14:06

Oi, tudo bem?


Alguém sabe como resolver esse problema? Tipo, se eu quero alterar um campo de uma tabela, eu faço uma consulta, na página de resultado os campos retornados em caixas de texto de uma linha, conhecidos como edits em delphi, mostram apenas a 1ª palavra .

Exemplo :


Se na tabela estiver armazenado - Problema na alteração , mostra só problema e se eu alterar do jeito que está, sem digitar tudo novamente como estava antes, salva apenas o que estava mostando, no caso,
só Problema.

Alguém sabe o por que disso e como resolver esse problema ?

Não sei se ficou muito claro, qualquer coisa pergunte o que não entendeu que tentarei explicar melhor.

Muito obrigada.

Até mais.

#2 Thales Medeiros

Thales Medeiros

    24 Horas

  • Usuários
  • 426 posts
  • Sexo:Não informado
  • Localidade:Juiz de Fora/MG
  • Interesses:Programação em geral. Programo em PHP, ASP, PERL, VB, Delphi, C/C++, Java e com banco d dados<br><br>Gosto tb d ajudar. Se precisar d mim, basta postar uma msg no Forum! Se eu souber, te responderei...

Posted 11/06/2003, 14:26

Oi, camis! Oh eu aki d novo... : )

Bem... Se eu entendi direitinho o seu problema, o q está acontecendo é a falta de aspas envolvendo o registro. Com HTML, segundo a regra básica, deve-se usar aspas para conter todos os argumentos para os atributos de um campo. Por exemplo: segundo a W3C, isto não é tãããão correto:

<input type=text name=campo1 value=Eu>

O mais correto seria:

<input type="text" name="campo1" value="Eu">

No entanto, eu acho inútil usar tantas aspas, pois além de desnecessário, e de ocuparem bytes à toa, eles não vão gerar nenhum erro no browser. O primeiro exemplo é totalmente compatível com qquer browser. Mas... Já este exemplo aki sairia ERRADO:

<input type=text name=campo1 value=Thales Medeiros>

Isto, sim, é errado. Qdo vc vai colocar como valor de argumento de um campo um nome que contenha espaços, obrigatoriamente vc deve colocá-lo entre aspas. No caso deste último exemplo, só seria exibido na tela o valor Thales, portanto iria dar o erro q vc apresentou. Uma maneira certa de eu usar PHP para imprimir registros d campos q eu sei q podem conter espaços é assim (utilizarei o banco MySQL para exemplificar):

<?
$busca=mysql_query("SELECT coluna FROM tabela WHERE id=2;");
$colunas=mysql_fetch_array($busca);
echo "<input type=text name=campo1 value=\"$colunas[0]\">";
?>

Assim certamente não ocorreria tal erro. Claaaaro q isto pode não ser o q está ocorrendo, pois eu posso ter entendido errado sua dúvida (q não foi tão clara), portanto se isto não resolver seu problema, basta perguntar novamente...

Um abraço,
Thales Medeiros.
Sucesso é ganhar dinheiro fazendo o que você faria de graça.

#3 Thales Medeiros

Thales Medeiros

    24 Horas

  • Usuários
  • 426 posts
  • Sexo:Não informado
  • Localidade:Juiz de Fora/MG
  • Interesses:Programação em geral. Programo em PHP, ASP, PERL, VB, Delphi, C/C++, Java e com banco d dados&lt;br&gt;&lt;br&gt;Gosto tb d ajudar. Se precisar d mim, basta postar uma msg no Forum! Se eu souber, te responderei...

Posted 11/06/2003, 18:25

Oi, camis!

Bem... Recebi sua msg com o novo erro, mas como não tenho seu e-mail, vou responder aki, mesmo.

O código q vc mandou foi:

<?php
$sql="select * ";
$sql=$sql . "from andamento ";
$rs= mysql_query($sql, $conectar) or die("Não foi possível efetuar a consulta");
$linha = mysql_fetch_array($rs);
$situacao = $linha["situacao"];
?>
<input name = "txtsituacao" type = "text" id = "txtsituacao" value= <?php echo $situacao; ?> >

Não sei se te interessa aprender o q está fazendo ou simplesmente vc quer q este script funcione, mas vou supor q vc talvez queira aprender o q está acontecendo, portanto vou te dar algumas dicas e explicações.

Logo no início, nas duas linhas iniciais, já possui algo mto desnecessário. O operador "." (ponto final) em PHP possui como uma d suas funções unir dois conjuntos d caracteres (mais conhecidos como strings). Repare as duas primeiras linhas:

$sql="select * ";
$sql=$sql . "from andamento ";

Ele primeiro atribui um valor à variável $sql, depois adiciona um outro valor ao já existente nesta variável. Duas linhas de código desnecessárias. Pode diminuir isto, fazendo assim:

$sql="select * from andamento";

Depois tem mais uma coisa errada, q é justamente o q vc ñ entendeu. Lembra-se daquela baboseira q eu te expliquei sobre o uso das aspas? Pois bem... A questão é a seguinte: você fez a consulta toda no banco d dados, numa boa, depois colocou a situação na variável $situacao. Até aí, tudo ótimo! Tendo isto feito, vc já possui o q deseja na variável $situacao. Você pode imprimir este valor onde quiser no documento, bastando usar a função "echo" do PHP, ou alguma outra função de impressão, acompanhando a variável q deve ser impressa no documento. Existe dois meios de se fazer isto em PHP. Um deles é o q está sendo usado:

<?php echo $situacao;?>

Isto não está errado! Mesmo! Mas existe ainda um jeito mais fácil para diminuir o q deve ser escrito. Ao invés disto, vc pode simplesmente usar este jeito aki:

<?=$situacao?>

É a mesma coisa! Mas isto não é o q está errado em seu código. O q está errado é a falta das aspas. Vou te mostrar como está agora, e como seria o resultado. Acompanhe:

Se a variável $situacao possuir o valor "legalmente legal", então o resultado a partir do seu script vai ser assim:

<input name = "txtsituacao" type = "text" id = "txtsituacao" value= <?php echo $situacao; ?> >

Repare que onde possui <?php echo $situacao; ?> vai simplesmente ser trocado pelo valor da variável $situacao. Então ficará assim:

<input name = "txtsituacao" type = "text" id = "txtsituacao" value= legalmente legal >

E isto é errado! Pq lembra do q eu te falei? Se vc vai colocar algum valor para um argumento da tag em HTML, ou este valor não possui espaços e pode estar sem aspas, ou se ele tem espaços, use as aspas! Senão o navegador vai interpretar que "legalmente" é o valor do atributo "value", e "legal" já será outro atributo, pois tem vários espaços separando tudo. Quando vc colocar as aspas entre "legalmente legal", o navegador saberá, então, q estas duas palavras pertencem ao atributo "value". E é isto que nós queremos. Portanto você deve colocar entre aspas o q vai ser impresso pelo PHP. Vou ainda melhorar o código, pois tem um monte de espaços e aspas desnecessários:

<input name=txtsituacao type=text id=txtsituacao value="<?=$situacao?>">

Viu só? Agora não existe a possibilidade de algum valor da variável $situacao que possua espaços cause o erro q estava dando. O código completo (alterado) que deve ficar no seu arquivo é o seguinte:

<?php
$sql="select * from andamento";
$rs=mysql_query($sql, $conectar) or die("Não foi possível efetuar a consulta");
$linha=mysql_fetch_array($rs);
$situacao=$linha["situacao"];
?>
<input name=txtsituacao type=text id=txtsituacao value="<?=$situacao?>">

Tente aí e me diga depois se deu certo, ok?

Um grande abraço,
Thales Medeiros.
Sucesso é ganhar dinheiro fazendo o que você faria de graça.




0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq