HooDryd 0 Denunciar post Postado Setembro 17, 2014 Criei uma página de registro: (ela é completa com <head>, <html> e tudo mais, porém só coloquei a parte importante) <body class="bg-black"> <div class="form-box" id="login-box"> <div class="header">Registre-se, é grátis!</div> <form action="php/reg_dbs.php" method="post"> <div class="body bg-gray"> <div class="form-group"> <input type="text" name="name" class="form-control" placeholder="Escreva seu Primeiro Nome"/> </div> <div class="form-group"> <input type="text" name="cname" class="form-control" placeholder="Escreva seu Nome Completo"/> </div> <div class="form-group"> <input type="email" name="email" class="form-control" placeholder="Escreva seu Email"/> </div> <div class="form-group"> <input type="password" name="senha" class="form-control" placeholder="Escreva sua Senha"/> </div> <div class="form-group"> <input type="password" name="senha2" class="form-control" placeholder="Escreva sua Senha Novamente"/> </div> </div> <div class="footer"> <button type="submit" class="btn bg-olive btn-block">Registrar</button> <a href="login.php" class="text-center">Eu já tenho uma conta</a> </div> </form> </div> </body> Fiz também o reg_dbs.php que é o action dessa página anterior: <?php include 'cone_dbs.php' $name = $_POST["name"]; $cname = $_POST["cname"]; $email = $_POST["email"]; $senha = $_POST["senha"]; if(@mysql_query("INSERT INTO users VALUES ( NULL , '$name', '$cname', '$email' , '$senha')")) { // verifico se foi mesmo gravado o dado no banco if(mysql_affected_rows() == 1){ echo "Registro efetuado com sucesso.<br />"; } } else { //verifico se nao estao tentando gravar um dado que ja existe, pois usei UNIQUE na tabela if(mysql_errno() == 1062) { echo $erros[mysql_errno()]; exit; } else { echo "Erro nao foi possivel efetuar o registro."; exit; } @mysql_close(); } Porém, quando faço o preenchimento do formulário e envio os dados, aparece o seguinte erro: Parse error: syntax error, unexpected '$name' (T_VARIABLE) in C:\wamp\www\Trabalho atual\Sibyler\php\reg_dbs.php on line 5 To aprendendo o básico ainda, aí pesquisei por vários fóruns mas não encontrei a solução, poderiam então me ajudar? Caso seja necessário saber o include 'cone_dbs.php', ele é esse: <?php // Cria conexão $conexao = mysqli_connect("localhost", "root", "", "dbsibyler"); // Checa conexão if (mysqli_connect_errno()) { echo "Conexão com o MySQL falhou: " . mysqli_connect_error(); } ?> Compartilhar este post Link para o post Compartilhar em outros sites
Nilson Jr. (@mandachuvamg) 1 Denunciar post Postado Setembro 17, 2014 "reg_dbs.php" include 'cone_dbs.php'; Feche com ; (ponto e vírgula) a primeira linha. Compartilhar este post Link para o post Compartilhar em outros sites
Fernando C 128 Denunciar post Postado Setembro 17, 2014 Caso seja necessário saber o include 'cone_dbs.php', ele é esse: não, pq o erro é bem claro: está na pg. "reg_dbs.php"; dicas: 1. observe bem o fim de várias linhas nesse arquivo; 2. agora observe bem o fim dessa linha: include 'cone_dbs.php' tente ahe, amigo.. Compartilhar este post Link para o post Compartilhar em outros sites
HooDryd 0 Denunciar post Postado Setembro 17, 2014 Ah é mesmo, tinha esquecido. Esse problema resolveu, porém agora ao tentar criar o cadastro, aparece a mensagem do erro 1062 que diz que o campo é único e que não se pode cadastrar pois ele já existe, só que não tem nenhum dado na tabela. Ela está vazia. O trecho do código dessa verificação é esse: if(@mysql_query("INSERT INTO users VALUES ( NULL , '$name', '$cname', '$email' , '$senha')")) { // verifico se foi mesmo gravado o dado no banco if(mysql_affected_rows() == 1){ echo "Registro efetuado com sucesso<br />"; } } else { //verifico se nao estao tentando gravar um dado que ja existe, pois usei UNIQUE na tabela if(mysql_errno() == 1062) { echo $erros[mysql_errno()]; exit; } else { echo "Erro nao foi possivel efetuar o cadastro"; exit; } @mysql_close(); } Não faço idéia do que está acontecendo... Compartilhar este post Link para o post Compartilhar em outros sites
Nilson Jr. (@mandachuvamg) 1 Denunciar post Postado Setembro 17, 2014 "INSERT INTO users VALUES (NULL , '$name', '$cname', '$email' , '$senha')" Tente isso: "INSERT INTO users VALUES ('' , '$name', '$cname', '$email' , '$senha')" Caso permaneça o erro mostre cole ele aqui, e também a estrutura da tabela. Compartilhar este post Link para o post Compartilhar em outros sites
allex_carvalho 124 Denunciar post Postado Setembro 17, 2014 Evite também usar no campo name palavra reservada, troque isso: <input type="text" name="name" class="form-control" placeholder="Escreva seu Primeiro Nome"/> Por isso: <input type="text" name="nome" class="form-control" placeholder="Escreva seu Primeiro Nome"/> E receba a variável nome assim: $name = $_POST["nome"]; E retire as @ da execução das querys, elas só escondem erro, não corrige. Compartilhar este post Link para o post Compartilhar em outros sites
HooDryd 0 Denunciar post Postado Setembro 17, 2014 O erro permaneceu. Aparece: Erro nao foi possivel efetuar o cadastro Essa é a mensagem ordenada para aparecer caso acontecça o erro 1062 como expliquei anteriormente. Espere ai Allex Carvalho, vou fazer o que você disse pra ver se resolve. Allex, fazendo o que você falou, apareceram mais dois erros: Notice: Undefined index: nome in C:\wamp\www\Trabalho atual\Sibyler\php\reg_dbs.php on line 5 Deprecated: mysql_query(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in C:\wamp\www\Trabalho atual\Sibyler\php\reg_dbs.php on line 10 O form tá assim: <form action="php/reg_dbs.php" method="post"> <div class="body bg-gray"> <div class="form-group"> <input type="text" name="nome" class="form-control" placeholder="Escreva seu Primeiro Nome"/> </div> <div class="form-group"> <input type="text" name="cname" class="form-control" placeholder="Escreva seu Nome Completo"/> </div> <div class="form-group"> <input type="email" name="email" class="form-control" placeholder="Escreva seu Email"/> </div> <div class="form-group"> <input type="password" name="senha" class="form-control" placeholder="Escreva sua Senha"/> </div> <div class="form-group"> <input type="password" name="senha2" class="form-control" placeholder="Escreva sua Senha Novamente"/> </div> </div> <div class="footer"> <button type="submit" class="btn bg-olive btn-block">Registrar</button> <a href="login.php" class="text-center">Eu já tenho uma conta</a> </div> </form> o reg_dbs.php está assim: <?php include 'cone_dbs.php'; $name = $_POST["nome"]; $cname = $_POST["cname"]; $email = $_POST["email"]; $senha = $_POST["senha"]; if(mysql_query("INSERT INTO users VALUES ('' , '$name', '$cname', '$email' , '$senha')")) { // verifico se foi mesmo gravado o dado no banco if(mysqli_affected_rows() == 1){ echo "Registro efetuado com sucesso<br />"; } } else { //verifico se nao estao tentando gravar um dado que ja existe, pois usei UNIQUE na tabela if(mysql_errno() == 1062) { echo $erros[mysql_errno()]; exit; } else { echo "Erro nao foi possivel efetuar o cadastro"; exit; } mysql_close(); } Compartilhar este post Link para o post Compartilhar em outros sites
allex_carvalho 124 Denunciar post Postado Setembro 17, 2014 Este erro: Notice: Undefined index: nome in C:\wamp\www\Trabalho atual\Sibyler\php\reg_dbs.php on line 5 Deve ser porque não foi atualizado o valor do input, tente forçar a atualização da página (se possível feche e abra o navegador novamente) e envie novamente. Sobre este erro: Deprecated: mysql_query(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in C:\wamp\www\Trabalho atual\Sibyler\php\reg_dbs.php on line 10 O mysql perdeu funcionalidade, agora está em uso o mysqli. Compartilhar este post Link para o post Compartilhar em outros sites
Nilson Jr. (@mandachuvamg) 1 Denunciar post Postado Setembro 17, 2014 Cara,Você está usando as extensões mysql_ e mysqli_ juntas, não sei se isso funciona bem.... sem falar que a primeira está em desuso. Compartilhar este post Link para o post Compartilhar em outros sites
HooDryd 0 Denunciar post Postado Setembro 17, 2014 Allex, mudei para mysqli então, porém surgiram outros dois erros referentes a ele: Warning: mysqli_query() expects at least 2 parameters, 1 given in C:\wamp\www\Trabalho atual\Sibyler\php\reg_dbs.php on line 10 Warning: mysqli_errno() expects exactly 1 parameter, 0 given in C:\wamp\www\Trabalho atual\Sibyler\php\reg_dbs.php on line 18 Sem contar, que o erro que citei em anteriormente ainda acontece: Erro nao foi possivel efetuar o cadastro <?php include 'cone_dbs.php'; $name = $_POST["nome"]; $cname = $_POST["cname"]; $email = $_POST["email"]; $senha = $_POST["senha"]; if(mysqli_query("INSERT INTO users VALUES ('' , '$name', '$cname', '$email' , '$senha')")) { // verifico se foi mesmo gravado o dado no banco if(mysqli_affected_rows() == 1){ echo "Registro efetuado com sucesso<br />"; } } else { //verifico se nao estao tentando gravar um dado que ja existe, pois usei UNIQUE na tabela if(mysqli_errno() == 1062) { echo $erros[mysql_errno()]; exit; } else { echo "Erro nao foi possivel efetuar o cadastro"; exit; } mysqli_close(); } Acredito que não poderei mais responder vocês até as 23 horas pois estou indo para a escola. Se puderem me ajudar, agradeço, senão, eu vou deletar essa parte da verificação. Eu retirei ela desse tutorial: http://forum.imasters.com.br/topic/192408-sistema-de-cadastro-em-phpmysql/ Compartilhar este post Link para o post Compartilhar em outros sites
allex_carvalho 124 Denunciar post Postado Setembro 17, 2014 Veja como utilizar o mysqli. Compartilhar este post Link para o post Compartilhar em outros sites
Fernando C 128 Denunciar post Postado Setembro 18, 2014 1. evite essa sintaxe: "INSERT INTO users VALUES ('' , '$name', '$cname', '$email' , '$senha')" melhor assim (identificando as colunas): insert into tabela(coluna 1, coluna 2, etc.) values(valor 1, valor2, etc.); principalmente c/ mysqli...2. se está usando na 1ª coluna um auto incremento, tire-o da sql(nome da coluna E valor correspondente).3. se vai usar msqli, como já dito, padronize seu código(veja a 1ª linha, a 2ª e a última): if(mysqli_errno() == 1062) { echo $erros[mysql_errno()]; exit; } else { echo "Erro nao foi possivel efetuar o cadastro"; exit; } mysqli_close(); Eu retirei ela desse tutorial:(...) cara, de boa.. esse tutorial é de 2006..nada contra, mas bem desatualizado..agora veja.. não é por nada não, mas..se as funções mysql* estão obsoletas,pq + cedo ou + tarde as msqli tb não estarão??aí toca a você corrigir todo teu código de novo... pesquise sobre PDO:http://www.devmedia.com.br/introducao-ao-php-pdo/24973http://www.rafaelwendel.com/2011/12/tutorial-pdo-php-data-object/ e perceba que, dependendo da aplicação, é só trocar a conexão... 1 mural de recados, por exemplo, vai ser o mesmo (claro, desde que as tabelas sejam idênticas) c/ MySQL, Postgres, Oracle, Sql Server... pense nisso.. e sucesso... :thumbsup: Compartilhar este post Link para o post Compartilhar em outros sites
KS_Scream 1 Denunciar post Postado Setembro 18, 2014 Outra dica para economizar tempo e linhas no seu código, ao invés de atribuir os dados de $_POST individualmente faça uso da classe extract. Exemplo: extract($_POST); Compartilhar este post Link para o post Compartilhar em outros sites
HooDryd 0 Denunciar post Postado Setembro 18, 2014 O erro permaneceu, então eu refiz o código utilizando funções e o mysqli e tá dando certo agora. Muito obrigado por quem tentou ajudar. Compartilhar este post Link para o post Compartilhar em outros sites