Ir para conteúdo

POWERED BY:

Arquivado

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

brunobrobr1

problemas com update

Recommended Posts

Boa tarde, bom vou direto ao ponto, tenho 3 arquivos aqui o altera_cliente.php e o formulario_editar_cliente.php e o ler_cliente.php

 

bom e o seguinte o ler_cliente ele mostra oque tem no banco de dados faz uma listagem, funciona 100% o que esta dando errado e o altera_cliente.php tenho 2 campos que quero altera o nome_cliente e o cidade_cliente quando eu mando gravar a alteração nao retorna nenhum erro nem nada, e o campos continuam do mesmo jeito sem alterar, vou postar meus codigos:

 

 

ler_cliente.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sem título</title>
</head>

<body>
<div align="center" >
  <h1>Administrar Clientes</h1>
</div>
<form id="form1" name="form1" method="post" action="ler_cliente.php">
  <label for="filtrar">Pesquisa de cliente.:</label>
  <input name="filtrar" type="text" id="filtrar" size="50" />
  <input type="submit" name="button" id="button" value="Pesquisar" />
</form>
<p><a href="formulario_insere_cliente.php">Cadastrar novo cliente</a></p>
<div align="center"></div>
<div align="center">
  <table width="1011" border="1" cellspacing="5" cellpadding="5">
    <tr>
      <td colspan="4"><div align="center">Clientes</div></td>
    </tr>
    <tr>
    </tr>
    <tr>
      <td width="331"><div align="center"><a href="ler_cliente.php?ordem=nome_cliente">Nome</div></td>
      <td width="73"><div align="center"><a href="ler_cliente.php?ordem=cidade_cliente">Cidade</div></td>
      <td colspan="2"><div align="center">Ações</div></td>
    </tr>
    <?php
	// faz conexao com o banco de dados
	require 'conexao.php';
	// tabela se ordem for igual a zero vai iniciar com o bai_nome
					if (@$_REQUEST['ordem'] == '')
						$ordem = "nome_cliente";
					else
						$ordem = $_REQUEST['ordem'];
										
	// campo filtrar pesquisa
					if (@$_REQUEST['filtrar'] == '')
						$filtrar = "";
					else
						$filtrar = $_REQUEST['filtrar'];
	$sql_select = "select * from clientes where nome_cliente like'" . $filtrar . "%' order by ". $ordem;
	$resultado = mysql_query($sql_select);// executa a variavel sql_select
	
	// função if para ver se deu erro ou nao 
					if(!$resultado)
						echo tratar_erros(mysql_errno());
					else
						{	
										// achar o numero de registros
										$numero_registros = mysql_num_rows($resultado);
															
										// laço de repetição para mostrar informações
										while($registro = mysql_fetch_array($resultado))
																	{
									?>
										<tr>
										  <td align="center"><b><?php echo strtoupper($registro['nome_cliente']); ?></b></td>
										  <td align="center"><b><?php echo strtoupper($registro['cidade_cliente']); ?></b></td>
										  <td width="42"><div align="center"><a href="formulario_editar_cliente.php?nome_cliente=<?php echo $registro['nome_cliente']?>&cidade_cliente=<?php echo $registro['cidade_cliente']?>">Alterar</a></div></td>
										  <td width="41"><div align="center">Excluir</div></td>
										</tr>
                              
                              <?php
						 }
								} ?>
    <tr>
      <td colspan="4"><div align="center">Total de clientes encontrados.:<?php if ($numero_registros == '')
	  																			 echo " Nenhum cliente encontrado";
																				else 
																					echo " ".$numero_registros;?>
      </div></td>
    </tr>
  </table>
</div>
<p> </p>
</body>
</html>

formulario_editar_cliente.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sem título</title>
</head>

<body>
<form id="form1" name="form1" method="post" action="">
  	<div align="center"><b>Editar Cliente</b> </div>
</form>
<p> </p>
<form id="form2" name="form2" method="post" action="alterar_cliente.php">
  <p>
    <label for="altera_nome">Alterar nome.:</label>
    <input name="altera_nome" type="text" id="altera_nome" size="40" value="<?php echo $_REQUEST['nome_cliente'];?>"/>
  </p>
  <p>
    <label for="altera_cidade">Alterar cidade.:</label>
    <input name="altera_cidade" type="text" id="altera_cidade" size="30" value="<?php echo $_REQUEST['cidade_cliente'];?>"/>
  </p>
  <p>
    <input type="submit" name="button" id="button" value="Alterar" />
  </p>
</form>
<p> </p>
</body>
</html>

altera_cliente.php:

<?php 
   require 'conexao.php';




$sql_altera = "update clientes set nome_cliente = '" .$_POST['alterar_nome']."' where cidade_cliente = '". $_POST['alterar_cidade']."'"; 
// executando o $sql_insere
            $resultado = mysql_query($sql_altera); 
if(!$resultado)
//echo mysql_errno().mysql_error();
echo tratar_erros(mysql_errno());
else
{
header("Location: ler_cliente.php");
exit;
}
//echo "Gravado com sucesso"; 
?>

Creio eu que o problema e no altera_cliente.php, lembrando que eu quero editar os 2 campos.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

No atributo name dos campos do formulário está escrito "altera_" e no comando sql está escrito "alterar_".

Os campos chegam em branco no banco de dados e não alteram.

Compartilhar este post


Link para o post
Compartilhar em outros sites

No atributo name dos campos do formulário está escrito "altera_" e no comando sql está escrito "alterar_".

Os campos chegam em branco no banco de dados e não alteram.

Amigo eu alterei aqui , mais ainda continua retornando nada , nenhuma alteração, olha

$sql_altera = "update clientes set nome_cliente = '" .$_POST['altera_nome']."' where cidade_cliente = '". $_POST['altera_cidade']."'";

sera que tenho que acrescentar o ID ? que esta no banco de dados ? no banco de dados tenho 3 colunas o id,nome_cliente e o cidade_cliente mais que aparece no formulario sao so os nome do cliente e a cidade.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Os nomes dos arquivos estão corretos?

No action do form está alterar_cliente.php, no exemplo que você passou altera_cliente.php.


Ah... agora que eu vi.

Você está colocando o segundo campo como critério de alteração (WHERE).

Você teria que fazer algo assim:

  <input type='hidden' name='id_cliente' value="<?php echo $_REQUEST['id_cliente'];?>">
  <p>
    <label for="altera_nome">Alterar nome.:</label>
    <input name="altera_nome" type="text" id="altera_nome" size="40" value="<?php echo $_REQUEST['nome_cliente'];?>"/>
  </p>
  <p>
    <label for="altera_cidade">Alterar cidade.:</label>
    <input name="altera_cidade" type="text" id="altera_cidade" size="30" value="<?php echo $_REQUEST['cidade_cliente'];?>"/>
  </p>

E no alterar.php

<?php 
   require 'conexao.php';




$sql_altera = "update clientes set nome_cliente = '" .$_POST['alterar_nome']."', set cidade_cliente = '". $_POST['alterar_cidade']."' where id_cliente = ". $_POST['id_cidade']." "; 
// executando o $sql_insere
            $resultado = mysql_query($sql_altera); 
if(!$resultado)
//echo mysql_errno().mysql_error();
echo tratar_erros(mysql_errno());
else
{
header("Location: ler_cliente.php");
exit;
}
//echo "Gravado com sucesso"; 
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom me tire so uma duvida aqui, ainda nao testei isso que vc me passou nao, mais e o seguinte no meu banco de dados esta somente id

entao por que que no formulario vou acrescentar isto ?

<input type='hidden' name='id_cliente' value="<?php echo $_REQUEST['id_cliente'];?>">

bom no id_cliente ai eu posso colocar somente o ''id" ? pois no banco de dados esta so id e nao id_cliente e outra coisa no sql_altera no final vc colocou id_cidade por que ? nao seria somente id nao ? nao entendi essas mudança ano amigo rs, poderia me explicar pra min aprender ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode colocar os nomes que quiser, desde que coincidam com as colunas do banco.

Eu esqueci de trocar o id_cidade no sql_altera.

Vou tentar desenhas pra você:

Você fez isso:

update cliente = altere a tabela clientes;

set nome_cliente = '" .$_POST['alterar_nome']."' = atualize a coluna nome_cliente com a informação do input alterar_nome;

where cidade_cliente = '". $_POST['alterar_cidade']."'"; = quando a coluna cidade_cliente for igual a informação do input alterar_cidade;

 

Nesse caso, você colocaria o mesmo nome para todos os registros que tivesse a cidade cadastrada no banco igual à cidade que você informou no formulário.

 

Com o id, você só vai alterar os dados do cliente que tem aquele id.

$sql_altera = "update clientes set nome_cliente = '" .$_POST['alterar_nome']."', set cidade_cliente = '". $_POST['alterar_cidade']."' where id = ". $_POST['id_cliente']." "; 

Compartilhar este post


Link para o post
Compartilhar em outros sites

A sim acho que intendi, bom fiz as alterações que você me falou :

$sql_altera = "update clientes set nome_cliente = '" .$_POST['altera_nome']."', set cidade_cliente = '".$_POST['altera_cidade']."' where id = ".$_POST['id_cliente']."";

Mais na hr que eu vou gravar agr esta dando o seguinte erro.:

 

1064You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'set cidade_cliente = 'Palmeirassss' where id =

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sobrou um SET.

$sql_altera = "update clientes set nome_cliente = '" .$_POST['altera_nome']."', cidade_cliente = '".$_POST['altera_cidade']."' where id = ".$_POST['id_cliente']."";

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Sobrou um SET.

$sql_altera = "update clientes set nome_cliente = '" .$_POST['altera_nome']."', cidade_cliente = '".$_POST['altera_cidade']."' where id = ".$_POST['id_cliente']."";

Bom agora apareceu um outro erro :

 

1064You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '

 

este nao consegui indentificar não,

 

tipo no formulario para fazer a alteração esta dando esta menssagem de erro aqui o:

 

Notice: Undefined index: id_cliente in C:\wamp\www\videoaulas_php_neri\banco de dados\sistema_cliente_bruno\formulario_editar_cliente.php on line 14 Call Stack #TimeMemoryFunctionLocation 10.0000142736{main}( )..\formulario_editar_cliente.php:0 ">

 

Mais so que esta menssagem eu acho que interfere em nada nao ne ? ai pra ela sumir eu coloquei um "@" no $_POST ai ela sumiu, agora no editar esta dando esse erro que postei em cima agora, ja tirei o set ja, olhe.:

$sql_altera = "update clientes set nome_cliente = '" .$_POST['altera_nome']."',cidade_cliente = '".$_POST['altera_cidade']."' where id = ".$_POST['id_cliente']."";

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem que mostrar o ID para poder passar ele como parâmetro.

Você viu que eu mandei uma alteração no formulário também?

<input type='hidden' name='id_cliente' value="<?php echo $_REQUEST['id'];?>">

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara deu certo aqui haha, e que tinha esquecido de fazer uma alteração aqui no botão de alterar.: ele esta assim agora

 

<a href="formulario_editar_cliente.php?nome_cliente=
 <?php echo $registro['nome_cliente']?>&cidade_cliente=
 <?php echo $registro['cidade_cliente']?>&id=
                                          <?php echo $registro['id']?>">Alterar</a></div></td>

nao tinha acrescentado o id rs, bom cara agora estou com um outro problema aqui mais nao e de php nao e de html msm eu acho olha esse print aqui neste link

 

https://fbcdn-sphotos-h-a.akamaihd.net/hphotos-ak-xpa1/v/t34.0-12/10485401_625499667558977_1374102110_n.jpg?oh=191c1878e16a3d76c68788507fc29cca&oe=53C0AEB1&__gda__=1405138833_2a703ede05c85cfd07fe5208f1f19712

 

olha ai no id o numero 1 esta aparecendo muito pra frente, esta dando este espaço ai antes do numero e dos nome , nao quero que apareça isso. meu codigo do formulario aqui:

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sem título</title>
</head>


<body>
<form id="form1" name="form1" method="post" action="">
   <div align="center"><b>Editar Cliente</b> </div>
</form>
<p> </p>
<form id="form2" name="form2" method="post" action="alterar_cliente.php">
  
  <p>
    <label for="altera_nome">Id Cliente.:</label>
    <input name="id_cliente" type="text" id="id_cliente" size="40" value="<?php echo $_REQUEST['id'];?>"/>
  </p>
  <p>
    <label for="altera_nome">Alterar nome.:</label>
    <input name="altera_nome" type="text" id="altera_nome" size="40" value="<?php echo $_REQUEST['nome_cliente'];?>"/>
  </p>
  <p>
    <label for="altera_cidade">Alterar cidade.:</label>
    <input name="altera_cidade" type="text" id="altera_cidade" size="30" value="<?php echo $_REQUEST['cidade_cliente'];?>"/>
  </p>
  <p>
    <input type="submit" name="button" id="button" value="Alterar" />
  </p>
</form>
<p> </p>
</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, não coloca o id visível no formulário. Tu não vai alterar o id do cliente. NÃO se ALTERA o id de um registros de banco.

Coloca em um input hidden, como eu coloquei no exemplo anterior.

Compartilhar este post


Link para o post
Compartilhar em outros sites

a sim arrumei aqui, mais tipo eu tentei altera o id pelo formulario e nao alterou nao tipo e isso mesmo que eu quero saca, mais deixando ele invisivel tambem e bom, cara mais igual ta ai no print te mandei os formulario em baixo nome e cidade toda ves que eu clico neles o espaço aumenta cada vez mais saca, vai ficando esse espaço em branco

 

 

este espaço esta me atrapalhando pois tipo, quando eu vou pesquisar alguem no campo la filtrar de pesquisa se tiver este espaço num vai pesquisar direito.


Cara dei conta aqui haha , usei o comando trim

<?php echo trim ( $_REQUEST['nome_cliente']);?>

Muito obrigado pela sua ajuda rs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, esses espaços estão vindo de algum lugar, provavelmente do banco.


Como, aparentemente, o problema do post foi resolvido, o melhor é você criar uma nova postagem com o problema dos espaçamentos.

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.