Ir para conteúdo

Arquivado

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

HooDryd

Erro com variável de formulário

Recommended Posts

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
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

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

"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

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

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.

 

10703458_621820607938923_1075770335_o.jp


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

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

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

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/24973
http://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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.