Ir para conteúdo

POWERED BY:

Arquivado

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

reme

[Resolvido] armazenando valor em variavel

Recommended Posts

olá pessoal, tenho uma duvida e como sempre acredito que seja algo bem simples novamente...

 

tenho um textarea em javascript para cidade e estado, desses que se alto-completam, até aí tudo bem, eu escolho o estado ele aparece a as cidades, eu escolho e mando salvar, os valores são enviados para uma outra pagina.php que faz a função de guardar estes valores no bd...

até aí tudo bem isso também está funcionando.

 

agora o problema: quando mando salvar, ele salva apenas o id da cidade e do estado no banco, e gostaria de salvar o nome mesmo para facilitar na hora da pesquisa.

 

quando fiz uma pagina para exibir os dados do bd fiz uma formula para transformar o id em descrição com o nome da cidade e estado,e agora tentei usar a mesma formula para salvar o nome no bd mais nao funfou... me ajudem aí

 

eis o codigo (bagunçado, estou apredendo a comentar meus codigos agora)

 

         <?php
include "../conect/conecta.php";

 function moeda($get_valor) {  
     $source = array('.', ',');  
     $replace = array('', '.');  
     $valor = str_replace($source, $replace, $get_valor); //remove os pontos e substitui a virgula pelo ponto  
     return $valor; //retorna o valor formatado para gravar no banco  
     }  

    $datacad =  $_POST["data"];
	$novadata  = substr($datacad,6,4)."-".substr($datacad,3,2)."-".substr($datacad,0,2);
	$cliente = addslashes($_POST["cliente"]);
	$orcado = addslashes($_POST["orcado"]);
	$estado = $_POST["listEstados"];
	$cidade = $_POST["listCidades"];
	$end_entrega = addslashes($_POST["end"]);
	$empresaparceira = addslashes($_POST["empresa"]);
	$localidade = addslashes($_POST["localidade"]);
	$quilometro = $_POST["km"];
	$v_transporte=moeda($_POST["transporte"]);
	$v_equipe =moeda($_POST["equipe"]);
    $dataentrega = $_POST["entrega"];
	$novaentrega = substr($dataentrega,6,4)."-".substr($dataentrega,3,2)."-".substr($dataentrega,0,2);
	$veiculo = addslashes($_POST["veiculo"]);
	$observacoes = addslashes($_POST["obs"]);
	$descricao = addslashes($_POST["desc"]);

	include "../cidade-estado/conexao.php";		
	$sql = "SELECT * FROM cidades WHERE ID_CIDADE = '$cidade'";

$result = mysql_query($sql)
or die ("Não foi possível realizar a consulta ao banco de dados");

while ($linha = mysql_fetch_array($result)) {

	$id_cidade = $linha["ID_CIDADE"];
	$dsc_cidade = $linha["DSC_CIDADE"];

	}
	$sql = "SELECT * FROM estados WHERE ID_ESTADO = '$estado'";

$result = mysql_query($sql)
or die ("Não foi possível realizar a consulta ao banco de dados");

while ($linha = mysql_fetch_array($result)) {

	$id_estado = $linha["ID_ESTADO"];
	$dsc_estado = $linha["DSC_ESTADO"];

	}

	$sql = "INSERT INTO cadorcamento 
	(datacad, cliente, orcado, empresaparceira, localidade, quilometro, cidade, estado, end, dataentrega, veiculo, observacao, descricao, 
	valorequipe, valortransporte) 
	VALUES 
	('$novadata', '$cliente', '$orcado', '$empresaparceira', '$localidade', '$quilometro', '$cidade', '$estado', '$end_entrega', '$novaentrega',
	'$veiculo', '$observacoes', '$descricao', '$v_equipe', '$v_transporte')";

$sql = mysql_query($sql) or die ("Houve erro na gravação dos dados, por favor, clique em voltar e verifique os campos obrigatórios!");

?>

 

ele cai no erro do $sql do INSERT, quanto a ter variaveis com o mesmo nome eu ja mudei mais o erro continua o mesmo... um abraço a todos.

 

ah mais uma coisa, ja tentei também fazer essa "transformação" de id para descrição na pagina de pesquisa.php também, mais não rolou, porém na pagina exibir.php funciona perfeitamente

 

Obs: se eu der um echo nas variaveis $dsc_estado e $dsc_cidade elas aparecem corretamente, porém na inserção cai diretamente no erro do insert, não entendo o que está acontecendo, só pode ser uma virgula ou algum colchete no lugar errado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

reme, cara você já viu qual erro que está dando. Troque no seu INSERT conforme demonstrado abaixo e poste o erro.

// Seu código
$sql = mysql_query($sql) or die ("Houve erro na gravação dos dados, por favor, clique em voltar e verifique os campos obrigatórios!");

// Novo código
$sql = mysql_query($sql) or die (mysql_error());

Pelo que entendi nos campos cidade e estado ao invés de salvar o ID você qria armazenar o nome deste, porém esses campos na sua tabela é do tipo varchar?

Outra coisa que pode ser seu erro é pq você utiliza uma palavra reservada do SQL a palavra "end" que deve ser seu endereço, isso também pode estar gerando erro. Faça essa mudança que comentei e poste o erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

reme, cara você já viu qual erro que está dando. Troque no seu INSERT conforme demonstrado abaixo e poste o erro.

// Seu código
$sql = mysql_query($sql) or die ("Houve erro na gravação dos dados, por favor, clique em voltar e verifique os campos obrigatórios!");

// Novo código
$sql = mysql_query($sql) or die (mysql_error());

Pelo que entendi nos campos cidade e estado ao invés de salvar o ID você qria armazenar o nome deste, porém esses campos na sua tabela é do tipo varchar?

Outra coisa que pode ser seu erro é pq você utiliza uma palavra reservada do SQL a palavra "end" que deve ser seu endereço, isso também pode estar gerando erro. Faça essa mudança que comentei e poste o erro.

 

Aí wess valeu a atenção cara, agente que ta iniciando tem que se acostumar a fazer esse tipo de teste antes de postar. (demerito pra mim)

realmente o erro é simples...

Depois de fazer o que você me disse, estorou a seguinte mensagem: Table 'nova.cadorcamento' doesn't exist;

 

Acredito que esse erro esteja sendo gerado pq Cidades-Estados estão em uma bd chamada nova, e o local onde eu quero salvar as informações estão em uma bd chamada cadorcamento.

 

no Script tem dois includes, um que faz conexão com o db nova, e outro que faz conexão com o db cadorcamento.

 

Mais e agora o que devo fazer pra resolver isto?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Provavelmente deve haver um mysql_select_db() em seu conecta.php

 

Para trabalhar com queries assim:

 

SELECT * FROM banco.tabela WHERE condição

Não se pode ter mysql_select_db('bd1'); se não ele encara

banco.tabela como uma tabela da base 'bd1' tabela

 

Mas fique atento, se remover a função mysql_select_db() TODAS

as queries do teu sistema terão de apontar a qual banco a tabela

pertence (banco.tabela).

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

reme, meu caro então o que acontece para você pegar os dados da Cidade e Estado você fez a conexão com o Banco nova daí para Inserir você precisa fazer uma conexão com o BD cad_orcamento. Não se esqueça de fechar as conexões que você criou, pois assim o seu BD ficará com várias conexões abertas sem uso.

Veja se isso lhe ajude e qualquer coisa me fale.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu, eu consegui sim...

Eu ja tinha um include que chamava a conexão com o cadorcamento antes do include que chamava a conexão que abria a bd nova, seguindo o conselho do Wess eu apenas recortei e colei o include depois da parte onde eu mexia com o db nova, antes do insert no caorcamento.

 

só mais uma pergunta, sobre a questão de fechar as conexões, isso é muito necessário? não tenho o habito de faze-lo, os meus scripts normalmente são bem leves, ou ainda se eu começar a fazer, devo fechar sempre? pq sempre volta-se a usar não é? em todos os meus scrpits eu incluo o arquivo de conexão.

Compartilhar este post


Link para o post
Compartilhar em outros sites

reme, o que acontece é o seguinte antes de finalizar a lógica da sua página você deve utilizar o mysql_close(linkDeConexao) para fechar a conexão, pois é mais do que necessário é o correto a se fazer. Pq como lhe falei o SGDG fica com as conexões abertas até você pedir para fechar esta. Pelo conhecimento que tenho isso não é feito por default pelo PHP então você tem que chamar esta função.

Compartilhar este post


Link para o post
Compartilhar em outros sites

reme, o que acontece é o seguinte antes de finalizar a lógica da sua página você deve utilizar o mysql_close(linkDeConexao) para fechar a conexão, pois é mais do que necessário é o correto a se fazer. Pq como lhe falei o SGDG fica com as conexões abertas até você pedir para fechar esta. Pelo conhecimento que tenho isso não é feito por default pelo PHP então você tem que chamar esta função.

Mais qual é o risco que eu corro ao não fechar, risco de invasão? sobrecarregamento de infomação deixando o sistema lento?

Compartilhar este post


Link para o post
Compartilhar em outros sites

reme, pelo pouco que entendo os SGDB controlam as conexões abertas. Image o seu SGDB ligado 24X7 e com 200 acessos/hora. Será criado várias conexões q não serão fechadas e ele irá gerenciar mesmo assim todas elas. Sua aplicação sim poderá ficar lenta (me corrijam se estiver errado), pois qdo você solicitar uma consulta, o SGDB terá que verificar na lista de conexões qual é a sua conexão e fazer a consulta, então se você tiver mtas conexões neste pode haver casos de lentidão.

Lhe falo para fechar as conexões, pois é um dos padrões de desenvolvimento, então segue a dica.

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

valeu brother, vou seguir a dica sim, e já vou aplicar em todos os meus iscrpts, se tem uma coisa que eu to aprendendo é seguir todos os padrões...

um abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

valeu brother, vou seguir a dica sim, e já vou aplicar em todos os meus iscrpts, se tem uma coisa que eu to aprendendo é seguir todos os padrões...

um abraço

Por nada meu caro, precisando estamos ai. Só não se esqueça de colocar como RESOLVIDO

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.