Ir para conteúdo

POWERED BY:

Arquivado

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

Ferreira Felipe

Cadastro sem sucesso, erro no mysql_fetch_array

Recommended Posts

Meus amigos,

 

Estou iniciando um projeto para a faculdade e escolhi a linguagem PHP visto que possuo um pouco mais de conhecimento (costume) com ela.

Dessa maneira busquei na minha biblioteca de códigos um código de cadastro de usuários em banco de dados MySQL com senha MD5 e bla bla bla... Fiz umas modificações para atender o meu requisito porém ele deixou de funcionar 100%, essas modificações foi seguindo um tutorial desse link, desculpe se não poderia postar.

 

Vejamos o código final ate o momento:

<?php
//conexão com o db
require ("conexao_com_banco.php");
//variaveis enviadas pelo método post
$nome = $_POST['nome'];
$senha = $_POST['senha'];
$nascimento = implode("/", array_reverse(explode("/", $_POST['dt_nascimento'])));
$email = $_POST['email'];
$perf = $_POST['OpcaoPerfil'];
//insere os valores no db
$insere = mysql_query("INSERT INTO usuarios(nome, senha, dt_nascimento, email, dt_cadastro, perfil, status) VALUES ('$nome',md5('$senha'),'$nascimento', '$email', NOW(), '$perf', 'bloqueado')");
$buscar = mysql_query("SELECT * FROM usuarios WHERE email = '$email'");
while($listar = mysql_fetch_array($buscar)){
$id = $listar['id'];
$nome = $listar['nome'];
$email = $listar['email'];
$senha = $listar['senha'];
}
$linguagem = "\nContent-type; text/html";
$msg = "<strong>NOME:</strong> $nome <br>";
$msg = "<strong>E-MAIL:</strong> $email <br>";	
$msg = "<strong>SENHA:</strong> $senha";
$msg = "<a href='ENDEREÇO_DO_SITE_RETIRADO_POR_SEGURANÇA/liberar.php?funcao=liberar$id=<?echo$id?>'> Clique para confirmar seu cadastro</a>";

mail ("$email", "Ativar Cadastro", "$msg", "from.$email".$linguagem)

or die(mysql_error());
if($insere)
echo '<p align="center"> Cadastro realizado com sucesso! <BR><BR><BR> Deseja cadastrar um novo usuário? <a href="http://fcriativo.com.br/projeto_roupa/cadastrar_usuario">Clique aqui</a>.</p>';
else
echo '<p align="center"> Cadastro não foi possível ser realizado, Por favor<BR><a href="javascript:history.back(1);">Tente Novamente</a></p>';
?>

 

Com esse código me apresenta um erro na linha 13 que seria:

while($listar = mysql_fetch_array($buscar)){

 

Subistitui o mysql_fetch_array por mysql_query e o comando me retorna que não foi possível o cadastramento do usuário no banco.

 

A minha dúvida também seria se estou postando no lugar certo, visto que pode ser erro de sintaxe no SQL (pelo menos é uma das minhas suspeitas).

 

Agradeço a todos pela atenção de sempre!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Felipe você poderia explicar melhor quais foram as suas alterações?

 

Tente usar:

 

$buscar = mysql_query("SELECT * FROM usuarios WHERE email = '".$email."'");

Compartilhar este post


Link para o post
Compartilhar em outros sites

Renan.

Agradeço sua atenção na minha dúvida.

A modificação foi somente o que esta no tutorial mesmo. Mas de qualquer maneira refiz e atualizei o banco de dados. Agora esta funcionando 100%.

 

Acredito que a tabela do banco não estava preparada p/ receber as modificações que eu fiz no código, rsrs

 

Porém o objetivo do cadastro tb é o envio de um e-mail para a pessoa que esta se cadastrando para que possa efetuar o desbloqueio do seu cadastro.

 

Segue abaixo o código responsável por esse envio.

$buscar = mysql_query("SELECT * FROM usuarios WHERE email = '$email'");
while($listar = mysql_fetch_array($buscar)){
       $id = $listar['id'];
       $nome = $listar['nome'];
       $email = $listar['email'];
       $senha = $listar['senha'];
}
$linguagem = "\nContent-type; text/html";
       $msg = "<strong>NOME:</strong> $nome <br>";
       $msg = "<strong>E-MAIL:</strong> $email <br>";  
       $msg = "<strong>SENHA:</strong> $senha";
       $msg = "<a href='ENDEREÇO_DO_SITE_RETIRADO_POR_SEGURANÇA/liberar.php?funcao=liberar$id=<?echo$id?>'> Clique para confirmar seu cadastro</a>";

       mail ("$email", "Ativar Cadastro", "$msg", "from.$email".$linguagem)

 

Porém o e-mail esta chegando conforme a imagem abaixo:

54vv5z.jpg

 

De acordo com o tutorial e pela lógica o link será enviado juntamente com o id da pessoa que se cadastrou e quando a pessoa clicar no link será acionado a função que esta no aquivo liberar.php, segue abaixo a função responsável pelo desbloqueio do usuário.

<?php
require ("LIGACAO_COM_BANCO.php");

$id = $_GET['id'];
$sql = mysql_query("UPDATE usuarios SET status='liberado' WHERE id = '$id'");
?>

 

Renan.

Será que você pode me ajudar nisso?

 

Agradeço caso alguém tenha alguma solução.

 

Forte abraço e bom domingo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

        $msg = "<strong>NOME:</strong> $nome <br>";
       $msg .= "<strong>E-MAIL:</strong> $email <br>";  
       $msg .= "<strong>SENHA:</strong> $senha";
       $msg .= "<a href='ENDEREÇO_DO_SITE_RETIRADO_POR_SEGURANÇA/liberar.php?funcao=liberar$id=<?echo$id?>'> Clique para confirmar seu cadastro</a>";

 

Não esqueça do ";" no final da linha:

mail ("$email", "Ativar Cadastro", "$msg", "from.$email".$linguagem)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro amigo The_Fury,

 

Acredito que esse não seja o erro que esta ocorrendo... Quando coloco o ";" no final da linha informada por você o Netbeans apresenta erro na mesma linha...

 

Mas agradeço sua ajuda mesmo assim!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ao invés de utilizar o mysql_fetch_array(), utilize o mysql_fetch_row(). Veja:

 

$buscar = mysql_query("SELECT * FROM usuarios WHERE email = '$email'");
$row = mysql_fetch_row( $buscar );
$id = $row['id'];
$nome = $row['nome'];
$email = $row['email'];
$senha = $row['senha'];

$linguagem = "\nContent-type; text/html";
       $msg = "<strong>NOME:</strong> $nome <br />";
       $msg = "<strong>E-MAIL:</strong> $email <br />";  
       $msg = "<strong>SENHA:</strong> $senha <br />";
       $msg .= "<a href='ENDEREÇO_DO_SITE_RETIRADO_POR_SEGURANÇA/liberar.php?funcao=liberar$id=<?php echo $id; ?>'> Clique para confirmar seu cadastro</a>";

       mail ("$email", "Ativar Cadastro", "$msg", "from.$email".$linguagem);

Compartilhar este post


Link para o post
Compartilhar em outros sites

você esqueceu de dizer ao email q o content type dele eh html e nao test...da uma lida na funcao de mail no manual

 

http://br.php.net/ma...nction.mail.php

 

ae o link vai como link e nao como codigo...

 

na sua mysql query, la no final coloca, or die(mysql_error());

 

e ele vai t dizer se tem erro na sua consulta, o erro esta na sua consulta...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro amigo Igor.php,

 

Se você reparar eu informo sim que o tipo de e-mail é Content-type.

 

Veja as linhas abaixo:

$linguagem = "\nContent-type; text/html";
       $msg = "<strong>NOME:</strong> $nome <br>";
       $msg = "<strong>E-MAIL:</strong> $email <br>";  
       $msg = "<strong>SENHA:</strong> $senha";
       $msg = "<a href='ENDEREÇO_DO_SITE_RETIRADO_POR_SEGURANÇA/liberar.php?funcao=liberar$id=<?echo$id?>'> Clique para confirmar seu cadastro</a>";

mail ("$email", "Ativar Cadastro", "$msg", "from.$email".$linguagem)

 

A informação do tipo de e-mail esta na variável $linguagem.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Guilherme Oderdenge,

 

Fiz sim o que você sugeriu, porém agora a página fica em branco...

Dando um echo para verificar o que esta sendo retornando eu verifiquei que os dados estão sendo salvos no banco corretamente, porem o e-mail não esta sendo enviado.

 

Mais uma vez agradecido pela sua ajuda, se tiver mais alguma sugestão eu agradeço!

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.