reme 0 Denunciar post Postado Março 15, 2011 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
Wess 1 Denunciar post Postado Março 16, 2011 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 0 Denunciar post Postado Março 17, 2011 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
Periscuelo 20 Denunciar post Postado Março 17, 2011 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
Wess 1 Denunciar post Postado Março 17, 2011 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
reme 0 Denunciar post Postado Março 17, 2011 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
Wess 1 Denunciar post Postado Março 17, 2011 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 0 Denunciar post Postado Março 17, 2011 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
Wess 1 Denunciar post Postado Março 17, 2011 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
reme 0 Denunciar post Postado Março 17, 2011 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
Wess 1 Denunciar post Postado Março 17, 2011 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