Viper33 1 Denunciar post Postado Julho 7, 2012 Caros colegas o meu problema é básico mas não consegui resolver. Para testar o banco criei um form de "cliente" e outro "cadastrar_cliente". A tabela só tem um dado pois o intuito é apenas testar o funcionamento. Outra dúvida é qual Collation usar. Meu banco é InnoDB. Segue abaixo meu código: conexao.php <?php $servidor = "localhost"; $usuarioBD = "root"; $senhaBD = ""; $bd = "dados"; $con=mysql_connect($servidor,$usuarioBD,$senhaBD); mysql_select_db($bd); ?> frm_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=iso-8859-1" /> <title>Cadastro de Cliente</title> </head> <body> <form method="post" action="cadastrar_cliente.php"> <input type = "hidden" name="operacao" value="incluir" /> <label>Nome <input name="txtnome" type="text" id="txtnome" size="50" maxlength="50" /> </label> <p> <label> <input name="Enviar" type="submit" id="Enviar" value="Incluir" /> </label> </p> </form> <p> </p> </body> </html> cadastrar_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=iso-8859-1" /> <title>Untitled Document</title> </head> <? $operacao = $_POST["operacao"]; include "conexao.php"; if($operacao=="incluir") { $nome = $_POST["txtnome"]; $sql="INSERT INTO tbcliente(nome) VALUES ('$nome')"; $res=mysql_query($sql)or die(mysql_error()); echo "Produto incluído com sucesso!" } else { echo "Não foi possível incluir"; } ?> <body> </body> </html> Compartilhar este post Link para o post Compartilhar em outros sites
Vini_Aviva 13 Denunciar post Postado Julho 7, 2012 echo "Produto incluído com sucesso!"; coloque o Ponto e Virgula no final do echo Compartilhar este post Link para o post Compartilhar em outros sites
Viper33 1 Denunciar post Postado Julho 7, 2012 echo "Produto incluído com sucesso!"; coloque o Ponto e Virgula no final do echo Coloquei mas não resolveu. Quando clico em incluir aparece apenas uma página em branco sem aviso nenhum. Se eu usar INSERT INTO `tbcliente`(`nome`) VALUES ("Paulo") diretamente pelo banco funciona. Uso Mysql. Compartilhar este post Link para o post Compartilhar em outros sites
Vini_Aviva 13 Denunciar post Postado Julho 7, 2012 Use <?php em vez de <? Compartilhar este post Link para o post Compartilhar em outros sites
Viper33 1 Denunciar post Postado Julho 7, 2012 Alterei e continua na mesma. Depois do clique em incluir observo que lá na barra de endereço aparece o seguinte: file:///C:/xampp/htdocs/Dados/cadastrar_cliente.php. Ou seja ele está passando os dados para o outro form, mas não funciona. Compartilhar este post Link para o post Compartilhar em outros sites
Vini_Aviva 13 Denunciar post Postado Julho 7, 2012 da um var_dump() em tudo que parecer suspeito e coloque <?php ini_set('display_errors',true); error_reporting(E_ALL); ?> Coloque isso /\ nas primeiras linhas da página cadastrar_cliente.php... Eu testei aqui e funcionou perfeitamente Compartilhar este post Link para o post Compartilhar em outros sites
Viper33 1 Denunciar post Postado Julho 7, 2012 Na mesma. Pior é que testei um programa de um colega meu e funcionou normal. Não usei as mesmas configurações que a dele pois o código dele é bem complexo. Compartilhar este post Link para o post Compartilhar em outros sites
Vini_Aviva 13 Denunciar post Postado Julho 7, 2012 Pode ser as configurações do seu servidor recomendo você usar o easyPHP é fácil, leve e eficiente. Compartilhar este post Link para o post Compartilhar em outros sites
Viper33 1 Denunciar post Postado Julho 7, 2012 No Easy PHP onde devo colocar a pasta com o site? Compartilhar este post Link para o post Compartilhar em outros sites
Viper33 1 Denunciar post Postado Julho 7, 2012 Resolvido: desinstalei e e reinstalei o xampp e está tudo funcionando normal. E no Collation do banco: usei utf8_general_ci Até agora está cadastrando normal com os acentos. Grato ao colega que me ajudou nos post anteriores. Compartilhar este post Link para o post Compartilhar em outros sites
Vini_Aviva 13 Denunciar post Postado Julho 8, 2012 Com certeza o problema só era no servidor :D de nada estamos aqui para isso. Compartilhar este post Link para o post Compartilhar em outros sites
Lampaed 1 Denunciar post Postado Julho 8, 2012 Vamos Lá...Seu Codigo tá bem Mal Feito, Qualquer iniciante de Internet que entrar na sua Pagina vai poder colocar SQL Injection ou Sacanear seu Banco de Dados.. Tente Aprender Orientação a Objeto(eu tb Preciso e muito Ainda).. Sua Conexao com OOP seria Assim... A Identação do Codigo é Fundamental, Para seu codigo ser legivel a Outro Programador e para você mesmo;; <?php class conexao{ private $con; private $servidor = "localhost"; private $user = "root"; private $senha = ""; private $db = dados; public function Conecta(){ // Eu Utilizaria o PDO para Conexoa.. //Pq Seguraçã é tudo.. $this->con = mysql_connect($this->servidor,$this->user,$this->senha); // você precisa definir qual Conexao você selecionou o Banco de Dados // pQ aSSIM SE você TIVER 10 CONEXOES EM 10 SERVIDORES DIFERENTES.. // eles vão precisar Saber Aonde que tá.. mysql_select_db($this->db, $this->con); } } ?> Para Codigos em PHP você não precisa Instaciar as TAG do HTML, só quando você for realmente utilizar o HTML.. Inclui Aqueel HTML Todinho e.. <form method="post" action="cadastrar_cliente.php"> <label>Nome</label><input name="txtnome" type="text" id="txtnome" size="50" maxlength="50" /> <input type="submit" value="Enviar" /> </form> Agr você vai Pegar Todo Essa Informação que tava o seu Cliente Passou.. e Cadastrar no Banco de Dados e devolver uma Resposta para ele.. Retire Aquele HTML da Pagina E Tenta Abrir o PHP com <?php ?> require_once('conexao.php'); $con = new conexao(); $con->Conecta(); // tudo que vier do Usuario você precisa validar.. // Aqui você não ta usando nenhum FrameWork, então sugiro você utilizar uma Coisinha Simples.. // addslashes(); $texto = addslashes($_POST["txtnome"]); if(!isset($texto)){ //troca o Index para a pagina que você tava cadastrando.. header("Location: index.php"); } // Se Der Errado da um var_dump(); ou um echo na Variavel sql e verifica o que tá Passando.. $sql = "insert into tbcliente(nome) values ('$texto')"; $query = mysql_query($sql) or die("Erro na inserção"); if($query){ echo "Produto Incluido com Sucesso!"; }else{ echo "Não foi Posivel"; } Eu Sugiro que você Faça esse Codigo e se Esforçe Bastante para melhorar.. Tá Faltando Profissional de T.I no mercado e mesmo assim ganhamos uma Micharia.... Se você não gosta de Codigos é melhor você escolher outra profissão .. Compartilhar este post Link para o post Compartilhar em outros sites
Viper33 1 Denunciar post Postado Julho 8, 2012 Obrigado pelas dicas. Hoje novamente o xampp tornou a dar problema. Por isso resolvi usar o Easy PHP. Estou com problema na chave estrangeira. Tenho a tabela de cliente que possui como foreign key o código da cidade. No form inicial tenho o seguinte código: <select name="cidade" style="width:200px;"> <?php $sql="SELECT * FROM tbcidade"; $res=mysql_query($sql); while($dados=mysql_fetch_array($res)) { echo " <option value='".$dados["cdcidade"]."'>".$dados["nmcidade"]." </option>\n"; } ?> </select> No form que recebe esses dados tenho: <?php $nome = $_POST["txtnome"]; $cpf = $_POST["txtcpf"]; $telefone = $_POST["txttel"]; $endereco = $_POST["txtrua"]; $numero = $_POST["txtnum"]; $complemento = $_POST["txtcomp"]; $bairro = $_POST["txtbairro"]; $cdcidade = $_POST["cidade"]; $cep = $_POST["txtcep"]; $email = $_POST["txtemail"]; include "conexao.php"; $sql="INSERT INTO tbcliente (nome , cpf, telefone, endereco, numero, complemento, bairro, cdcidade, cep, email)VALUES ('$nome','$cpf', '$telefone', '$endereco','$numero','$complemento', '$bairro','$cdcidade', '$cep','$email')"; $res=mysql_query($sql)or die(mysql_error()); ?> Mas aparece a seguinte mensagem (na tabela o código da cidade é int): Notice: Undefined index: cidade in C:\Program Files\EasyPHP-12.0\www\Teste\cadastrar.php on line 9 INSERT INTO tbcliente (nome , cpf, telefone, endereco, numero, complemento, bairro, cdcidade, cep, email) VALUES ('','', '', '','','', '','', '','')Incorrect integer value: '' for column 'cdcidade' at row 1 Compartilhar este post Link para o post Compartilhar em outros sites
Viper33 1 Denunciar post Postado Julho 8, 2012 Resolvido. Faltou colocar o include da conexão no formulário inicial. O interessante é que no código de um colega, ele não colocou nenhuma include e mesmo assim no form inicial dele as cidades são listadas. Compartilhar este post Link para o post Compartilhar em outros sites
Daniel_Moraes 11 Denunciar post Postado Julho 8, 2012 Defina exatamente o que você quer e se possivel poste todo o codigo tambêm leia este topico pois ele pode te ajudar . Ache o erro , eu nao tinha prestado muita atenção mais vi que o seu erro era de inserção, no bloco: mysql_select_db($bd); Você deve inserir a variavel que faz conexão. mysql_select_db($bd, $con); Ou então colocar só mysql_connect($servidor,$usuarioBD,$senhaBD); Sem definir como uma variavel Então o codigo todo ficará assim: <?php $servidor = "localhost"; $usuarioBD = "root"; $senhaBD = ""; $bd = "dados"; $con = mysql_connect($servidor,$usuarioBD,$senhaBD); mysql_select_db($bd, $con); ?> Resolvido Compartilhar este post Link para o post Compartilhar em outros sites
Viper33 1 Denunciar post Postado Julho 10, 2012 Daniel, Grato pela sua dica. Mas do jeito que eu tinha feito funcionou. O código abaixo é da conexão e bastou dar uma include na página que resolveu. E Lampaed vou testar os códigos que você sugeriu para ver. <?php $servidor = "localhost"; $usuarioBD = "root"; $senhaBD = ""; $bd = "dados"; $con=mysql_connect($servidor,$usuarioBD,$senhaBD); mysql_select_db($bd); ?> Compartilhar este post Link para o post Compartilhar em outros sites