PHP...Não altera dados do banco [Resolvido]

Oi,

Cansei de olhar esse código, não encontro nada de errado… :roll:

alterar.php


<?php
	include ("file:///C|/Users/ana.prado/Desktop/cadastro/conexao.php");

$codigo 	= $_POST["id"];
$nome 		= $_POST["nome"];
$endereco 	= $_POST["endereco"];
$bairro 	= $_POST["bairro"];
$cidade 	= $_POST["cidade"];
$cep 		= $_POST["cep"];
$uf 		= $_POST["uf"];
$fone 		= $_POST["fone"];
$cpf 		= $_POST["cpf"];
$email 		= $_POST["email"];
$sexo 		= $_POST["sexo"];

	$sql ="
	UPDATE cliente SET 
		nome= '$nome', 
		endereco='$endereco',
		bairro='$bairro', 
		cidade='$cidade', 
		cep='$cep', 
		uf='$uf', 
		fone='$fone', 
		cpf='$cpf', 
		email='$email', 
		sexo='$sexo'
	WHERE id_cliente = '$codigo' 
	
	";
	
	 $query=mysql_query($sql) or die("Houve um erro na gravação dos dados, verifique os valores passados");
	
	header("location:index.php?link=1"); 
	




?>

form_alterar.php


<?php
include ("conexao.php");
$nome_alterar = $_POST["selecao"];

	$sql = "SELECT * FROM cliente WHERE nome='$nome_alterar'";
	$resultado = mysql_query($sql) or die("não foi possível executar a consulta");
	
	$linha = mysql_fetch_array($resultado);
	
	$codigo 	= $linha[id_cliente];
	$nome 		= $linha[nome];
	$endereco 	= $linha[endereco];
	$bairro 	= $linha[bairro];
	$cep 		= $linha[cep];
	$cidade 	= $linha[cidade];
	$estado 	= $linha[estado];
	$fone 		= $linha[fone];
	$email 		= $linha[email];
	$cpf 		= $linha[cpf];
	$sexo 		= $linha[sexo];
?>
<html>
<head>
<title> Curso Completo de PHP -  </title>
</head>
<body>
<table width = "63%" border = "1" cellspacing = "0" align = "center" cellpadding = "0" bordercolor = "#000000">
<tr>
	<td> 
		<form name = "formcliente" method = "post" action="alterar.php">
		<table width = "100%" border = "1" cellspacing = "0" cellpadding = "0">
			<tr align = "center"><td colspan="6"> Editar Cadastro de clientes</td></tr>
			
			<tr> 
				<td> Nome:</td>
				<td colspan="5"><input name="nome" type = "text" size = "68" value="<?print $nome?>">
                <input name="codigo" type="hidden" size="68" value="<?print $codigo?>">
                
                </td>
			</tr>
			<tr> 
				<td> endereco:</td>
				<td colspan="5"><input name="endereco" type = "text" size = "68" value="<?print $endereco?>"</td>
			</tr>
			
			<tr> 
				<td> Bairro:</td>
				<td colspan="5"><input name="bairro" type = "text" size = "68" value="<?print $bairro?>"</td>
			</tr>
			
			<tr>
				<td> Cidade:</td>
				<td width="38%"><input name="cidade" type = "text" size = "30" value="<?print $cidade?>"></td>
				<td width = "8%"> Cep:</td>
				<td width="20%"><input name="cep" type = "text" size = "15" value="<?print $cep?>"> </td>
				<td width = "4%"> UF:</td>
				<td width="16%">
				
				<select name="uf"> 
					<option>MA </option>
					<option>SP </option>
					<option>RJ </option>
					<option>RN </option>
					<option>MS </option>
					<option>CE </option>
					<option>SE </option>					
				</select>
				</td>
			</tr>
			
			<tr>
				<td> Fone:</td>
				<td width="38%"><input name="fone" type = "text" size = "30" value="<?print $fone?>"></td>
				<td width = "8%"> CPF:</td>
				<td width="20%"><input name="cpf" type = "text" size = "15" value="<?print $cpf?>"> </td>
			</tr>
			
			<tr>
				<td> Email:</td>
				<td colspan="5"><input name="email" type = "text" size = "68" value="<?print $email?>"></td>				
			</tr>
			<tr>
				<td> Sexo:</td>	
			    <td colspan="5"><input name="sexo" type = "radio" value = "M" <? if (($sexo=="M") or ($sexo=="m")) {print "checked";}?>> Masculino				
				<input name="sexo" type = "radio" value = "F" <? if (($sexo=="F") or($sexo=="f")) {print "checked";}?>> Feminino</td>					
			</tr>
			<tr>
				
				<td colspan="6" align="center">	
				<input name="enviar" type = "submit" value = "Salvar"> 
				<input name="cancelar" type = "reset" value = "cancelar"> 
				</td>				
			</tr>
			
		</table>
		</form>	
	
	</td>
</tr>


</table>
</body>
</html>

selecionaAlterar.php

<? include ("file:///C|/Users/ana.prado/Desktop/cadastro/conexao.php");?>
<html>
<head>
<title> Curso Completo de PHP - </title>
</head>
<body>
	<form name="alterar" method = "post" action ="index.php?link=4">
	 selecione um nome:
	 <select name = "selecao" size "1" id="selecao" >

<?php
		$sql= "SELECT nome FROM cliente order by nome";
		$resultado = mysql_query($sql) or die ("não foi possível realizar a consulta, verifique a conexão");
		
		While($registro=mysql_fetch_array($resultado))
    	{ 
	?>
              <option >
              <?=$registro["nome"]?>
              </option>
              <?php 
 }
		mysql_free_result($resultado);
	 ?> 
	 
	 </select>
	<input name="ok" type = "submit" value = "OK">
	</form>
</body>
</html>

Uso mysql…

Bom, vamos tentar algumas coisas…
Normalmente, para concatenar strings em PHP, usa-se o operador “.” (ponto ou dot para quem prefere a língua bretã).
Como eu uso esta concatenação e nunca trabalhei com a forma que você coloca ali, pode ser que seja isso.
Então, primeiramente, sugiro tentar mudar de

$sql ="   
    UPDATE cliente SET   
        nome= '$nome',   
        endereco='$endereco',   
        bairro='$bairro',   
        cidade='$cidade',   
        cep='$cep',   
        uf='$uf',   
        fone='$fone',   
        cpf='$cpf',   
        email='$email',   
        sexo='$sexo'   
    WHERE id_cliente = '$codigo'
    ";

para

$sql ="UPDATE cliente SET   
        nome= '".$nome."',   
        endereco='".$endereco."',   
        bairro='".$bairro."',   
        cidade='".$cidade."',   
        cep='".$cep."',   
        uf='".$uf."',   
        fone='".$fone."',   
        cpf='".$cpf."',   
        email='".$email."',   
        sexo='".$sexo."'   
    WHERE id_cliente = '".$codigo."'";

Pois, se ele está interpretando como string normal, o id_cliente = $codigo nunca será encontrado, certo?

Segundo, para fins de verificação, coloque um

echo $query;

Só para sabermos se a query retornou algo ou não executou.
Qualquer coisa, avisa

Acho que a parte de concatenação não tem nada haver.

Você poderia postar o código de conexao.php? Imagino que este deva ser o programa mais importante a se analisar.

[]'s

drsmachado

Fiz como vc indicou e o erro continua o mesmo…

Unknown column ‘id_cliente’ in ‘where clause’

marciobarroso

Ai está…

<?php
$host= "localhost";
$usuario = "suporte";
$senha = "1234";
$banco = mysql_connect($host,$usuario,$senha) or die("Não foi possível fazer a conexão com servidor de banco de dados");
mysql_select_db("topologia",$banco) or die ("Não foi possível encontrar o banco de dados especificado")

?>

Opa…
Já temos um começo…

Tem o script do banco aí?

[quote=drsmachado]Opa…
Já temos um começo…

Tem o script do banco aí?[/quote]

Não, por que…

O erro diz que a coluna id_cliente não existe na tabela cliente.
Só vendo o banco de dados para confirmar.

[quote=drsmachado]O erro diz que a coluna id_cliente não existe na tabela cliente.
Só vendo o banco de dados para confirmar.[/quote]

Nossa, verdade em casa criei a tabela com id_cliente e aq só id… Vou fazer as alterações e dou o veredito rs…

Anime, o id no post tá com o nome só “id”. Tem certeza que a coluna é id_cliente? Não é só id, não?
Abraço!

Ah, aproveitando o ensejo: já deu pra ver que isso é um curso de PHP, mas se em Java temos PreparedStatements, em PHP temos a biblioteca PDO.
Não deixe de usá-la, serve exatamente pra mesma coisa.
Até! =)

Tirei o id_cliente, não da erro mas não altera…

Como assim?
Digo pra mudar de id_cliente pra id… foi isso? Entendi certo?

[quote=leoramos]Ah, aproveitando o ensejo: já deu pra ver que isso é um curso de PHP, mas se em Java temos PreparedStatements, em PHP temos a biblioteca PDO.
Não deixe de usá-la, serve exatamente pra mesma coisa.
Até! =)[/quote]

leoramos

É um curso mesmo rsrs… Pelo jeito vc já passou por ele, vou pesquisar sobre PDO…Mas quero resolver isso primeiro… :cry:

[quote=leoramos]Como assim?
Digo pra mudar de id_cliente pra id… foi isso? Entendi certo?[/quote]

Na tabela é só id, coloquei id_cliente por engano.

Não passei não, é que eu li no código “curso completo de php” haha
Pega o resultado do teu sql de consulta (antes da alteração) e dá um var_dump, e vê o que ele te traz.

Arruma esses includes ai…

coloca o diretorio do servidor e não o diretorio local.

[quote=leoramos]Não passei não, é que eu li no código “curso completo de php” haha
Pega o resultado do teu sql de consulta (antes da alteração) e dá um var_dump, e vê o que ele te traz.
[/quote]

rsrs…

Você está me deixando confusa… :oops:

[quote=dtxk]Arruma esses includes ai…

coloca o diretorio do servidor e não o diretorio local.[/quote]

Já fiz isso também e não muda nada…

Pessoal, desculpe sei que a intenção é boa, mas se for pra ficar jogando no bicho, jogo sozinha…

Agora que você arrumou, blz vamos lá…

seguinte, pega esse sql e executa na mão no banco de dados… e posta o resultado aqui.

E no ato de executar o sql verifica se o id está correto, coisa do tipo…

E vai postando aqui oq vc esta fazendo…

Então… quando você executa a query com o comando mysql_query, ela te da um retorno.
Pega essa variável e dá um var dump nela, assim:

É quase como um inspect, do debug do Eclipse pro Java.
Aí consegues ver o que tem na variável (se é que tá retornando algo) e outros dados que podem te interessar (se tem algo concatenado errado na String ou algo assim).
Inté!

Editado:
Aqui, o que o var_dump faz
http://php.net/manual/pt_BR/function.var-dump.php